// Generated from dt-sql-parser/src/grammar/pgsql/PostgreSQLParser.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 { PostgreSQLParserListener } from "./PostgreSQLParserListener";
import { PostgreSQLParserVisitor } from "./PostgreSQLParserVisitor";


export class PostgreSQLParser extends Parser {
	public static readonly Dollar = 1;
	public static readonly OPEN_PAREN = 2;
	public static readonly CLOSE_PAREN = 3;
	public static readonly OPEN_BRACKET = 4;
	public static readonly CLOSE_BRACKET = 5;
	public static readonly COMMA = 6;
	public static readonly SEMI = 7;
	public static readonly COLON = 8;
	public static readonly STAR = 9;
	public static readonly EQUAL = 10;
	public static readonly DOT = 11;
	public static readonly PLUS = 12;
	public static readonly MINUS = 13;
	public static readonly SLASH = 14;
	public static readonly CARET = 15;
	public static readonly LT = 16;
	public static readonly GT = 17;
	public static readonly LESS_LESS = 18;
	public static readonly GREATER_GREATER = 19;
	public static readonly COLON_EQUALS = 20;
	public static readonly LESS_EQUALS = 21;
	public static readonly EQUALS_GREATER = 22;
	public static readonly GREATER_EQUALS = 23;
	public static readonly DOT_DOT = 24;
	public static readonly NOT_EQUALS = 25;
	public static readonly TYPECAST = 26;
	public static readonly PERCENT = 27;
	public static readonly PARAM = 28;
	public static readonly Operator = 29;
	public static readonly KW_ALL = 30;
	public static readonly KW_ANALYSE = 31;
	public static readonly KW_ANALYZE = 32;
	public static readonly KW_AND = 33;
	public static readonly KW_ANY = 34;
	public static readonly KW_ARRAY = 35;
	public static readonly KW_AS = 36;
	public static readonly KW_ASC = 37;
	public static readonly KW_ASYMMETRIC = 38;
	public static readonly KW_BOTH = 39;
	public static readonly KW_CASE = 40;
	public static readonly KW_CAST = 41;
	public static readonly KW_CHECK = 42;
	public static readonly KW_COLLATE = 43;
	public static readonly KW_COLUMN = 44;
	public static readonly KW_CONSTRAINT = 45;
	public static readonly KW_CREATE = 46;
	public static readonly KW_CURRENT_CATALOG = 47;
	public static readonly KW_CURRENT_DATE = 48;
	public static readonly KW_CURRENT_ROLE = 49;
	public static readonly KW_CURRENT_TIME = 50;
	public static readonly KW_CURRENT_TIMESTAMP = 51;
	public static readonly KW_CURRENT_USER = 52;
	public static readonly KW_DEFAULT = 53;
	public static readonly KW_DEFERRABLE = 54;
	public static readonly KW_DESC = 55;
	public static readonly KW_DISTINCT = 56;
	public static readonly KW_DO = 57;
	public static readonly KW_ELSE = 58;
	public static readonly KW_EXCEPT = 59;
	public static readonly KW_FALSE = 60;
	public static readonly KW_FETCH = 61;
	public static readonly KW_FOR = 62;
	public static readonly KW_FOREIGN = 63;
	public static readonly KW_FROM = 64;
	public static readonly KW_GRANT = 65;
	public static readonly KW_GROUP = 66;
	public static readonly KW_HAVING = 67;
	public static readonly KW_IN = 68;
	public static readonly KW_INITIALLY = 69;
	public static readonly KW_INTERSECT = 70;
	public static readonly KW_INTO = 71;
	public static readonly KW_LATERAL = 72;
	public static readonly KW_LEADING = 73;
	public static readonly KW_LIMIT = 74;
	public static readonly KW_LOCALTIME = 75;
	public static readonly KW_LOCALTIMESTAMP = 76;
	public static readonly KW_NOT = 77;
	public static readonly KW_NULL = 78;
	public static readonly KW_OFFSET = 79;
	public static readonly KW_ON = 80;
	public static readonly KW_ONLY = 81;
	public static readonly KW_OR = 82;
	public static readonly KW_ORDER = 83;
	public static readonly KW_PLACING = 84;
	public static readonly KW_PRIMARY = 85;
	public static readonly KW_REFERENCES = 86;
	public static readonly KW_RETURNING = 87;
	public static readonly KW_SELECT = 88;
	public static readonly KW_SESSION_USER = 89;
	public static readonly KW_SOME = 90;
	public static readonly KW_SYMMETRIC = 91;
	public static readonly KW_TABLE = 92;
	public static readonly KW_THEN = 93;
	public static readonly KW_TO = 94;
	public static readonly KW_TRAILING = 95;
	public static readonly KW_TRUE = 96;
	public static readonly KW_UNION = 97;
	public static readonly KW_UNIQUE = 98;
	public static readonly KW_USER = 99;
	public static readonly KW_USING = 100;
	public static readonly KW_VARIADIC = 101;
	public static readonly KW_WHEN = 102;
	public static readonly KW_WHERE = 103;
	public static readonly KW_WINDOW = 104;
	public static readonly KW_WITH = 105;
	public static readonly KW_AUTHORIZATION = 106;
	public static readonly KW_BINARY = 107;
	public static readonly KW_COLLATION = 108;
	public static readonly KW_CONCURRENTLY = 109;
	public static readonly KW_CROSS = 110;
	public static readonly KW_CURRENT_SCHEMA = 111;
	public static readonly KW_FREEZE = 112;
	public static readonly KW_FULL = 113;
	public static readonly KW_ILIKE = 114;
	public static readonly KW_INNER = 115;
	public static readonly KW_IS = 116;
	public static readonly KW_ISNULL = 117;
	public static readonly KW_JOIN = 118;
	public static readonly KW_LEFT = 119;
	public static readonly KW_LIKE = 120;
	public static readonly KW_NATURAL = 121;
	public static readonly KW_NOTNULL = 122;
	public static readonly KW_OUTER = 123;
	public static readonly KW_OVER = 124;
	public static readonly KW_OVERLAPS = 125;
	public static readonly KW_RIGHT = 126;
	public static readonly KW_SIMILAR = 127;
	public static readonly KW_VERBOSE = 128;
	public static readonly KW_ABORT = 129;
	public static readonly KW_ABSOLUTE = 130;
	public static readonly KW_ACCESS = 131;
	public static readonly KW_ACTION = 132;
	public static readonly KW_ADD = 133;
	public static readonly KW_ADMIN = 134;
	public static readonly KW_AFTER = 135;
	public static readonly KW_AGGREGATE = 136;
	public static readonly KW_ALSO = 137;
	public static readonly KW_ALTER = 138;
	public static readonly KW_ALWAYS = 139;
	public static readonly KW_ASSERTION = 140;
	public static readonly KW_ASSIGNMENT = 141;
	public static readonly KW_AT = 142;
	public static readonly KW_ATTRIBUTE = 143;
	public static readonly KW_BACKWARD = 144;
	public static readonly KW_BEFORE = 145;
	public static readonly KW_BEGIN = 146;
	public static readonly KW_BY = 147;
	public static readonly KW_CACHE = 148;
	public static readonly KW_CALLED = 149;
	public static readonly KW_CASCADE = 150;
	public static readonly KW_CASCADED = 151;
	public static readonly KW_CATALOG = 152;
	public static readonly KW_CHAIN = 153;
	public static readonly KW_CHARACTERISTICS = 154;
	public static readonly KW_CHECKPOINT = 155;
	public static readonly KW_CLASS = 156;
	public static readonly KW_CLOSE = 157;
	public static readonly KW_CLUSTER = 158;
	public static readonly KW_COMMENT = 159;
	public static readonly KW_COMMENTS = 160;
	public static readonly KW_COMMIT = 161;
	public static readonly KW_COMMITTED = 162;
	public static readonly KW_CONFIGURATION = 163;
	public static readonly KW_CONNECTION = 164;
	public static readonly KW_CONSTRAINTS = 165;
	public static readonly KW_CONTENT = 166;
	public static readonly KW_CONTINUE = 167;
	public static readonly KW_CONVERSION = 168;
	public static readonly KW_COPY = 169;
	public static readonly KW_COST = 170;
	public static readonly KW_CSV = 171;
	public static readonly KW_CURSOR = 172;
	public static readonly KW_CYCLE = 173;
	public static readonly KW_DATA = 174;
	public static readonly KW_DATABASE = 175;
	public static readonly KW_DAY = 176;
	public static readonly KW_DEALLOCATE = 177;
	public static readonly KW_DECLARE = 178;
	public static readonly KW_DEFAULTS = 179;
	public static readonly KW_DEFERRED = 180;
	public static readonly KW_DEFINER = 181;
	public static readonly KW_DELETE = 182;
	public static readonly KW_DELIMITER = 183;
	public static readonly KW_DELIMITERS = 184;
	public static readonly KW_DICTIONARY = 185;
	public static readonly KW_DISABLE = 186;
	public static readonly KW_DISCARD = 187;
	public static readonly KW_DOCUMENT = 188;
	public static readonly KW_DOMAIN = 189;
	public static readonly KW_DOUBLE = 190;
	public static readonly KW_DROP = 191;
	public static readonly KW_EACH = 192;
	public static readonly KW_ENABLE = 193;
	public static readonly KW_ENCODING = 194;
	public static readonly KW_ENCRYPTED = 195;
	public static readonly KW_ENUM = 196;
	public static readonly KW_ESCAPE = 197;
	public static readonly KW_EVENT = 198;
	public static readonly KW_EXCLUDE = 199;
	public static readonly KW_EXCLUDING = 200;
	public static readonly KW_EXCLUSIVE = 201;
	public static readonly KW_EXECUTE = 202;
	public static readonly KW_EXPLAIN = 203;
	public static readonly KW_EXTENSION = 204;
	public static readonly KW_EXTERNAL = 205;
	public static readonly KW_FAMILY = 206;
	public static readonly KW_FIRST = 207;
	public static readonly KW_FOLLOWING = 208;
	public static readonly KW_FORCE = 209;
	public static readonly KW_FORWARD = 210;
	public static readonly KW_FUNCTION = 211;
	public static readonly KW_FUNCTIONS = 212;
	public static readonly KW_GLOBAL = 213;
	public static readonly KW_GRANTED = 214;
	public static readonly KW_HANDLER = 215;
	public static readonly KW_HEADER = 216;
	public static readonly KW_HOLD = 217;
	public static readonly KW_HOUR = 218;
	public static readonly KW_IDENTITY = 219;
	public static readonly KW_IF = 220;
	public static readonly KW_IMMEDIATE = 221;
	public static readonly KW_IMMUTABLE = 222;
	public static readonly KW_IMPLICIT = 223;
	public static readonly KW_INCLUDING = 224;
	public static readonly KW_INCREMENT = 225;
	public static readonly KW_INDEX = 226;
	public static readonly KW_INDEXES = 227;
	public static readonly KW_INHERIT = 228;
	public static readonly KW_NOINHERIT = 229;
	public static readonly KW_SUPERUSER = 230;
	public static readonly KW_NOSUPERUSER = 231;
	public static readonly KW_CREATEDB = 232;
	public static readonly KW_NOCREATEDB = 233;
	public static readonly KW_CREATEROLE = 234;
	public static readonly KW_NOCREATEROLE = 235;
	public static readonly KW_CREATEUSER = 236;
	public static readonly KW_NOCREATEUSER = 237;
	public static readonly KW_INHERITS = 238;
	public static readonly KW_INLINE = 239;
	public static readonly KW_INSENSITIVE = 240;
	public static readonly KW_INSERT = 241;
	public static readonly KW_INSTEAD = 242;
	public static readonly KW_INVOKER = 243;
	public static readonly KW_ISOLATION = 244;
	public static readonly KW_KEY = 245;
	public static readonly KW_LABEL = 246;
	public static readonly KW_LANGUAGE = 247;
	public static readonly KW_LARGE = 248;
	public static readonly KW_LAST = 249;
	public static readonly KW_LEAKPROOF = 250;
	public static readonly KW_LEVEL = 251;
	public static readonly KW_LISTEN = 252;
	public static readonly KW_LOAD = 253;
	public static readonly KW_LOCAL = 254;
	public static readonly KW_LOCATION = 255;
	public static readonly KW_LOCK = 256;
	public static readonly KW_MAPPING = 257;
	public static readonly KW_MATCH = 258;
	public static readonly KW_MATERIALIZED = 259;
	public static readonly KW_MAXVALUE = 260;
	public static readonly KW_MINUTE = 261;
	public static readonly KW_MINVALUE = 262;
	public static readonly KW_MODE = 263;
	public static readonly KW_MONTH = 264;
	public static readonly KW_MOVE = 265;
	public static readonly KW_NAME = 266;
	public static readonly KW_NAMES = 267;
	public static readonly KW_NEXT = 268;
	public static readonly KW_NO = 269;
	public static readonly KW_NOTHING = 270;
	public static readonly KW_NOTIFY = 271;
	public static readonly KW_NOWAIT = 272;
	public static readonly KW_NULLS = 273;
	public static readonly KW_OBJECT = 274;
	public static readonly KW_OF = 275;
	public static readonly KW_OFF = 276;
	public static readonly KW_OIDS = 277;
	public static readonly KW_OPERATOR = 278;
	public static readonly KW_OPTION = 279;
	public static readonly KW_OPTIONS = 280;
	public static readonly KW_OWNED = 281;
	public static readonly KW_OWNER = 282;
	public static readonly KW_PARSER = 283;
	public static readonly KW_PARTIAL = 284;
	public static readonly KW_PARTITION = 285;
	public static readonly KW_PASSING = 286;
	public static readonly KW_PASSWORD = 287;
	public static readonly KW_PLANS = 288;
	public static readonly KW_PRECEDING = 289;
	public static readonly KW_PREPARE = 290;
	public static readonly KW_PREPARED = 291;
	public static readonly KW_PRESERVE = 292;
	public static readonly KW_PRIOR = 293;
	public static readonly KW_PRIVILEGES = 294;
	public static readonly KW_PROCEDURAL = 295;
	public static readonly KW_PROCEDURE = 296;
	public static readonly KW_PROGRAM = 297;
	public static readonly KW_QUOTE = 298;
	public static readonly KW_RANGE = 299;
	public static readonly KW_READ = 300;
	public static readonly KW_REASSIGN = 301;
	public static readonly KW_RECHECK = 302;
	public static readonly KW_RECURSIVE = 303;
	public static readonly KW_REF = 304;
	public static readonly KW_REFRESH = 305;
	public static readonly KW_REINDEX = 306;
	public static readonly KW_RELATIVE = 307;
	public static readonly KW_RELEASE = 308;
	public static readonly KW_RENAME = 309;
	public static readonly KW_REPEATABLE = 310;
	public static readonly KW_REPLACE = 311;
	public static readonly KW_REPLICA = 312;
	public static readonly KW_RESET = 313;
	public static readonly KW_RESTART = 314;
	public static readonly KW_RESTRICT = 315;
	public static readonly KW_RETURNS = 316;
	public static readonly KW_REVOKE = 317;
	public static readonly KW_ROLE = 318;
	public static readonly KW_ROLLBACK = 319;
	public static readonly KW_ROWS = 320;
	public static readonly KW_RULE = 321;
	public static readonly KW_SAVEPOINT = 322;
	public static readonly KW_SCHEMA = 323;
	public static readonly KW_SCROLL = 324;
	public static readonly KW_SEARCH = 325;
	public static readonly KW_SECOND = 326;
	public static readonly KW_SECURITY = 327;
	public static readonly KW_SEQUENCE = 328;
	public static readonly KW_SEQUENCES = 329;
	public static readonly KW_SERIALIZABLE = 330;
	public static readonly KW_SERVER = 331;
	public static readonly KW_SESSION = 332;
	public static readonly KW_SET = 333;
	public static readonly KW_SHARE = 334;
	public static readonly KW_SHOW = 335;
	public static readonly KW_SIMPLE = 336;
	public static readonly KW_SNAPSHOT = 337;
	public static readonly KW_STABLE = 338;
	public static readonly KW_STANDALONE = 339;
	public static readonly KW_START = 340;
	public static readonly KW_STATEMENT = 341;
	public static readonly KW_STATISTICS = 342;
	public static readonly KW_STDIN = 343;
	public static readonly KW_STDOUT = 344;
	public static readonly KW_STORAGE = 345;
	public static readonly KW_STRICT = 346;
	public static readonly KW_STRIP = 347;
	public static readonly KW_SYSID = 348;
	public static readonly KW_SYSTEM = 349;
	public static readonly KW_TABLES = 350;
	public static readonly KW_TABLESPACE = 351;
	public static readonly KW_TEMP = 352;
	public static readonly KW_TEMPLATE = 353;
	public static readonly KW_TEMPORARY = 354;
	public static readonly KW_TEXT = 355;
	public static readonly KW_TRANSACTION = 356;
	public static readonly KW_TRIGGER = 357;
	public static readonly KW_TRUNCATE = 358;
	public static readonly KW_TRUSTED = 359;
	public static readonly KW_TYPE = 360;
	public static readonly KW_TYPES = 361;
	public static readonly KW_UNBOUNDED = 362;
	public static readonly KW_UNCOMMITTED = 363;
	public static readonly KW_UNENCRYPTED = 364;
	public static readonly KW_UNKNOWN = 365;
	public static readonly KW_UNLISTEN = 366;
	public static readonly KW_UNLOGGED = 367;
	public static readonly KW_UNTIL = 368;
	public static readonly KW_UPDATE = 369;
	public static readonly KW_VACUUM = 370;
	public static readonly KW_VALID = 371;
	public static readonly KW_VALIDATE = 372;
	public static readonly KW_VALIDATOR = 373;
	public static readonly KW_VARYING = 374;
	public static readonly KW_VERSION = 375;
	public static readonly KW_VIEW = 376;
	public static readonly KW_VOLATILE = 377;
	public static readonly KW_WHITESPACE = 378;
	public static readonly KW_WITHOUT = 379;
	public static readonly KW_WORK = 380;
	public static readonly KW_WRAPPER = 381;
	public static readonly KW_WRITE = 382;
	public static readonly KW_XML = 383;
	public static readonly KW_YEAR = 384;
	public static readonly KW_YES = 385;
	public static readonly KW_ZONE = 386;
	public static readonly KW_BETWEEN = 387;
	public static readonly KW_BIGINT = 388;
	public static readonly KW_BIT = 389;
	public static readonly KW_BOOLEAN = 390;
	public static readonly KW_CHAR = 391;
	public static readonly KW_CHARACTER = 392;
	public static readonly KW_COALESCE = 393;
	public static readonly KW_DEC = 394;
	public static readonly KW_DECIMAL = 395;
	public static readonly KW_EXISTS = 396;
	public static readonly KW_EXTRACT = 397;
	public static readonly KW_FLOAT = 398;
	public static readonly KW_GREATEST = 399;
	public static readonly KW_INOUT = 400;
	public static readonly KW_INT = 401;
	public static readonly KW_INTEGER = 402;
	public static readonly KW_INTERVAL = 403;
	public static readonly KW_LEAST = 404;
	public static readonly KW_NATIONAL = 405;
	public static readonly KW_NCHAR = 406;
	public static readonly KW_NONE = 407;
	public static readonly KW_NULLIF = 408;
	public static readonly KW_NUMERIC = 409;
	public static readonly KW_OVERLAY = 410;
	public static readonly KW_POSITION = 411;
	public static readonly KW_PRECISION = 412;
	public static readonly KW_REAL = 413;
	public static readonly KW_ROW = 414;
	public static readonly KW_SETOF = 415;
	public static readonly KW_SMALLINT = 416;
	public static readonly KW_SUBSTRING = 417;
	public static readonly KW_TIME = 418;
	public static readonly KW_TIMESTAMP = 419;
	public static readonly KW_TREAT = 420;
	public static readonly KW_TRIM = 421;
	public static readonly KW_VALUES = 422;
	public static readonly KW_VARCHAR = 423;
	public static readonly KW_XMLATTRIBUTES = 424;
	public static readonly KW_XMLCONCAT = 425;
	public static readonly KW_XMLELEMENT = 426;
	public static readonly KW_XMLEXISTS = 427;
	public static readonly KW_XMLFOREST = 428;
	public static readonly KW_XMLPARSE = 429;
	public static readonly KW_XMLPI = 430;
	public static readonly KW_XMLROOT = 431;
	public static readonly KW_XMLSERIALIZE = 432;
	public static readonly KW_CALL = 433;
	public static readonly KW_CURRENT = 434;
	public static readonly KW_ATTACH = 435;
	public static readonly KW_DETACH = 436;
	public static readonly KW_EXPRESSION = 437;
	public static readonly KW_GENERATED = 438;
	public static readonly KW_LOGGED = 439;
	public static readonly KW_STORED = 440;
	public static readonly KW_INCLUDE = 441;
	public static readonly KW_ROUTINE = 442;
	public static readonly KW_TRANSFORM = 443;
	public static readonly KW_IMPORT = 444;
	public static readonly KW_POLICY = 445;
	public static readonly KW_METHOD = 446;
	public static readonly KW_REFERENCING = 447;
	public static readonly KW_NEW = 448;
	public static readonly KW_OLD = 449;
	public static readonly KW_VALUE = 450;
	public static readonly KW_SUBSCRIPTION = 451;
	public static readonly KW_PUBLICATION = 452;
	public static readonly KW_OUT = 453;
	public static readonly KW_END = 454;
	public static readonly KW_ROUTINES = 455;
	public static readonly KW_SCHEMAS = 456;
	public static readonly KW_PROCEDURES = 457;
	public static readonly KW_INPUT = 458;
	public static readonly KW_SUPPORT = 459;
	public static readonly KW_PARALLEL = 460;
	public static readonly KW_SQL = 461;
	public static readonly KW_DEPENDS = 462;
	public static readonly KW_OVERRIDING = 463;
	public static readonly KW_CONFLICT = 464;
	public static readonly KW_SKIP = 465;
	public static readonly KW_LOCKED = 466;
	public static readonly KW_TIES = 467;
	public static readonly KW_ROLLUP = 468;
	public static readonly KW_CUBE = 469;
	public static readonly KW_GROUPING = 470;
	public static readonly KW_SETS = 471;
	public static readonly KW_TABLESAMPLE = 472;
	public static readonly KW_ORDINALITY = 473;
	public static readonly KW_XMLTABLE = 474;
	public static readonly KW_COLUMNS = 475;
	public static readonly KW_XMLNAMESPACES = 476;
	public static readonly KW_ROWTYPE = 477;
	public static readonly KW_NORMALIZED = 478;
	public static readonly KW_WITHIN = 479;
	public static readonly KW_FILTER = 480;
	public static readonly KW_GROUPS = 481;
	public static readonly KW_OTHERS = 482;
	public static readonly KW_NFC = 483;
	public static readonly KW_NFD = 484;
	public static readonly KW_NFKC = 485;
	public static readonly KW_NFKD = 486;
	public static readonly KW_UESCAPE = 487;
	public static readonly KW_VIEWS = 488;
	public static readonly KW_NORMALIZE = 489;
	public static readonly KW_DUMP = 490;
	public static readonly KW_PRINT_STRICT_PARAMS = 491;
	public static readonly KW_VARIABLE_CONFLICT = 492;
	public static readonly KW_ERROR = 493;
	public static readonly KW_USE_VARIABLE = 494;
	public static readonly KW_USE_COLUMN = 495;
	public static readonly KW_ALIAS = 496;
	public static readonly KW_CONSTANT = 497;
	public static readonly KW_PERFORM = 498;
	public static readonly KW_GET = 499;
	public static readonly KW_DIAGNOSTICS = 500;
	public static readonly KW_STACKED = 501;
	public static readonly KW_ELSIF = 502;
	public static readonly KW_WHILE = 503;
	public static readonly KW_REVERSE = 504;
	public static readonly KW_FOREACH = 505;
	public static readonly KW_SLICE = 506;
	public static readonly KW_EXIT = 507;
	public static readonly KW_RETURN = 508;
	public static readonly KW_QUERY = 509;
	public static readonly KW_RAISE = 510;
	public static readonly KW_SQLSTATE = 511;
	public static readonly KW_DEBUG = 512;
	public static readonly KW_LOG = 513;
	public static readonly KW_INFO = 514;
	public static readonly KW_NOTICE = 515;
	public static readonly KW_WARNING = 516;
	public static readonly KW_EXCEPTION = 517;
	public static readonly KW_ASSERT = 518;
	public static readonly KW_LOOP = 519;
	public static readonly KW_OPEN = 520;
	public static readonly KW_PEFERENCES = 521;
	public static readonly KW_USAGE = 522;
	public static readonly KW_CONNECT = 523;
	public static readonly KW_PUBLIC = 524;
	public static readonly KW_MERGE = 525;
	public static readonly KW_MATCHED = 526;
	public static readonly KW_BREADTH = 527;
	public static readonly KW_DEPTH = 528;
	public static readonly KW_UNSAFE = 529;
	public static readonly KW_RESTRICTED = 530;
	public static readonly KW_SAFE = 531;
	public static readonly KW_FINALIZE = 532;
	public static readonly KW_MODULUS = 533;
	public static readonly KW_REMAINDER = 534;
	public static readonly KW_LOGIN = 535;
	public static readonly KW_NOLOGIN = 536;
	public static readonly KW_REPLICATION = 537;
	public static readonly KW_NOREPLICATION = 538;
	public static readonly KW_BYPASSRLS = 539;
	public static readonly KW_NOBYPASSRLS = 540;
	public static readonly KW_PERMISSIVE = 541;
	public static readonly KW_RESTRICTIVE = 542;
	public static readonly KW_COMPRESSION = 543;
	public static readonly KW_PLAIN = 544;
	public static readonly KW_EXTENDED = 545;
	public static readonly KW_MAIN = 546;
	public static readonly KW_SKIP_LOCKED = 547;
	public static readonly KW_BUFFER_USAGE_LIMIT = 548;
	public static readonly Identifier = 549;
	public static readonly QuotedIdentifier = 550;
	public static readonly UnterminatedQuotedIdentifier = 551;
	public static readonly InvalidQuotedIdentifier = 552;
	public static readonly InvalidUnterminatedQuotedIdentifier = 553;
	public static readonly UnicodeQuotedIdentifier = 554;
	public static readonly UnterminatedUnicodeQuotedIdentifier = 555;
	public static readonly InvalidUnicodeQuotedIdentifier = 556;
	public static readonly InvalidUnterminatedUnicodeQuotedIdentifier = 557;
	public static readonly StringConstant = 558;
	public static readonly UnterminatedStringConstant = 559;
	public static readonly UnicodeEscapeStringConstant = 560;
	public static readonly UnterminatedUnicodeEscapeStringConstant = 561;
	public static readonly BeginDollarStringConstant = 562;
	public static readonly BinaryStringConstant = 563;
	public static readonly UnterminatedBinaryStringConstant = 564;
	public static readonly InvalidBinaryStringConstant = 565;
	public static readonly InvalidUnterminatedBinaryStringConstant = 566;
	public static readonly HexadecimalStringConstant = 567;
	public static readonly UnterminatedHexadecimalStringConstant = 568;
	public static readonly InvalidHexadecimalStringConstant = 569;
	public static readonly InvalidUnterminatedHexadecimalStringConstant = 570;
	public static readonly Integral = 571;
	public static readonly NumericFail = 572;
	public static readonly Numeric = 573;
	public static readonly PLSQLVARIABLENAME = 574;
	public static readonly PLSQLIDENTIFIER = 575;
	public static readonly Whitespace = 576;
	public static readonly Newline = 577;
	public static readonly LineComment = 578;
	public static readonly BlockComment = 579;
	public static readonly UnterminatedBlockComment = 580;
	public static readonly MetaCommand = 581;
	public static readonly EndMetaCommand = 582;
	public static readonly ErrorCharacter = 583;
	public static readonly EscapeStringConstant = 584;
	public static readonly UnterminatedEscapeStringConstant = 585;
	public static readonly InvalidEscapeStringConstant = 586;
	public static readonly InvalidUnterminatedEscapeStringConstant = 587;
	public static readonly DollarText = 588;
	public static readonly EndDollarStringConstant = 589;
	public static readonly AfterEscapeStringConstantWithNewlineMode_Continued = 590;
	public static readonly RULE_program = 0;
	public static readonly RULE_plsqlroot = 1;
	public static readonly RULE_singleStmt = 2;
	public static readonly RULE_stmt = 3;
	public static readonly RULE_plsqlconsolecommand = 4;
	public static readonly RULE_callstmt = 5;
	public static readonly RULE_createrolestmt = 6;
	public static readonly RULE_opt_with = 7;
	public static readonly RULE_optrolelist = 8;
	public static readonly RULE_alteroptrolelist = 9;
	public static readonly RULE_alteroptroleelem = 10;
	public static readonly RULE_createoptroleelem = 11;
	public static readonly RULE_createuserstmt = 12;
	public static readonly RULE_alterrolestmt = 13;
	public static readonly RULE_opt_in_database = 14;
	public static readonly RULE_alterrolesetstmt = 15;
	public static readonly RULE_alterroutinestmt = 16;
	public static readonly RULE_alter_routine_cluase = 17;
	public static readonly RULE_routine_action_list = 18;
	public static readonly RULE_routine_action = 19;
	public static readonly RULE_creategroupstmt = 20;
	public static readonly RULE_altergroupstmt = 21;
	public static readonly RULE_add_drop = 22;
	public static readonly RULE_createschemastmt = 23;
	public static readonly RULE_schema_name_create = 24;
	public static readonly RULE_optschemaeltlist = 25;
	public static readonly RULE_schema_stmt = 26;
	public static readonly RULE_variablesetstmt = 27;
	public static readonly RULE_set_rest = 28;
	public static readonly RULE_generic_set = 29;
	public static readonly RULE_set_rest_more = 30;
	public static readonly RULE_var_name = 31;
	public static readonly RULE_var_list = 32;
	public static readonly RULE_var_value = 33;
	public static readonly RULE_iso_level = 34;
	public static readonly RULE_opt_boolean_or_string_column = 35;
	public static readonly RULE_opt_boolean_or_string = 36;
	public static readonly RULE_zone_value = 37;
	public static readonly RULE_opt_encoding = 38;
	public static readonly RULE_nonreservedword_or_sconst_column = 39;
	public static readonly RULE_nonreservedword_or_sconst = 40;
	public static readonly RULE_variableresetstmt = 41;
	public static readonly RULE_reset_rest = 42;
	public static readonly RULE_generic_reset = 43;
	public static readonly RULE_setresetclause = 44;
	public static readonly RULE_functionsetresetclause = 45;
	public static readonly RULE_variableshowstmt = 46;
	public static readonly RULE_constraintssetstmt = 47;
	public static readonly RULE_constraints_set_list = 48;
	public static readonly RULE_constraints_set_mode = 49;
	public static readonly RULE_checkpointstmt = 50;
	public static readonly RULE_discardstmt = 51;
	public static readonly RULE_altertablestmt = 52;
	public static readonly RULE_alter_table_cmds = 53;
	public static readonly RULE_partition_bound_spec = 54;
	public static readonly RULE_partition_bound_cluase = 55;
	public static readonly RULE_partition_bound_choose = 56;
	public static readonly RULE_partition_with_cluase = 57;
	public static readonly RULE_partition_cmd = 58;
	public static readonly RULE_index_partition_cmd = 59;
	public static readonly RULE_alter_table_cmd = 60;
	public static readonly RULE_alter_column_default = 61;
	public static readonly RULE_opt_drop_behavior = 62;
	public static readonly RULE_opt_collate_clause = 63;
	public static readonly RULE_alter_using = 64;
	public static readonly RULE_replica_identity = 65;
	public static readonly RULE_reloptions = 66;
	public static readonly RULE_opt_reloptions = 67;
	public static readonly RULE_reloption_list = 68;
	public static readonly RULE_reloption_elem = 69;
	public static readonly RULE_alter_identity_column_option_list = 70;
	public static readonly RULE_alter_identity_column_option = 71;
	public static readonly RULE_partitionboundspec = 72;
	public static readonly RULE_hash_partbound_elem = 73;
	public static readonly RULE_hash_partbound = 74;
	public static readonly RULE_altercompositetypestmt = 75;
	public static readonly RULE_alter_type_cmds = 76;
	public static readonly RULE_alter_type_cmd = 77;
	public static readonly RULE_closeportalstmt = 78;
	public static readonly RULE_copystmt = 79;
	public static readonly RULE_copy_from = 80;
	public static readonly RULE_opt_program = 81;
	public static readonly RULE_copy_file_name = 82;
	public static readonly RULE_copy_options = 83;
	public static readonly RULE_copy_opt_list = 84;
	public static readonly RULE_copy_opt_item = 85;
	public static readonly RULE_opt_binary = 86;
	public static readonly RULE_copy_delimiter = 87;
	public static readonly RULE_opt_using = 88;
	public static readonly RULE_copy_generic_opt_list = 89;
	public static readonly RULE_copy_generic_opt_elem = 90;
	public static readonly RULE_copy_generic_opt_arg = 91;
	public static readonly RULE_copy_generic_opt_arg_list = 92;
	public static readonly RULE_copy_generic_opt_arg_list_item = 93;
	public static readonly RULE_createstmt = 94;
	public static readonly RULE_opttemp = 95;
	public static readonly RULE_table_column_list = 96;
	public static readonly RULE_opttableelementlist = 97;
	public static readonly RULE_opttypedtableelementlist = 98;
	public static readonly RULE_tableelementlist = 99;
	public static readonly RULE_typedtableelementlist = 100;
	public static readonly RULE_tableelement = 101;
	public static readonly RULE_typedtableelement = 102;
	public static readonly RULE_columnDefCluase = 103;
	public static readonly RULE_columnDef = 104;
	public static readonly RULE_compressionCluase = 105;
	public static readonly RULE_storageCluase = 106;
	public static readonly RULE_columnOptions = 107;
	public static readonly RULE_colquallist = 108;
	public static readonly RULE_colconstraint = 109;
	public static readonly RULE_colconstraintelem = 110;
	public static readonly RULE_nulls_distinct = 111;
	public static readonly RULE_generated_when = 112;
	public static readonly RULE_deferrable_trigger = 113;
	public static readonly RULE_initially_trigger = 114;
	public static readonly RULE_tablelikeclause = 115;
	public static readonly RULE_tablelikeoptionlist = 116;
	public static readonly RULE_tablelikeoption = 117;
	public static readonly RULE_tableconstraint = 118;
	public static readonly RULE_constraintelem = 119;
	public static readonly RULE_opt_no_inherit = 120;
	public static readonly RULE_opt_column_list = 121;
	public static readonly RULE_columnlist = 122;
	public static readonly RULE_opt_c_include = 123;
	public static readonly RULE_key_match = 124;
	public static readonly RULE_exclusionconstraintlist = 125;
	public static readonly RULE_exclusionconstraintelem = 126;
	public static readonly RULE_exclusionwhereclause = 127;
	public static readonly RULE_key_actions = 128;
	public static readonly RULE_key_update = 129;
	public static readonly RULE_key_delete = 130;
	public static readonly RULE_key_action = 131;
	public static readonly RULE_optinherit = 132;
	public static readonly RULE_optpartitionspec = 133;
	public static readonly RULE_partitionspec = 134;
	public static readonly RULE_part_params = 135;
	public static readonly RULE_part_elem = 136;
	public static readonly RULE_table_access_method_clause = 137;
	public static readonly RULE_optwith = 138;
	public static readonly RULE_oncommitoption = 139;
	public static readonly RULE_opttablespace = 140;
	public static readonly RULE_index_paramenters_create = 141;
	public static readonly RULE_optconstablespace = 142;
	public static readonly RULE_existingindex = 143;
	public static readonly RULE_createstatsstmt = 144;
	public static readonly RULE_alterstatsstmt = 145;
	public static readonly RULE_createasstmt = 146;
	public static readonly RULE_create_as_target = 147;
	public static readonly RULE_opt_with_data = 148;
	public static readonly RULE_creatematviewstmt = 149;
	public static readonly RULE_create_mv_target = 150;
	public static readonly RULE_optnolog = 151;
	public static readonly RULE_refreshmatviewstmt = 152;
	public static readonly RULE_createseqstmt = 153;
	public static readonly RULE_alterseqstmt = 154;
	public static readonly RULE_optseqoptlist = 155;
	public static readonly RULE_optparenthesizedseqoptlist = 156;
	public static readonly RULE_seqoptlist = 157;
	public static readonly RULE_seqoptelem = 158;
	public static readonly RULE_opt_by = 159;
	public static readonly RULE_numericonly = 160;
	public static readonly RULE_numericonly_list = 161;
	public static readonly RULE_createplangstmt = 162;
	public static readonly RULE_opt_trusted = 163;
	public static readonly RULE_handler_name = 164;
	public static readonly RULE_opt_inline_handler = 165;
	public static readonly RULE_validator_clause = 166;
	public static readonly RULE_opt_validator = 167;
	public static readonly RULE_opt_procedural = 168;
	public static readonly RULE_createtablespacestmt = 169;
	public static readonly RULE_opttablespaceowner = 170;
	public static readonly RULE_createextensionstmt = 171;
	public static readonly RULE_create_extension_opt_list = 172;
	public static readonly RULE_create_extension_opt_item = 173;
	public static readonly RULE_alterextensionstmt = 174;
	public static readonly RULE_alter_extension_opt_list = 175;
	public static readonly RULE_alter_extension_opt_item = 176;
	public static readonly RULE_alterextensioncontentsstmt = 177;
	public static readonly RULE_createfdwstmt = 178;
	public static readonly RULE_fdw_option = 179;
	public static readonly RULE_fdw_options = 180;
	public static readonly RULE_opt_fdw_options = 181;
	public static readonly RULE_alterfdwstmt = 182;
	public static readonly RULE_create_generic_options = 183;
	public static readonly RULE_generic_option_list = 184;
	public static readonly RULE_alter_generic_options = 185;
	public static readonly RULE_alter_generic_option_list = 186;
	public static readonly RULE_alter_generic_option_elem = 187;
	public static readonly RULE_generic_option_elem = 188;
	public static readonly RULE_generic_option_name = 189;
	public static readonly RULE_generic_option_arg = 190;
	public static readonly RULE_createforeignserverstmt = 191;
	public static readonly RULE_opt_type = 192;
	public static readonly RULE_foreign_server_version = 193;
	public static readonly RULE_opt_foreign_server_version = 194;
	public static readonly RULE_alterforeignserverstmt = 195;
	public static readonly RULE_createforeigntablestmt = 196;
	public static readonly RULE_importforeignschemastmt = 197;
	public static readonly RULE_import_qualification_type = 198;
	public static readonly RULE_import_qualification = 199;
	public static readonly RULE_createusermappingstmt = 200;
	public static readonly RULE_auth_ident = 201;
	public static readonly RULE_alterusermappingstmt = 202;
	public static readonly RULE_createpolicystmt = 203;
	public static readonly RULE_alterpolicystmt = 204;
	public static readonly RULE_alterprocedurestmt = 205;
	public static readonly RULE_procedure_cluase = 206;
	public static readonly RULE_procedure_action = 207;
	public static readonly RULE_rowsecurityoptionalexpr = 208;
	public static readonly RULE_rowsecurityoptionalwithcheck = 209;
	public static readonly RULE_rowsecuritydefaulttorole = 210;
	public static readonly RULE_rowsecurityoptionaltorole = 211;
	public static readonly RULE_rowsecuritydefaultpermissive = 212;
	public static readonly RULE_rowsecuritydefaultforcmd = 213;
	public static readonly RULE_row_security_cmd = 214;
	public static readonly RULE_createamstmt = 215;
	public static readonly RULE_am_type = 216;
	public static readonly RULE_createtrigstmt = 217;
	public static readonly RULE_triggeractiontime = 218;
	public static readonly RULE_foreachrow = 219;
	public static readonly RULE_roworstatment = 220;
	public static readonly RULE_triggerevents = 221;
	public static readonly RULE_triggeroneevent = 222;
	public static readonly RULE_triggerreferencing = 223;
	public static readonly RULE_triggertransitions = 224;
	public static readonly RULE_triggertransition = 225;
	public static readonly RULE_transitionoldornew = 226;
	public static readonly RULE_transitionrowortable = 227;
	public static readonly RULE_transitionrelname = 228;
	public static readonly RULE_triggerforspec = 229;
	public static readonly RULE_triggerforopteach = 230;
	public static readonly RULE_triggerfortype = 231;
	public static readonly RULE_triggerwhen = 232;
	public static readonly RULE_function_or_procedure = 233;
	public static readonly RULE_triggerfuncargs = 234;
	public static readonly RULE_triggerfuncarg = 235;
	public static readonly RULE_optconstrfromtable = 236;
	public static readonly RULE_constraintattributespec = 237;
	public static readonly RULE_constraintattributeElem = 238;
	public static readonly RULE_createeventtrigstmt = 239;
	public static readonly RULE_event_trigger_when_list = 240;
	public static readonly RULE_event_trigger_when_item = 241;
	public static readonly RULE_event_trigger_value_list = 242;
	public static readonly RULE_altereventtrigstmt = 243;
	public static readonly RULE_enable_trigger = 244;
	public static readonly RULE_createassertionstmt = 245;
	public static readonly RULE_definestmt = 246;
	public static readonly RULE_definition = 247;
	public static readonly RULE_def_list = 248;
	public static readonly RULE_def_elem = 249;
	public static readonly RULE_def_arg = 250;
	public static readonly RULE_old_aggr_definition = 251;
	public static readonly RULE_old_aggr_list = 252;
	public static readonly RULE_old_aggr_elem = 253;
	public static readonly RULE_opt_enum_val_list = 254;
	public static readonly RULE_enum_val_list = 255;
	public static readonly RULE_alterenumstmt = 256;
	public static readonly RULE_opt_if_not_exists = 257;
	public static readonly RULE_createopclassstmt = 258;
	public static readonly RULE_opclass_item_list = 259;
	public static readonly RULE_opclass_item = 260;
	public static readonly RULE_opt_default = 261;
	public static readonly RULE_opt_opfamily = 262;
	public static readonly RULE_opclass_purpose = 263;
	public static readonly RULE_opt_recheck = 264;
	public static readonly RULE_createopfamilystmt = 265;
	public static readonly RULE_alteropfamilystmt = 266;
	public static readonly RULE_opclass_drop_list = 267;
	public static readonly RULE_opclass_drop = 268;
	public static readonly RULE_reassignownedstmt = 269;
	public static readonly RULE_dropstmt = 270;
	public static readonly RULE_view_nameList = 271;
	public static readonly RULE_object_type_any_name = 272;
	public static readonly RULE_object_type_name = 273;
	public static readonly RULE_object_type_name_on_any_name = 274;
	public static readonly RULE_any_name_list = 275;
	public static readonly RULE_table_column_name = 276;
	public static readonly RULE_relation_column_name = 277;
	public static readonly RULE_relation_name = 278;
	public static readonly RULE_any_name = 279;
	public static readonly RULE_attrs = 280;
	public static readonly RULE_type_name_list = 281;
	public static readonly RULE_truncatestmt = 282;
	public static readonly RULE_opt_restart_seqs = 283;
	public static readonly RULE_commentstmt = 284;
	public static readonly RULE_comment_text = 285;
	public static readonly RULE_seclabelstmt = 286;
	public static readonly RULE_opt_provider = 287;
	public static readonly RULE_security_label = 288;
	public static readonly RULE_fetchstmt = 289;
	public static readonly RULE_fetch_args = 290;
	public static readonly RULE_from_in = 291;
	public static readonly RULE_opt_from_in = 292;
	public static readonly RULE_grantstmt = 293;
	public static readonly RULE_revokestmt = 294;
	public static readonly RULE_privileges = 295;
	public static readonly RULE_beforeprivilegeselectlist = 296;
	public static readonly RULE_beforeprivilegeselect = 297;
	public static readonly RULE_privilege_list = 298;
	public static readonly RULE_privilege = 299;
	public static readonly RULE_privilege_target = 300;
	public static readonly RULE_grantee_list = 301;
	public static readonly RULE_grantee = 302;
	public static readonly RULE_opt_grant_grant_option = 303;
	public static readonly RULE_grantrolestmt = 304;
	public static readonly RULE_revokerolestmt = 305;
	public static readonly RULE_opt_grant_admin_option = 306;
	public static readonly RULE_opt_granted_by = 307;
	public static readonly RULE_alterdefaultprivilegesstmt = 308;
	public static readonly RULE_defacloptionlist = 309;
	public static readonly RULE_defacloption = 310;
	public static readonly RULE_defaclaction = 311;
	public static readonly RULE_defacl_privilege_target = 312;
	public static readonly RULE_indexstmt = 313;
	public static readonly RULE_opt_unique = 314;
	public static readonly RULE_opt_concurrently = 315;
	public static readonly RULE_opt_index_name = 316;
	public static readonly RULE_access_method_clause = 317;
	public static readonly RULE_index_params = 318;
	public static readonly RULE_index_elem_options = 319;
	public static readonly RULE_index_elem = 320;
	public static readonly RULE_opt_include = 321;
	public static readonly RULE_index_including_params = 322;
	public static readonly RULE_opt_collate = 323;
	public static readonly RULE_opt_class = 324;
	public static readonly RULE_opt_asc_desc = 325;
	public static readonly RULE_opt_nulls_order = 326;
	public static readonly RULE_createfunctionstmt = 327;
	public static readonly RULE_attrilist = 328;
	public static readonly RULE_opt_or_replace = 329;
	public static readonly RULE_func_args = 330;
	public static readonly RULE_func_args_list = 331;
	public static readonly RULE_routine_with_argtypes_list = 332;
	public static readonly RULE_routine_with_argtypes = 333;
	public static readonly RULE_procedure_with_argtypes_list = 334;
	public static readonly RULE_procedure_with_argtypes = 335;
	public static readonly RULE_function_with_argtypes_list = 336;
	public static readonly RULE_function_with_argtypes = 337;
	public static readonly RULE_func_args_with_defaults = 338;
	public static readonly RULE_func_args_with_defaults_list = 339;
	public static readonly RULE_func_arg = 340;
	public static readonly RULE_arg_class = 341;
	public static readonly RULE_param_name = 342;
	public static readonly RULE_func_return = 343;
	public static readonly RULE_func_type = 344;
	public static readonly RULE_func_arg_with_default = 345;
	public static readonly RULE_aggr_arg = 346;
	public static readonly RULE_aggr_args = 347;
	public static readonly RULE_aggr_args_list = 348;
	public static readonly RULE_aggregate_with_argtypes = 349;
	public static readonly RULE_aggregate_with_argtypes_list = 350;
	public static readonly RULE_createfunc_opt_list = 351;
	public static readonly RULE_common_func_opt_item = 352;
	public static readonly RULE_createfunc_opt_item = 353;
	public static readonly RULE_transform_type_list = 354;
	public static readonly RULE_opt_definition = 355;
	public static readonly RULE_table_func_column = 356;
	public static readonly RULE_table_func_column_list = 357;
	public static readonly RULE_alterfunctionstmt = 358;
	public static readonly RULE_alterFunctionTypeClause = 359;
	public static readonly RULE_alterfunc_opt_list = 360;
	public static readonly RULE_opt_restrict = 361;
	public static readonly RULE_removefuncstmt = 362;
	public static readonly RULE_removeaggrstmt = 363;
	public static readonly RULE_removeoperstmt = 364;
	public static readonly RULE_oper_argtypes = 365;
	public static readonly RULE_any_operator = 366;
	public static readonly RULE_operator_with_argtypes_list = 367;
	public static readonly RULE_operator_with_argtypes = 368;
	public static readonly RULE_dostmt = 369;
	public static readonly RULE_dostmt_opt_list = 370;
	public static readonly RULE_dostmt_opt_item = 371;
	public static readonly RULE_createcaststmt = 372;
	public static readonly RULE_cast_context = 373;
	public static readonly RULE_opt_if_exists = 374;
	public static readonly RULE_createtransformstmt = 375;
	public static readonly RULE_transform_element_list = 376;
	public static readonly RULE_reindexstmt = 377;
	public static readonly RULE_reindex_target_type = 378;
	public static readonly RULE_reindex_target_multitable = 379;
	public static readonly RULE_reindex_option_list = 380;
	public static readonly RULE_reindex_option_elem = 381;
	public static readonly RULE_altertblspcstmt = 382;
	public static readonly RULE_renamestmt = 383;
	public static readonly RULE_opt_column = 384;
	public static readonly RULE_opt_set_data = 385;
	public static readonly RULE_alterobjectdependsstmt = 386;
	public static readonly RULE_opt_no = 387;
	public static readonly RULE_alterobjectschemastmt = 388;
	public static readonly RULE_alteroperatorstmt = 389;
	public static readonly RULE_operator_def_list = 390;
	public static readonly RULE_operator_def_elem = 391;
	public static readonly RULE_operator_def_arg = 392;
	public static readonly RULE_altertypestmt = 393;
	public static readonly RULE_alterownerstmt = 394;
	public static readonly RULE_createpublicationstmt = 395;
	public static readonly RULE_opt_publication_for_tables = 396;
	public static readonly RULE_publication_for_tables = 397;
	public static readonly RULE_alterpublicationstmt = 398;
	public static readonly RULE_createsubscriptionstmt = 399;
	public static readonly RULE_publication_name_list = 400;
	public static readonly RULE_publication_name_item = 401;
	public static readonly RULE_altersubscriptionstmt = 402;
	public static readonly RULE_rulestmt = 403;
	public static readonly RULE_ruleactionlist = 404;
	public static readonly RULE_ruleactionmulti = 405;
	public static readonly RULE_ruleactionstmt = 406;
	public static readonly RULE_ruleactionstmtOrEmpty = 407;
	public static readonly RULE_event = 408;
	public static readonly RULE_opt_instead = 409;
	public static readonly RULE_notifystmt = 410;
	public static readonly RULE_notify_payload = 411;
	public static readonly RULE_listenstmt = 412;
	public static readonly RULE_unlistenstmt = 413;
	public static readonly RULE_transactionstmt = 414;
	public static readonly RULE_opt_transaction = 415;
	public static readonly RULE_transaction_mode_item = 416;
	public static readonly RULE_transaction_mode_list = 417;
	public static readonly RULE_transaction_mode_list_or_empty = 418;
	public static readonly RULE_opt_transaction_chain = 419;
	public static readonly RULE_viewstmt = 420;
	public static readonly RULE_opt_check_option = 421;
	public static readonly RULE_loadstmt = 422;
	public static readonly RULE_createdbstmt = 423;
	public static readonly RULE_createdb_opt_list = 424;
	public static readonly RULE_createdb_opt_items = 425;
	public static readonly RULE_createdb_opt_item = 426;
	public static readonly RULE_createdb_opt_name = 427;
	public static readonly RULE_opt_equal = 428;
	public static readonly RULE_alterdatabasestmt = 429;
	public static readonly RULE_alterdatabasesetstmt = 430;
	public static readonly RULE_drop_option_list = 431;
	public static readonly RULE_drop_option = 432;
	public static readonly RULE_altercollationstmt = 433;
	public static readonly RULE_altersystemstmt = 434;
	public static readonly RULE_createdomainstmt = 435;
	public static readonly RULE_alterdomainstmt = 436;
	public static readonly RULE_opt_as = 437;
	public static readonly RULE_altertsdictionarystmt = 438;
	public static readonly RULE_altertsconfigurationstmt = 439;
	public static readonly RULE_any_with = 440;
	public static readonly RULE_createconversionstmt = 441;
	public static readonly RULE_clusterstmt = 442;
	public static readonly RULE_opt_verbose_list = 443;
	public static readonly RULE_cluster_index_specification = 444;
	public static readonly RULE_vacuumstmt = 445;
	public static readonly RULE_analyzestmt = 446;
	public static readonly RULE_vac_analyze_option_list = 447;
	public static readonly RULE_analyze_keyword = 448;
	public static readonly RULE_vac_analyze_option_elem = 449;
	public static readonly RULE_vac_analyze_option_name = 450;
	public static readonly RULE_vac_analyze_option_arg = 451;
	public static readonly RULE_opt_analyze = 452;
	public static readonly RULE_analyze_options_list = 453;
	public static readonly RULE_analyze_option_elem = 454;
	public static readonly RULE_opt_verbose = 455;
	public static readonly RULE_opt_skiplock = 456;
	public static readonly RULE_opt_buffer_usage_limit = 457;
	public static readonly RULE_opt_full = 458;
	public static readonly RULE_opt_freeze = 459;
	public static readonly RULE_opt_name_list = 460;
	public static readonly RULE_vacuum_relation = 461;
	public static readonly RULE_vacuum_relation_list = 462;
	public static readonly RULE_opt_vacuum_relation_list = 463;
	public static readonly RULE_explainstmt = 464;
	public static readonly RULE_explainablestmt = 465;
	public static readonly RULE_explain_option_list = 466;
	public static readonly RULE_explain_option_elem = 467;
	public static readonly RULE_explain_option_name = 468;
	public static readonly RULE_explain_option_arg = 469;
	public static readonly RULE_preparestmt = 470;
	public static readonly RULE_prep_type_clause = 471;
	public static readonly RULE_preparablestmt = 472;
	public static readonly RULE_executestmt = 473;
	public static readonly RULE_execute_param_clause = 474;
	public static readonly RULE_deallocatestmt = 475;
	public static readonly RULE_insertstmt = 476;
	public static readonly RULE_insert_target = 477;
	public static readonly RULE_insert_rest = 478;
	public static readonly RULE_override_kind = 479;
	public static readonly RULE_insert_column_list = 480;
	public static readonly RULE_insert_column_item = 481;
	public static readonly RULE_opt_on_conflict = 482;
	public static readonly RULE_opt_conf_expr = 483;
	public static readonly RULE_returning_clause = 484;
	public static readonly RULE_deletestmt = 485;
	public static readonly RULE_using_clause = 486;
	public static readonly RULE_lockstmt = 487;
	public static readonly RULE_opt_lock = 488;
	public static readonly RULE_lock_type = 489;
	public static readonly RULE_opt_nowait = 490;
	public static readonly RULE_opt_nowait_or_skip = 491;
	public static readonly RULE_updatestmt = 492;
	public static readonly RULE_set_clause_list = 493;
	public static readonly RULE_set_clause = 494;
	public static readonly RULE_set_target = 495;
	public static readonly RULE_set_target_list = 496;
	public static readonly RULE_declarecursorstmt = 497;
	public static readonly RULE_cursor_name = 498;
	public static readonly RULE_cursor_options = 499;
	public static readonly RULE_opt_hold = 500;
	public static readonly RULE_selectstmt = 501;
	public static readonly RULE_select_with_parens = 502;
	public static readonly RULE_select_no_parens = 503;
	public static readonly RULE_select_clause = 504;
	public static readonly RULE_simple_select = 505;
	public static readonly RULE_set_operator = 506;
	public static readonly RULE_set_operator_with_all_or_distinct = 507;
	public static readonly RULE_with_clause = 508;
	public static readonly RULE_cte_list = 509;
	public static readonly RULE_common_table_expr = 510;
	public static readonly RULE_search_cluase = 511;
	public static readonly RULE_cycle_cluase = 512;
	public static readonly RULE_opt_materialized = 513;
	public static readonly RULE_opt_with_clause = 514;
	public static readonly RULE_into_clause = 515;
	public static readonly RULE_opt_strict = 516;
	public static readonly RULE_opttempTableName = 517;
	public static readonly RULE_opt_table = 518;
	public static readonly RULE_all_or_distinct = 519;
	public static readonly RULE_distinct_clause = 520;
	public static readonly RULE_opt_all_clause = 521;
	public static readonly RULE_opt_sort_clause = 522;
	public static readonly RULE_sort_clause = 523;
	public static readonly RULE_sortby_list = 524;
	public static readonly RULE_sortby = 525;
	public static readonly RULE_select_limit = 526;
	public static readonly RULE_opt_select_limit = 527;
	public static readonly RULE_limit_clause = 528;
	public static readonly RULE_fetch_clause = 529;
	public static readonly RULE_offset_clause = 530;
	public static readonly RULE_select_limit_value = 531;
	public static readonly RULE_select_offset_value = 532;
	public static readonly RULE_select_fetch_first_value = 533;
	public static readonly RULE_i_or_f_const = 534;
	public static readonly RULE_row_or_rows = 535;
	public static readonly RULE_first_or_next = 536;
	public static readonly RULE_group_clause = 537;
	public static readonly RULE_group_by_list = 538;
	public static readonly RULE_group_by_item = 539;
	public static readonly RULE_empty_grouping_set = 540;
	public static readonly RULE_rollup_clause = 541;
	public static readonly RULE_cube_clause = 542;
	public static readonly RULE_grouping_sets_clause = 543;
	public static readonly RULE_having_clause = 544;
	public static readonly RULE_for_locking_clause = 545;
	public static readonly RULE_opt_for_locking_clause = 546;
	public static readonly RULE_for_locking_items = 547;
	public static readonly RULE_for_locking_item = 548;
	public static readonly RULE_for_locking_strength = 549;
	public static readonly RULE_locked_rels_list = 550;
	public static readonly RULE_values_clause = 551;
	public static readonly RULE_from_clause = 552;
	public static readonly RULE_from_list = 553;
	public static readonly RULE_table_ref = 554;
	public static readonly RULE_alias_clause = 555;
	public static readonly RULE_opt_alias_clause = 556;
	public static readonly RULE_func_alias_clause = 557;
	public static readonly RULE_join_type = 558;
	public static readonly RULE_join_qual = 559;
	public static readonly RULE_relation_expr = 560;
	public static readonly RULE_publication_relation_expr = 561;
	public static readonly RULE_relation_expr_list = 562;
	public static readonly RULE_publication_relation_expr_list = 563;
	public static readonly RULE_relation_expr_opt_alias = 564;
	public static readonly RULE_tablesample_clause = 565;
	public static readonly RULE_opt_repeatable_clause = 566;
	public static readonly RULE_func_table = 567;
	public static readonly RULE_rowsfrom_item = 568;
	public static readonly RULE_rowsfrom_list = 569;
	public static readonly RULE_opt_col_def_list = 570;
	public static readonly RULE_opt_ordinality = 571;
	public static readonly RULE_where_clause = 572;
	public static readonly RULE_where_or_current_clause = 573;
	public static readonly RULE_opttablefuncelementlist = 574;
	public static readonly RULE_tablefuncelementlist = 575;
	public static readonly RULE_tablefuncelement = 576;
	public static readonly RULE_xmltable = 577;
	public static readonly RULE_xmltable_column_list = 578;
	public static readonly RULE_xmltable_column_el = 579;
	public static readonly RULE_xmltable_column_option_list = 580;
	public static readonly RULE_xmltable_column_option_el = 581;
	public static readonly RULE_xml_namespace_list = 582;
	public static readonly RULE_xml_namespace_el = 583;
	public static readonly RULE_typename = 584;
	public static readonly RULE_opt_array_bounds = 585;
	public static readonly RULE_simpletypename = 586;
	public static readonly RULE_consttypename = 587;
	public static readonly RULE_generictype = 588;
	public static readonly RULE_opt_type_modifiers = 589;
	public static readonly RULE_numeric = 590;
	public static readonly RULE_opt_float = 591;
	public static readonly RULE_bit = 592;
	public static readonly RULE_constbit = 593;
	public static readonly RULE_bitwithlength = 594;
	public static readonly RULE_bitwithoutlength = 595;
	public static readonly RULE_character = 596;
	public static readonly RULE_constcharacter = 597;
	public static readonly RULE_character_c = 598;
	public static readonly RULE_opt_varying = 599;
	public static readonly RULE_constdatetime = 600;
	public static readonly RULE_constinterval = 601;
	public static readonly RULE_opt_timezone = 602;
	public static readonly RULE_opt_interval = 603;
	public static readonly RULE_interval_second = 604;
	public static readonly RULE_opt_escape = 605;
	public static readonly RULE_a_expr = 606;
	public static readonly RULE_a_expr_qual = 607;
	public static readonly RULE_a_expr_lessless = 608;
	public static readonly RULE_a_expr_or = 609;
	public static readonly RULE_a_expr_and = 610;
	public static readonly RULE_a_expr_in = 611;
	public static readonly RULE_a_expr_unary_not = 612;
	public static readonly RULE_a_expr_isnull = 613;
	public static readonly RULE_a_expr_is_not = 614;
	public static readonly RULE_a_expr_compare = 615;
	public static readonly RULE_a_expr_like = 616;
	public static readonly RULE_a_expr_qual_op = 617;
	public static readonly RULE_a_expr_unary_qualop = 618;
	public static readonly RULE_a_expr_add = 619;
	public static readonly RULE_a_expr_mul = 620;
	public static readonly RULE_a_expr_caret = 621;
	public static readonly RULE_a_expr_unary_sign = 622;
	public static readonly RULE_a_expr_at_time_zone = 623;
	public static readonly RULE_a_expr_collate = 624;
	public static readonly RULE_a_expr_typecast = 625;
	public static readonly RULE_b_expr = 626;
	public static readonly RULE_c_expr = 627;
	public static readonly RULE_plsqlvariablename = 628;
	public static readonly RULE_func_application = 629;
	public static readonly RULE_func_expr = 630;
	public static readonly RULE_func_expr_windowless = 631;
	public static readonly RULE_func_expr_common_subexpr = 632;
	public static readonly RULE_xml_root_version = 633;
	public static readonly RULE_opt_xml_root_standalone = 634;
	public static readonly RULE_xml_attributes = 635;
	public static readonly RULE_xml_attribute_list = 636;
	public static readonly RULE_xml_attribute_el = 637;
	public static readonly RULE_document_or_content = 638;
	public static readonly RULE_xml_whitespace_option = 639;
	public static readonly RULE_xmlexists_argument = 640;
	public static readonly RULE_xml_passing_mech = 641;
	public static readonly RULE_within_group_clause = 642;
	public static readonly RULE_filter_clause = 643;
	public static readonly RULE_window_clause = 644;
	public static readonly RULE_window_definition_list = 645;
	public static readonly RULE_window_definition = 646;
	public static readonly RULE_over_clause = 647;
	public static readonly RULE_window_specification = 648;
	public static readonly RULE_opt_existing_window_name = 649;
	public static readonly RULE_opt_partition_clause = 650;
	public static readonly RULE_opt_frame_clause = 651;
	public static readonly RULE_frame_extent = 652;
	public static readonly RULE_frame_bound = 653;
	public static readonly RULE_opt_window_exclusion_clause = 654;
	public static readonly RULE_row = 655;
	public static readonly RULE_explicit_row = 656;
	public static readonly RULE_implicit_row = 657;
	public static readonly RULE_sub_type = 658;
	public static readonly RULE_all_op = 659;
	public static readonly RULE_mathop = 660;
	public static readonly RULE_qual_op = 661;
	public static readonly RULE_qual_all_op = 662;
	public static readonly RULE_subquery_Op = 663;
	public static readonly RULE_expr_list = 664;
	public static readonly RULE_column_expr_list_noparen = 665;
	public static readonly RULE_column_expr_list = 666;
	public static readonly RULE_column_expr = 667;
	public static readonly RULE_column_expr_noparen = 668;
	public static readonly RULE_func_arg_list = 669;
	public static readonly RULE_func_arg_expr = 670;
	public static readonly RULE_type_list = 671;
	public static readonly RULE_array_expr = 672;
	public static readonly RULE_array_expr_list = 673;
	public static readonly RULE_extract_list = 674;
	public static readonly RULE_extract_arg = 675;
	public static readonly RULE_unicode_normal_form = 676;
	public static readonly RULE_overlay_list = 677;
	public static readonly RULE_position_list = 678;
	public static readonly RULE_substr_list = 679;
	public static readonly RULE_trim_list = 680;
	public static readonly RULE_in_expr = 681;
	public static readonly RULE_case_expr = 682;
	public static readonly RULE_when_clause_list = 683;
	public static readonly RULE_when_clause = 684;
	public static readonly RULE_case_default = 685;
	public static readonly RULE_case_arg = 686;
	public static readonly RULE_columnref = 687;
	public static readonly RULE_indirection_el = 688;
	public static readonly RULE_opt_slice_bound = 689;
	public static readonly RULE_indirection = 690;
	public static readonly RULE_opt_indirection = 691;
	public static readonly RULE_opt_target_list = 692;
	public static readonly RULE_target_list = 693;
	public static readonly RULE_target_el = 694;
	public static readonly RULE_qualified_name_list = 695;
	public static readonly RULE_table_name_list = 696;
	public static readonly RULE_schema_name_list = 697;
	public static readonly RULE_database_nameList = 698;
	public static readonly RULE_procedure_name_list = 699;
	public static readonly RULE_tablespace_name_create = 700;
	public static readonly RULE_tablespace_name = 701;
	public static readonly RULE_table_name_create = 702;
	public static readonly RULE_table_name = 703;
	public static readonly RULE_view_name_create = 704;
	public static readonly RULE_view_name = 705;
	public static readonly RULE_qualified_name = 706;
	public static readonly RULE_tablespace_name_list = 707;
	public static readonly RULE_name_list = 708;
	public static readonly RULE_database_name_create = 709;
	public static readonly RULE_database_name = 710;
	public static readonly RULE_schema_name = 711;
	public static readonly RULE_routine_name_create = 712;
	public static readonly RULE_routine_name = 713;
	public static readonly RULE_procedure_name = 714;
	public static readonly RULE_procedure_name_create = 715;
	public static readonly RULE_column_name = 716;
	public static readonly RULE_column_name_create = 717;
	public static readonly RULE_name = 718;
	public static readonly RULE_attr_name = 719;
	public static readonly RULE_file_name = 720;
	public static readonly RULE_function_name_create = 721;
	public static readonly RULE_function_name = 722;
	public static readonly RULE_usual_name = 723;
	public static readonly RULE_aexprconst = 724;
	public static readonly RULE_xconst = 725;
	public static readonly RULE_bconst = 726;
	public static readonly RULE_fconst = 727;
	public static readonly RULE_iconst = 728;
	public static readonly RULE_sconst = 729;
	public static readonly RULE_anysconst = 730;
	public static readonly RULE_opt_uescape = 731;
	public static readonly RULE_signediconst = 732;
	public static readonly RULE_groupname = 733;
	public static readonly RULE_roleid = 734;
	public static readonly RULE_rolespec = 735;
	public static readonly RULE_role_list = 736;
	public static readonly RULE_colid = 737;
	public static readonly RULE_index_method_choices = 738;
	public static readonly RULE_exclude_element = 739;
	public static readonly RULE_index_paramenters = 740;
	public static readonly RULE_type_function_name = 741;
	public static readonly RULE_type_usual_name = 742;
	public static readonly RULE_nonreservedword_column = 743;
	public static readonly RULE_nonreservedword = 744;
	public static readonly RULE_collabel = 745;
	public static readonly RULE_identifier = 746;
	public static readonly RULE_plsqlidentifier = 747;
	public static readonly RULE_unreserved_keyword = 748;
	public static readonly RULE_col_name_keyword = 749;
	public static readonly RULE_type_func_name_keyword = 750;
	public static readonly RULE_reserved_keyword = 751;
	public static readonly RULE_pl_function = 752;
	public static readonly RULE_comp_options = 753;
	public static readonly RULE_comp_option = 754;
	public static readonly RULE_sharp = 755;
	public static readonly RULE_option_value = 756;
	public static readonly RULE_opt_semi = 757;
	public static readonly RULE_pl_block = 758;
	public static readonly RULE_decl_sect = 759;
	public static readonly RULE_decl_start = 760;
	public static readonly RULE_decl_stmts = 761;
	public static readonly RULE_label_decl = 762;
	public static readonly RULE_decl_stmt = 763;
	public static readonly RULE_decl_statement = 764;
	public static readonly RULE_opt_scrollable = 765;
	public static readonly RULE_decl_cursor_query = 766;
	public static readonly RULE_decl_cursor_args = 767;
	public static readonly RULE_decl_cursor_arglist = 768;
	public static readonly RULE_decl_cursor_arg = 769;
	public static readonly RULE_decl_is_for = 770;
	public static readonly RULE_decl_aliasitem = 771;
	public static readonly RULE_decl_varname = 772;
	public static readonly RULE_decl_const = 773;
	public static readonly RULE_decl_datatype = 774;
	public static readonly RULE_decl_collate = 775;
	public static readonly RULE_decl_notnull = 776;
	public static readonly RULE_decl_defval = 777;
	public static readonly RULE_decl_defkey = 778;
	public static readonly RULE_assign_operator = 779;
	public static readonly RULE_proc_sect = 780;
	public static readonly RULE_proc_stmt = 781;
	public static readonly RULE_stmt_perform = 782;
	public static readonly RULE_stmt_call = 783;
	public static readonly RULE_opt_expr_list = 784;
	public static readonly RULE_stmt_assign = 785;
	public static readonly RULE_stmt_getdiag = 786;
	public static readonly RULE_getdiag_area_opt = 787;
	public static readonly RULE_getdiag_list = 788;
	public static readonly RULE_getdiag_list_item = 789;
	public static readonly RULE_getdiag_item = 790;
	public static readonly RULE_getdiag_target = 791;
	public static readonly RULE_assign_var = 792;
	public static readonly RULE_stmt_if = 793;
	public static readonly RULE_stmt_elsifs = 794;
	public static readonly RULE_stmt_else = 795;
	public static readonly RULE_stmt_case = 796;
	public static readonly RULE_opt_expr_until_when = 797;
	public static readonly RULE_case_when_list = 798;
	public static readonly RULE_case_when = 799;
	public static readonly RULE_opt_case_else = 800;
	public static readonly RULE_stmt_loop = 801;
	public static readonly RULE_stmt_while = 802;
	public static readonly RULE_stmt_for = 803;
	public static readonly RULE_for_control = 804;
	public static readonly RULE_opt_for_using_expression = 805;
	public static readonly RULE_opt_cursor_parameters = 806;
	public static readonly RULE_opt_reverse = 807;
	public static readonly RULE_opt_by_expression = 808;
	public static readonly RULE_for_variable = 809;
	public static readonly RULE_stmt_foreach_a = 810;
	public static readonly RULE_foreach_slice = 811;
	public static readonly RULE_stmt_exit = 812;
	public static readonly RULE_exit_type = 813;
	public static readonly RULE_stmt_return = 814;
	public static readonly RULE_opt_return_result = 815;
	public static readonly RULE_stmt_raise = 816;
	public static readonly RULE_opt_stmt_raise_level = 817;
	public static readonly RULE_opt_raise_list = 818;
	public static readonly RULE_opt_raise_using = 819;
	public static readonly RULE_opt_raise_using_elem = 820;
	public static readonly RULE_opt_raise_using_elem_list = 821;
	public static readonly RULE_stmt_assert = 822;
	public static readonly RULE_opt_stmt_assert_message = 823;
	public static readonly RULE_loop_body = 824;
	public static readonly RULE_stmt_execsql = 825;
	public static readonly RULE_stmt_dynexecute = 826;
	public static readonly RULE_opt_execute_using = 827;
	public static readonly RULE_opt_execute_using_list = 828;
	public static readonly RULE_opt_execute_into = 829;
	public static readonly RULE_stmt_open = 830;
	public static readonly RULE_opt_open_bound_list_item = 831;
	public static readonly RULE_opt_open_bound_list = 832;
	public static readonly RULE_opt_open_using = 833;
	public static readonly RULE_opt_scroll_option = 834;
	public static readonly RULE_opt_scroll_option_no = 835;
	public static readonly RULE_stmt_fetch = 836;
	public static readonly RULE_into_target = 837;
	public static readonly RULE_opt_cursor_from = 838;
	public static readonly RULE_opt_fetch_direction = 839;
	public static readonly RULE_stmt_move = 840;
	public static readonly RULE_mergestmt = 841;
	public static readonly RULE_data_source = 842;
	public static readonly RULE_join_condition = 843;
	public static readonly RULE_merge_when_clause = 844;
	public static readonly RULE_merge_insert = 845;
	public static readonly RULE_merge_update = 846;
	public static readonly RULE_default_values_or_values = 847;
	public static readonly RULE_exprofdefaultlist = 848;
	public static readonly RULE_exprofdefault = 849;
	public static readonly RULE_stmt_close = 850;
	public static readonly RULE_stmt_null = 851;
	public static readonly RULE_stmt_commit = 852;
	public static readonly RULE_stmt_rollback = 853;
	public static readonly RULE_plsql_opt_transaction_chain = 854;
	public static readonly RULE_stmt_set = 855;
	public static readonly RULE_cursor_variable = 856;
	public static readonly RULE_exception_sect = 857;
	public static readonly RULE_proc_exceptions = 858;
	public static readonly RULE_proc_exception = 859;
	public static readonly RULE_proc_conditions = 860;
	public static readonly RULE_proc_condition = 861;
	public static readonly RULE_opt_block_label = 862;
	public static readonly RULE_opt_loop_label = 863;
	public static readonly RULE_opt_label = 864;
	public static readonly RULE_opt_exitcond = 865;
	public static readonly RULE_any_identifier = 866;
	public static readonly RULE_plsql_unreserved_keyword = 867;
	public static readonly RULE_sql_expression = 868;
	public static readonly RULE_expr_until_then = 869;
	public static readonly RULE_expr_until_semi = 870;
	public static readonly RULE_expr_until_rightbracket = 871;
	public static readonly RULE_expr_until_loop = 872;
	public static readonly RULE_make_execsql_stmt = 873;
	public static readonly RULE_opt_returning_clause_into = 874;
	// tslint:disable:no-trailing-whitespace
	public static readonly ruleNames: string[] = [
		"program", "plsqlroot", "singleStmt", "stmt", "plsqlconsolecommand", "callstmt", 
		"createrolestmt", "opt_with", "optrolelist", "alteroptrolelist", "alteroptroleelem", 
		"createoptroleelem", "createuserstmt", "alterrolestmt", "opt_in_database", 
		"alterrolesetstmt", "alterroutinestmt", "alter_routine_cluase", "routine_action_list", 
		"routine_action", "creategroupstmt", "altergroupstmt", "add_drop", "createschemastmt", 
		"schema_name_create", "optschemaeltlist", "schema_stmt", "variablesetstmt", 
		"set_rest", "generic_set", "set_rest_more", "var_name", "var_list", "var_value", 
		"iso_level", "opt_boolean_or_string_column", "opt_boolean_or_string", 
		"zone_value", "opt_encoding", "nonreservedword_or_sconst_column", "nonreservedword_or_sconst", 
		"variableresetstmt", "reset_rest", "generic_reset", "setresetclause", 
		"functionsetresetclause", "variableshowstmt", "constraintssetstmt", "constraints_set_list", 
		"constraints_set_mode", "checkpointstmt", "discardstmt", "altertablestmt", 
		"alter_table_cmds", "partition_bound_spec", "partition_bound_cluase", 
		"partition_bound_choose", "partition_with_cluase", "partition_cmd", "index_partition_cmd", 
		"alter_table_cmd", "alter_column_default", "opt_drop_behavior", "opt_collate_clause", 
		"alter_using", "replica_identity", "reloptions", "opt_reloptions", "reloption_list", 
		"reloption_elem", "alter_identity_column_option_list", "alter_identity_column_option", 
		"partitionboundspec", "hash_partbound_elem", "hash_partbound", "altercompositetypestmt", 
		"alter_type_cmds", "alter_type_cmd", "closeportalstmt", "copystmt", "copy_from", 
		"opt_program", "copy_file_name", "copy_options", "copy_opt_list", "copy_opt_item", 
		"opt_binary", "copy_delimiter", "opt_using", "copy_generic_opt_list", 
		"copy_generic_opt_elem", "copy_generic_opt_arg", "copy_generic_opt_arg_list", 
		"copy_generic_opt_arg_list_item", "createstmt", "opttemp", "table_column_list", 
		"opttableelementlist", "opttypedtableelementlist", "tableelementlist", 
		"typedtableelementlist", "tableelement", "typedtableelement", "columnDefCluase", 
		"columnDef", "compressionCluase", "storageCluase", "columnOptions", "colquallist", 
		"colconstraint", "colconstraintelem", "nulls_distinct", "generated_when", 
		"deferrable_trigger", "initially_trigger", "tablelikeclause", "tablelikeoptionlist", 
		"tablelikeoption", "tableconstraint", "constraintelem", "opt_no_inherit", 
		"opt_column_list", "columnlist", "opt_c_include", "key_match", "exclusionconstraintlist", 
		"exclusionconstraintelem", "exclusionwhereclause", "key_actions", "key_update", 
		"key_delete", "key_action", "optinherit", "optpartitionspec", "partitionspec", 
		"part_params", "part_elem", "table_access_method_clause", "optwith", "oncommitoption", 
		"opttablespace", "index_paramenters_create", "optconstablespace", "existingindex", 
		"createstatsstmt", "alterstatsstmt", "createasstmt", "create_as_target", 
		"opt_with_data", "creatematviewstmt", "create_mv_target", "optnolog", 
		"refreshmatviewstmt", "createseqstmt", "alterseqstmt", "optseqoptlist", 
		"optparenthesizedseqoptlist", "seqoptlist", "seqoptelem", "opt_by", "numericonly", 
		"numericonly_list", "createplangstmt", "opt_trusted", "handler_name", 
		"opt_inline_handler", "validator_clause", "opt_validator", "opt_procedural", 
		"createtablespacestmt", "opttablespaceowner", "createextensionstmt", "create_extension_opt_list", 
		"create_extension_opt_item", "alterextensionstmt", "alter_extension_opt_list", 
		"alter_extension_opt_item", "alterextensioncontentsstmt", "createfdwstmt", 
		"fdw_option", "fdw_options", "opt_fdw_options", "alterfdwstmt", "create_generic_options", 
		"generic_option_list", "alter_generic_options", "alter_generic_option_list", 
		"alter_generic_option_elem", "generic_option_elem", "generic_option_name", 
		"generic_option_arg", "createforeignserverstmt", "opt_type", "foreign_server_version", 
		"opt_foreign_server_version", "alterforeignserverstmt", "createforeigntablestmt", 
		"importforeignschemastmt", "import_qualification_type", "import_qualification", 
		"createusermappingstmt", "auth_ident", "alterusermappingstmt", "createpolicystmt", 
		"alterpolicystmt", "alterprocedurestmt", "procedure_cluase", "procedure_action", 
		"rowsecurityoptionalexpr", "rowsecurityoptionalwithcheck", "rowsecuritydefaulttorole", 
		"rowsecurityoptionaltorole", "rowsecuritydefaultpermissive", "rowsecuritydefaultforcmd", 
		"row_security_cmd", "createamstmt", "am_type", "createtrigstmt", "triggeractiontime", 
		"foreachrow", "roworstatment", "triggerevents", "triggeroneevent", "triggerreferencing", 
		"triggertransitions", "triggertransition", "transitionoldornew", "transitionrowortable", 
		"transitionrelname", "triggerforspec", "triggerforopteach", "triggerfortype", 
		"triggerwhen", "function_or_procedure", "triggerfuncargs", "triggerfuncarg", 
		"optconstrfromtable", "constraintattributespec", "constraintattributeElem", 
		"createeventtrigstmt", "event_trigger_when_list", "event_trigger_when_item", 
		"event_trigger_value_list", "altereventtrigstmt", "enable_trigger", "createassertionstmt", 
		"definestmt", "definition", "def_list", "def_elem", "def_arg", "old_aggr_definition", 
		"old_aggr_list", "old_aggr_elem", "opt_enum_val_list", "enum_val_list", 
		"alterenumstmt", "opt_if_not_exists", "createopclassstmt", "opclass_item_list", 
		"opclass_item", "opt_default", "opt_opfamily", "opclass_purpose", "opt_recheck", 
		"createopfamilystmt", "alteropfamilystmt", "opclass_drop_list", "opclass_drop", 
		"reassignownedstmt", "dropstmt", "view_nameList", "object_type_any_name", 
		"object_type_name", "object_type_name_on_any_name", "any_name_list", "table_column_name", 
		"relation_column_name", "relation_name", "any_name", "attrs", "type_name_list", 
		"truncatestmt", "opt_restart_seqs", "commentstmt", "comment_text", "seclabelstmt", 
		"opt_provider", "security_label", "fetchstmt", "fetch_args", "from_in", 
		"opt_from_in", "grantstmt", "revokestmt", "privileges", "beforeprivilegeselectlist", 
		"beforeprivilegeselect", "privilege_list", "privilege", "privilege_target", 
		"grantee_list", "grantee", "opt_grant_grant_option", "grantrolestmt", 
		"revokerolestmt", "opt_grant_admin_option", "opt_granted_by", "alterdefaultprivilegesstmt", 
		"defacloptionlist", "defacloption", "defaclaction", "defacl_privilege_target", 
		"indexstmt", "opt_unique", "opt_concurrently", "opt_index_name", "access_method_clause", 
		"index_params", "index_elem_options", "index_elem", "opt_include", "index_including_params", 
		"opt_collate", "opt_class", "opt_asc_desc", "opt_nulls_order", "createfunctionstmt", 
		"attrilist", "opt_or_replace", "func_args", "func_args_list", "routine_with_argtypes_list", 
		"routine_with_argtypes", "procedure_with_argtypes_list", "procedure_with_argtypes", 
		"function_with_argtypes_list", "function_with_argtypes", "func_args_with_defaults", 
		"func_args_with_defaults_list", "func_arg", "arg_class", "param_name", 
		"func_return", "func_type", "func_arg_with_default", "aggr_arg", "aggr_args", 
		"aggr_args_list", "aggregate_with_argtypes", "aggregate_with_argtypes_list", 
		"createfunc_opt_list", "common_func_opt_item", "createfunc_opt_item", 
		"transform_type_list", "opt_definition", "table_func_column", "table_func_column_list", 
		"alterfunctionstmt", "alterFunctionTypeClause", "alterfunc_opt_list", 
		"opt_restrict", "removefuncstmt", "removeaggrstmt", "removeoperstmt", 
		"oper_argtypes", "any_operator", "operator_with_argtypes_list", "operator_with_argtypes", 
		"dostmt", "dostmt_opt_list", "dostmt_opt_item", "createcaststmt", "cast_context", 
		"opt_if_exists", "createtransformstmt", "transform_element_list", "reindexstmt", 
		"reindex_target_type", "reindex_target_multitable", "reindex_option_list", 
		"reindex_option_elem", "altertblspcstmt", "renamestmt", "opt_column", 
		"opt_set_data", "alterobjectdependsstmt", "opt_no", "alterobjectschemastmt", 
		"alteroperatorstmt", "operator_def_list", "operator_def_elem", "operator_def_arg", 
		"altertypestmt", "alterownerstmt", "createpublicationstmt", "opt_publication_for_tables", 
		"publication_for_tables", "alterpublicationstmt", "createsubscriptionstmt", 
		"publication_name_list", "publication_name_item", "altersubscriptionstmt", 
		"rulestmt", "ruleactionlist", "ruleactionmulti", "ruleactionstmt", "ruleactionstmtOrEmpty", 
		"event", "opt_instead", "notifystmt", "notify_payload", "listenstmt", 
		"unlistenstmt", "transactionstmt", "opt_transaction", "transaction_mode_item", 
		"transaction_mode_list", "transaction_mode_list_or_empty", "opt_transaction_chain", 
		"viewstmt", "opt_check_option", "loadstmt", "createdbstmt", "createdb_opt_list", 
		"createdb_opt_items", "createdb_opt_item", "createdb_opt_name", "opt_equal", 
		"alterdatabasestmt", "alterdatabasesetstmt", "drop_option_list", "drop_option", 
		"altercollationstmt", "altersystemstmt", "createdomainstmt", "alterdomainstmt", 
		"opt_as", "altertsdictionarystmt", "altertsconfigurationstmt", "any_with", 
		"createconversionstmt", "clusterstmt", "opt_verbose_list", "cluster_index_specification", 
		"vacuumstmt", "analyzestmt", "vac_analyze_option_list", "analyze_keyword", 
		"vac_analyze_option_elem", "vac_analyze_option_name", "vac_analyze_option_arg", 
		"opt_analyze", "analyze_options_list", "analyze_option_elem", "opt_verbose", 
		"opt_skiplock", "opt_buffer_usage_limit", "opt_full", "opt_freeze", "opt_name_list", 
		"vacuum_relation", "vacuum_relation_list", "opt_vacuum_relation_list", 
		"explainstmt", "explainablestmt", "explain_option_list", "explain_option_elem", 
		"explain_option_name", "explain_option_arg", "preparestmt", "prep_type_clause", 
		"preparablestmt", "executestmt", "execute_param_clause", "deallocatestmt", 
		"insertstmt", "insert_target", "insert_rest", "override_kind", "insert_column_list", 
		"insert_column_item", "opt_on_conflict", "opt_conf_expr", "returning_clause", 
		"deletestmt", "using_clause", "lockstmt", "opt_lock", "lock_type", "opt_nowait", 
		"opt_nowait_or_skip", "updatestmt", "set_clause_list", "set_clause", "set_target", 
		"set_target_list", "declarecursorstmt", "cursor_name", "cursor_options", 
		"opt_hold", "selectstmt", "select_with_parens", "select_no_parens", "select_clause", 
		"simple_select", "set_operator", "set_operator_with_all_or_distinct", 
		"with_clause", "cte_list", "common_table_expr", "search_cluase", "cycle_cluase", 
		"opt_materialized", "opt_with_clause", "into_clause", "opt_strict", "opttempTableName", 
		"opt_table", "all_or_distinct", "distinct_clause", "opt_all_clause", "opt_sort_clause", 
		"sort_clause", "sortby_list", "sortby", "select_limit", "opt_select_limit", 
		"limit_clause", "fetch_clause", "offset_clause", "select_limit_value", 
		"select_offset_value", "select_fetch_first_value", "i_or_f_const", "row_or_rows", 
		"first_or_next", "group_clause", "group_by_list", "group_by_item", "empty_grouping_set", 
		"rollup_clause", "cube_clause", "grouping_sets_clause", "having_clause", 
		"for_locking_clause", "opt_for_locking_clause", "for_locking_items", "for_locking_item", 
		"for_locking_strength", "locked_rels_list", "values_clause", "from_clause", 
		"from_list", "table_ref", "alias_clause", "opt_alias_clause", "func_alias_clause", 
		"join_type", "join_qual", "relation_expr", "publication_relation_expr", 
		"relation_expr_list", "publication_relation_expr_list", "relation_expr_opt_alias", 
		"tablesample_clause", "opt_repeatable_clause", "func_table", "rowsfrom_item", 
		"rowsfrom_list", "opt_col_def_list", "opt_ordinality", "where_clause", 
		"where_or_current_clause", "opttablefuncelementlist", "tablefuncelementlist", 
		"tablefuncelement", "xmltable", "xmltable_column_list", "xmltable_column_el", 
		"xmltable_column_option_list", "xmltable_column_option_el", "xml_namespace_list", 
		"xml_namespace_el", "typename", "opt_array_bounds", "simpletypename", 
		"consttypename", "generictype", "opt_type_modifiers", "numeric", "opt_float", 
		"bit", "constbit", "bitwithlength", "bitwithoutlength", "character", "constcharacter", 
		"character_c", "opt_varying", "constdatetime", "constinterval", "opt_timezone", 
		"opt_interval", "interval_second", "opt_escape", "a_expr", "a_expr_qual", 
		"a_expr_lessless", "a_expr_or", "a_expr_and", "a_expr_in", "a_expr_unary_not", 
		"a_expr_isnull", "a_expr_is_not", "a_expr_compare", "a_expr_like", "a_expr_qual_op", 
		"a_expr_unary_qualop", "a_expr_add", "a_expr_mul", "a_expr_caret", "a_expr_unary_sign", 
		"a_expr_at_time_zone", "a_expr_collate", "a_expr_typecast", "b_expr", 
		"c_expr", "plsqlvariablename", "func_application", "func_expr", "func_expr_windowless", 
		"func_expr_common_subexpr", "xml_root_version", "opt_xml_root_standalone", 
		"xml_attributes", "xml_attribute_list", "xml_attribute_el", "document_or_content", 
		"xml_whitespace_option", "xmlexists_argument", "xml_passing_mech", "within_group_clause", 
		"filter_clause", "window_clause", "window_definition_list", "window_definition", 
		"over_clause", "window_specification", "opt_existing_window_name", "opt_partition_clause", 
		"opt_frame_clause", "frame_extent", "frame_bound", "opt_window_exclusion_clause", 
		"row", "explicit_row", "implicit_row", "sub_type", "all_op", "mathop", 
		"qual_op", "qual_all_op", "subquery_Op", "expr_list", "column_expr_list_noparen", 
		"column_expr_list", "column_expr", "column_expr_noparen", "func_arg_list", 
		"func_arg_expr", "type_list", "array_expr", "array_expr_list", "extract_list", 
		"extract_arg", "unicode_normal_form", "overlay_list", "position_list", 
		"substr_list", "trim_list", "in_expr", "case_expr", "when_clause_list", 
		"when_clause", "case_default", "case_arg", "columnref", "indirection_el", 
		"opt_slice_bound", "indirection", "opt_indirection", "opt_target_list", 
		"target_list", "target_el", "qualified_name_list", "table_name_list", 
		"schema_name_list", "database_nameList", "procedure_name_list", "tablespace_name_create", 
		"tablespace_name", "table_name_create", "table_name", "view_name_create", 
		"view_name", "qualified_name", "tablespace_name_list", "name_list", "database_name_create", 
		"database_name", "schema_name", "routine_name_create", "routine_name", 
		"procedure_name", "procedure_name_create", "column_name", "column_name_create", 
		"name", "attr_name", "file_name", "function_name_create", "function_name", 
		"usual_name", "aexprconst", "xconst", "bconst", "fconst", "iconst", "sconst", 
		"anysconst", "opt_uescape", "signediconst", "groupname", "roleid", "rolespec", 
		"role_list", "colid", "index_method_choices", "exclude_element", "index_paramenters", 
		"type_function_name", "type_usual_name", "nonreservedword_column", "nonreservedword", 
		"collabel", "identifier", "plsqlidentifier", "unreserved_keyword", "col_name_keyword", 
		"type_func_name_keyword", "reserved_keyword", "pl_function", "comp_options", 
		"comp_option", "sharp", "option_value", "opt_semi", "pl_block", "decl_sect", 
		"decl_start", "decl_stmts", "label_decl", "decl_stmt", "decl_statement", 
		"opt_scrollable", "decl_cursor_query", "decl_cursor_args", "decl_cursor_arglist", 
		"decl_cursor_arg", "decl_is_for", "decl_aliasitem", "decl_varname", "decl_const", 
		"decl_datatype", "decl_collate", "decl_notnull", "decl_defval", "decl_defkey", 
		"assign_operator", "proc_sect", "proc_stmt", "stmt_perform", "stmt_call", 
		"opt_expr_list", "stmt_assign", "stmt_getdiag", "getdiag_area_opt", "getdiag_list", 
		"getdiag_list_item", "getdiag_item", "getdiag_target", "assign_var", "stmt_if", 
		"stmt_elsifs", "stmt_else", "stmt_case", "opt_expr_until_when", "case_when_list", 
		"case_when", "opt_case_else", "stmt_loop", "stmt_while", "stmt_for", "for_control", 
		"opt_for_using_expression", "opt_cursor_parameters", "opt_reverse", "opt_by_expression", 
		"for_variable", "stmt_foreach_a", "foreach_slice", "stmt_exit", "exit_type", 
		"stmt_return", "opt_return_result", "stmt_raise", "opt_stmt_raise_level", 
		"opt_raise_list", "opt_raise_using", "opt_raise_using_elem", "opt_raise_using_elem_list", 
		"stmt_assert", "opt_stmt_assert_message", "loop_body", "stmt_execsql", 
		"stmt_dynexecute", "opt_execute_using", "opt_execute_using_list", "opt_execute_into", 
		"stmt_open", "opt_open_bound_list_item", "opt_open_bound_list", "opt_open_using", 
		"opt_scroll_option", "opt_scroll_option_no", "stmt_fetch", "into_target", 
		"opt_cursor_from", "opt_fetch_direction", "stmt_move", "mergestmt", "data_source", 
		"join_condition", "merge_when_clause", "merge_insert", "merge_update", 
		"default_values_or_values", "exprofdefaultlist", "exprofdefault", "stmt_close", 
		"stmt_null", "stmt_commit", "stmt_rollback", "plsql_opt_transaction_chain", 
		"stmt_set", "cursor_variable", "exception_sect", "proc_exceptions", "proc_exception", 
		"proc_conditions", "proc_condition", "opt_block_label", "opt_loop_label", 
		"opt_label", "opt_exitcond", "any_identifier", "plsql_unreserved_keyword", 
		"sql_expression", "expr_until_then", "expr_until_semi", "expr_until_rightbracket", 
		"expr_until_loop", "make_execsql_stmt", "opt_returning_clause_into",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", 
		"'='", "'.'", "'+'", "'-'", "'/'", "'^'", "'<'", "'>'", "'<<'", "'>>'", 
		"':='", "'<='", "'=>'", "'>='", "'..'", "'<>'", "'::'", "'%'", undefined, 
		undefined, "'ALL'", "'ANALYSE'", "'ANALYZE'", "'AND'", "'ANY'", "'ARRAY'", 
		"'AS'", "'ASC'", "'ASYMMETRIC'", "'BOTH'", "'CASE'", "'CAST'", "'CHECK'", 
		"'COLLATE'", "'COLUMN'", "'CONSTRAINT'", "'CREATE'", "'CURRENT_CATALOG'", 
		"'CURRENT_DATE'", "'CURRENT_ROLE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", 
		"'CURRENT_USER'", "'DEFAULT'", "'DEFERRABLE'", "'DESC'", "'DISTINCT'", 
		"'DO'", "'ELSE'", "'EXCEPT'", "'FALSE'", "'FETCH'", "'FOR'", "'FOREIGN'", 
		"'FROM'", "'GRANT'", "'GROUP'", "'HAVING'", "'IN'", "'INITIALLY'", "'INTERSECT'", 
		"'INTO'", "'LATERAL'", "'LEADING'", "'LIMIT'", "'LOCALTIME'", "'LOCALTIMESTAMP'", 
		"'NOT'", "'NULL'", "'OFFSET'", "'ON'", "'ONLY'", "'OR'", "'ORDER'", "'PLACING'", 
		"'PRIMARY'", "'REFERENCES'", "'RETURNING'", "'SELECT'", "'SESSION_USER'", 
		"'SOME'", "'SYMMETRIC'", "'TABLE'", "'THEN'", "'TO'", "'TRAILING'", "'TRUE'", 
		"'UNION'", "'UNIQUE'", "'USER'", "'USING'", "'VARIADIC'", "'WHEN'", "'WHERE'", 
		"'WINDOW'", "'WITH'", "'AUTHORIZATION'", "'BINARY'", "'COLLATION'", "'CONCURRENTLY'", 
		"'CROSS'", "'CURRENT_SCHEMA'", "'FREEZE'", "'FULL'", "'ILIKE'", "'INNER'", 
		"'IS'", "'ISNULL'", "'JOIN'", "'LEFT'", "'LIKE'", "'NATURAL'", "'NOTNULL'", 
		"'OUTER'", "'OVER'", "'OVERLAPS'", "'RIGHT'", "'SIMILAR'", "'VERBOSE'", 
		"'ABORT'", "'ABSOLUTE'", "'ACCESS'", "'ACTION'", "'ADD'", "'ADMIN'", "'AFTER'", 
		"'AGGREGATE'", "'ALSO'", "'ALTER'", "'ALWAYS'", "'ASSERTION'", "'ASSIGNMENT'", 
		"'AT'", "'ATTRIBUTE'", "'BACKWARD'", "'BEFORE'", "'BEGIN'", "'BY'", "'CACHE'", 
		"'CALLED'", "'CASCADE'", "'CASCADED'", "'CATALOG'", "'CHAIN'", "'CHARACTERISTICS'", 
		"'CHECKPOINT'", "'CLASS'", "'CLOSE'", "'CLUSTER'", "'COMMENT'", "'COMMENTS'", 
		"'COMMIT'", "'COMMITTED'", "'CONFIGURATION'", "'CONNECTION'", "'CONSTRAINTS'", 
		"'CONTENT'", "'CONTINUE'", "'CONVERSION'", "'COPY'", "'COST'", "'CSV'", 
		"'CURSOR'", "'CYCLE'", "'DATA'", "'DATABASE'", "'DAY'", "'DEALLOCATE'", 
		"'DECLARE'", "'DEFAULTS'", "'DEFERRED'", "'DEFINER'", "'DELETE'", "'DELIMITER'", 
		"'DELIMITERS'", "'DICTIONARY'", "'DISABLE'", "'DISCARD'", "'DOCUMENT'", 
		"'DOMAIN'", "'DOUBLE'", "'DROP'", "'EACH'", "'ENABLE'", "'ENCODING'", 
		"'ENCRYPTED'", "'ENUM'", "'ESCAPE'", "'EVENT'", "'EXCLUDE'", "'EXCLUDING'", 
		"'EXCLUSIVE'", "'EXECUTE'", "'EXPLAIN'", "'EXTENSION'", "'EXTERNAL'", 
		"'FAMILY'", "'FIRST'", "'FOLLOWING'", "'FORCE'", "'FORWARD'", "'FUNCTION'", 
		"'FUNCTIONS'", "'GLOBAL'", "'GRANTED'", "'HANDLER'", "'HEADER'", "'HOLD'", 
		"'HOUR'", "'IDENTITY'", "'IF'", "'IMMEDIATE'", "'IMMUTABLE'", "'IMPLICIT'", 
		"'INCLUDING'", "'INCREMENT'", "'INDEX'", "'INDEXES'", "'INHERIT'", "'NOINHERIT'", 
		"'SUPERUSER'", "'NOSUPERUSER'", "'CREATEDB'", "'NOCREATEDB'", "'CREATEROLE'", 
		"'NOCREATEROLE'", "'CREATEUSER'", "'NOCREATEUSER'", "'INHERITS'", "'INLINE'", 
		"'INSENSITIVE'", "'INSERT'", "'INSTEAD'", "'INVOKER'", "'ISOLATION'", 
		"'KEY'", "'LABEL'", "'LANGUAGE'", "'LARGE'", "'LAST'", "'LEAKPROOF'", 
		"'LEVEL'", "'LISTEN'", "'LOAD'", "'LOCAL'", "'LOCATION'", "'LOCK'", "'MAPPING'", 
		"'MATCH'", "'MATERIALIZED'", "'MAXVALUE'", "'MINUTE'", "'MINVALUE'", "'MODE'", 
		"'MONTH'", "'MOVE'", "'NAME'", "'NAMES'", "'NEXT'", "'NO'", "'NOTHING'", 
		"'NOTIFY'", "'NOWAIT'", "'NULLS'", "'OBJECT'", "'OF'", "'OFF'", "'OIDS'", 
		"'OPERATOR'", "'OPTION'", "'OPTIONS'", "'OWNED'", "'OWNER'", "'PARSER'", 
		"'PARTIAL'", "'PARTITION'", "'PASSING'", "'PASSWORD'", "'PLANS'", "'PRECEDING'", 
		"'PREPARE'", "'PREPARED'", "'PRESERVE'", "'PRIOR'", "'PRIVILEGES'", "'PROCEDURAL'", 
		"'PROCEDURE'", "'PROGRAM'", "'QUOTE'", "'RANGE'", "'READ'", "'REASSIGN'", 
		"'RECHECK'", "'RECURSIVE'", "'REF'", "'REFRESH'", "'REINDEX'", "'RELATIVE'", 
		"'RELEASE'", "'RENAME'", "'REPEATABLE'", "'REPLACE'", "'REPLICA'", "'RESET'", 
		"'RESTART'", "'RESTRICT'", "'RETURNS'", "'REVOKE'", "'ROLE'", "'ROLLBACK'", 
		"'ROWS'", "'RULE'", "'SAVEPOINT'", "'SCHEMA'", "'SCROLL'", "'SEARCH'", 
		"'SECOND'", "'SECURITY'", "'SEQUENCE'", "'SEQUENCES'", "'SERIALIZABLE'", 
		"'SERVER'", "'SESSION'", "'SET'", "'SHARE'", "'SHOW'", "'SIMPLE'", "'SNAPSHOT'", 
		"'STABLE'", "'STANDALONE'", "'START'", "'STATEMENT'", "'STATISTICS'", 
		"'STDIN'", "'STDOUT'", "'STORAGE'", "'STRICT'", "'STRIP'", "'SYSID'", 
		"'SYSTEM'", "'TABLES'", "'TABLESPACE'", "'TEMP'", "'TEMPLATE'", "'TEMPORARY'", 
		"'TEXT'", "'TRANSACTION'", "'TRIGGER'", "'TRUNCATE'", "'TRUSTED'", "'TYPE'", 
		"'TYPES'", "'UNBOUNDED'", "'UNCOMMITTED'", "'UNENCRYPTED'", "'UNKNOWN'", 
		"'UNLISTEN'", "'UNLOGGED'", "'UNTIL'", "'UPDATE'", "'VACUUM'", "'VALID'", 
		"'VALIDATE'", "'VALIDATOR'", "'VARYING'", "'VERSION'", "'VIEW'", "'VOLATILE'", 
		"'WHITESPACE'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'WRITE'", "'XML'", 
		"'YEAR'", "'YES'", "'ZONE'", "'BETWEEN'", "'BIGINT'", "'BIT'", "'BOOLEAN'", 
		"'CHAR'", "'CHARACTER'", "'COALESCE'", "'DEC'", "'DECIMAL'", "'EXISTS'", 
		"'EXTRACT'", "'FLOAT'", "'GREATEST'", "'INOUT'", "'INT'", "'INTEGER'", 
		"'INTERVAL'", "'LEAST'", "'NATIONAL'", "'NCHAR'", "'NONE'", "'NULLIF'", 
		"'NUMERIC'", "'OVERLAY'", "'POSITION'", "'PRECISION'", "'REAL'", "'ROW'", 
		"'SETOF'", "'SMALLINT'", "'SUBSTRING'", "'TIME'", "'TIMESTAMP'", "'TREAT'", 
		"'TRIM'", "'VALUES'", "'VARCHAR'", "'XMLATTRIBUTES'", "'XMLCONCAT'", "'XMLELEMENT'", 
		"'XMLEXISTS'", "'XMLFOREST'", "'XMLPARSE'", "'XMLPI'", "'XMLROOT'", "'XMLSERIALIZE'", 
		"'CALL'", "'CURRENT'", "'ATTACH'", "'DETACH'", "'EXPRESSION'", "'GENERATED'", 
		"'LOGGED'", "'STORED'", "'INCLUDE'", "'ROUTINE'", "'TRANSFORM'", "'IMPORT'", 
		"'POLICY'", "'METHOD'", "'REFERENCING'", "'NEW'", "'OLD'", "'VALUE'", 
		"'SUBSCRIPTION'", "'PUBLICATION'", "'OUT'", "'END'", "'ROUTINES'", "'SCHEMAS'", 
		"'PROCEDURES'", "'INPUT'", "'SUPPORT'", "'PARALLEL'", "'SQL'", "'DEPENDS'", 
		"'OVERRIDING'", "'CONFLICT'", "'SKIP'", "'LOCKED'", "'TIES'", "'ROLLUP'", 
		"'CUBE'", "'GROUPING'", "'SETS'", "'TABLESAMPLE'", "'ORDINALITY'", "'XMLTABLE'", 
		"'COLUMNS'", "'XMLNAMESPACES'", "'ROWTYPE'", "'NORMALIZED'", "'WITHIN'", 
		"'FILTER'", "'GROUPS'", "'OTHERS'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", 
		"'UESCAPE'", "'VIEWS'", "'NORMALIZE'", "'DUMP'", "'PRINT_STRICT_PARAMS'", 
		"'VARIABLE_CONFLICT'", "'ERROR'", "'USE_VARIABLE'", "'USE_COLUMN'", "'ALIAS'", 
		"'CONSTANT'", "'PERFORM'", "'GET'", "'DIAGNOSTICS'", "'STACKED'", "'ELSIF'", 
		"'WHILE'", "'REVERSE'", "'FOREACH'", "'SLICE'", "'EXIT'", "'RETURN'", 
		"'QUERY'", "'RAISE'", "'SQLSTATE'", "'DEBUG'", "'LOG'", "'INFO'", "'NOTICE'", 
		"'WARNING'", "'EXCEPTION'", "'ASSERT'", "'LOOP'", "'OPEN'", "'PEFERENCES'", 
		"'USAGE'", "'CONNECT'", "'PUBLIC'", "'MERGE'", "'MATCHED'", "'BREADTH'", 
		"'DEPTH'", "'UNSAFE'", "'RESTRICTED'", "'SAFE'", "'FINALIZE'", "'MODULUS'", 
		"'REMAINDER'", "'LOGIN'", "'NOLOGIN'", "'REPLICATION'", "'NOREPLICATION'", 
		"'BYPASSRLS'", "'NOBYPASSRLS'", "'PERMISSIVE'", "'RESTRICTIVE'", "'COMPRESSION'", 
		"'PLAIN'", "'EXTENDED'", "'MAIN'", "'SKIP_LOCKED'", "'BUFFER_USAGE_LIMIT'", 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, "'\\''", undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, "'''",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, "Dollar", "OPEN_PAREN", "CLOSE_PAREN", "OPEN_BRACKET", "CLOSE_BRACKET", 
		"COMMA", "SEMI", "COLON", "STAR", "EQUAL", "DOT", "PLUS", "MINUS", "SLASH", 
		"CARET", "LT", "GT", "LESS_LESS", "GREATER_GREATER", "COLON_EQUALS", "LESS_EQUALS", 
		"EQUALS_GREATER", "GREATER_EQUALS", "DOT_DOT", "NOT_EQUALS", "TYPECAST", 
		"PERCENT", "PARAM", "Operator", "KW_ALL", "KW_ANALYSE", "KW_ANALYZE", 
		"KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_ASYMMETRIC", "KW_BOTH", 
		"KW_CASE", "KW_CAST", "KW_CHECK", "KW_COLLATE", "KW_COLUMN", "KW_CONSTRAINT", 
		"KW_CREATE", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_ROLE", 
		"KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DEFAULT", 
		"KW_DEFERRABLE", "KW_DESC", "KW_DISTINCT", "KW_DO", "KW_ELSE", "KW_EXCEPT", 
		"KW_FALSE", "KW_FETCH", "KW_FOR", "KW_FOREIGN", "KW_FROM", "KW_GRANT", 
		"KW_GROUP", "KW_HAVING", "KW_IN", "KW_INITIALLY", "KW_INTERSECT", "KW_INTO", 
		"KW_LATERAL", "KW_LEADING", "KW_LIMIT", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", 
		"KW_NOT", "KW_NULL", "KW_OFFSET", "KW_ON", "KW_ONLY", "KW_OR", "KW_ORDER", 
		"KW_PLACING", "KW_PRIMARY", "KW_REFERENCES", "KW_RETURNING", "KW_SELECT", 
		"KW_SESSION_USER", "KW_SOME", "KW_SYMMETRIC", "KW_TABLE", "KW_THEN", "KW_TO", 
		"KW_TRAILING", "KW_TRUE", "KW_UNION", "KW_UNIQUE", "KW_USER", "KW_USING", 
		"KW_VARIADIC", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_AUTHORIZATION", 
		"KW_BINARY", "KW_COLLATION", "KW_CONCURRENTLY", "KW_CROSS", "KW_CURRENT_SCHEMA", 
		"KW_FREEZE", "KW_FULL", "KW_ILIKE", "KW_INNER", "KW_IS", "KW_ISNULL", 
		"KW_JOIN", "KW_LEFT", "KW_LIKE", "KW_NATURAL", "KW_NOTNULL", "KW_OUTER", 
		"KW_OVER", "KW_OVERLAPS", "KW_RIGHT", "KW_SIMILAR", "KW_VERBOSE", "KW_ABORT", 
		"KW_ABSOLUTE", "KW_ACCESS", "KW_ACTION", "KW_ADD", "KW_ADMIN", "KW_AFTER", 
		"KW_AGGREGATE", "KW_ALSO", "KW_ALTER", "KW_ALWAYS", "KW_ASSERTION", "KW_ASSIGNMENT", 
		"KW_AT", "KW_ATTRIBUTE", "KW_BACKWARD", "KW_BEFORE", "KW_BEGIN", "KW_BY", 
		"KW_CACHE", "KW_CALLED", "KW_CASCADE", "KW_CASCADED", "KW_CATALOG", "KW_CHAIN", 
		"KW_CHARACTERISTICS", "KW_CHECKPOINT", "KW_CLASS", "KW_CLOSE", "KW_CLUSTER", 
		"KW_COMMENT", "KW_COMMENTS", "KW_COMMIT", "KW_COMMITTED", "KW_CONFIGURATION", 
		"KW_CONNECTION", "KW_CONSTRAINTS", "KW_CONTENT", "KW_CONTINUE", "KW_CONVERSION", 
		"KW_COPY", "KW_COST", "KW_CSV", "KW_CURSOR", "KW_CYCLE", "KW_DATA", "KW_DATABASE", 
		"KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULTS", "KW_DEFERRED", 
		"KW_DEFINER", "KW_DELETE", "KW_DELIMITER", "KW_DELIMITERS", "KW_DICTIONARY", 
		"KW_DISABLE", "KW_DISCARD", "KW_DOCUMENT", "KW_DOMAIN", "KW_DOUBLE", "KW_DROP", 
		"KW_EACH", "KW_ENABLE", "KW_ENCODING", "KW_ENCRYPTED", "KW_ENUM", "KW_ESCAPE", 
		"KW_EVENT", "KW_EXCLUDE", "KW_EXCLUDING", "KW_EXCLUSIVE", "KW_EXECUTE", 
		"KW_EXPLAIN", "KW_EXTENSION", "KW_EXTERNAL", "KW_FAMILY", "KW_FIRST", 
		"KW_FOLLOWING", "KW_FORCE", "KW_FORWARD", "KW_FUNCTION", "KW_FUNCTIONS", 
		"KW_GLOBAL", "KW_GRANTED", "KW_HANDLER", "KW_HEADER", "KW_HOLD", "KW_HOUR", 
		"KW_IDENTITY", "KW_IF", "KW_IMMEDIATE", "KW_IMMUTABLE", "KW_IMPLICIT", 
		"KW_INCLUDING", "KW_INCREMENT", "KW_INDEX", "KW_INDEXES", "KW_INHERIT", 
		"KW_NOINHERIT", "KW_SUPERUSER", "KW_NOSUPERUSER", "KW_CREATEDB", "KW_NOCREATEDB", 
		"KW_CREATEROLE", "KW_NOCREATEROLE", "KW_CREATEUSER", "KW_NOCREATEUSER", 
		"KW_INHERITS", "KW_INLINE", "KW_INSENSITIVE", "KW_INSERT", "KW_INSTEAD", 
		"KW_INVOKER", "KW_ISOLATION", "KW_KEY", "KW_LABEL", "KW_LANGUAGE", "KW_LARGE", 
		"KW_LAST", "KW_LEAKPROOF", "KW_LEVEL", "KW_LISTEN", "KW_LOAD", "KW_LOCAL", 
		"KW_LOCATION", "KW_LOCK", "KW_MAPPING", "KW_MATCH", "KW_MATERIALIZED", 
		"KW_MAXVALUE", "KW_MINUTE", "KW_MINVALUE", "KW_MODE", "KW_MONTH", "KW_MOVE", 
		"KW_NAME", "KW_NAMES", "KW_NEXT", "KW_NO", "KW_NOTHING", "KW_NOTIFY", 
		"KW_NOWAIT", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFF", "KW_OIDS", "KW_OPERATOR", 
		"KW_OPTION", "KW_OPTIONS", "KW_OWNED", "KW_OWNER", "KW_PARSER", "KW_PARTIAL", 
		"KW_PARTITION", "KW_PASSING", "KW_PASSWORD", "KW_PLANS", "KW_PRECEDING", 
		"KW_PREPARE", "KW_PREPARED", "KW_PRESERVE", "KW_PRIOR", "KW_PRIVILEGES", 
		"KW_PROCEDURAL", "KW_PROCEDURE", "KW_PROGRAM", "KW_QUOTE", "KW_RANGE", 
		"KW_READ", "KW_REASSIGN", "KW_RECHECK", "KW_RECURSIVE", "KW_REF", "KW_REFRESH", 
		"KW_REINDEX", "KW_RELATIVE", "KW_RELEASE", "KW_RENAME", "KW_REPEATABLE", 
		"KW_REPLACE", "KW_REPLICA", "KW_RESET", "KW_RESTART", "KW_RESTRICT", "KW_RETURNS", 
		"KW_REVOKE", "KW_ROLE", "KW_ROLLBACK", "KW_ROWS", "KW_RULE", "KW_SAVEPOINT", 
		"KW_SCHEMA", "KW_SCROLL", "KW_SEARCH", "KW_SECOND", "KW_SECURITY", "KW_SEQUENCE", 
		"KW_SEQUENCES", "KW_SERIALIZABLE", "KW_SERVER", "KW_SESSION", "KW_SET", 
		"KW_SHARE", "KW_SHOW", "KW_SIMPLE", "KW_SNAPSHOT", "KW_STABLE", "KW_STANDALONE", 
		"KW_START", "KW_STATEMENT", "KW_STATISTICS", "KW_STDIN", "KW_STDOUT", 
		"KW_STORAGE", "KW_STRICT", "KW_STRIP", "KW_SYSID", "KW_SYSTEM", "KW_TABLES", 
		"KW_TABLESPACE", "KW_TEMP", "KW_TEMPLATE", "KW_TEMPORARY", "KW_TEXT", 
		"KW_TRANSACTION", "KW_TRIGGER", "KW_TRUNCATE", "KW_TRUSTED", "KW_TYPE", 
		"KW_TYPES", "KW_UNBOUNDED", "KW_UNCOMMITTED", "KW_UNENCRYPTED", "KW_UNKNOWN", 
		"KW_UNLISTEN", "KW_UNLOGGED", "KW_UNTIL", "KW_UPDATE", "KW_VACUUM", "KW_VALID", 
		"KW_VALIDATE", "KW_VALIDATOR", "KW_VARYING", "KW_VERSION", "KW_VIEW", 
		"KW_VOLATILE", "KW_WHITESPACE", "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", 
		"KW_WRITE", "KW_XML", "KW_YEAR", "KW_YES", "KW_ZONE", "KW_BETWEEN", "KW_BIGINT", 
		"KW_BIT", "KW_BOOLEAN", "KW_CHAR", "KW_CHARACTER", "KW_COALESCE", "KW_DEC", 
		"KW_DECIMAL", "KW_EXISTS", "KW_EXTRACT", "KW_FLOAT", "KW_GREATEST", "KW_INOUT", 
		"KW_INT", "KW_INTEGER", "KW_INTERVAL", "KW_LEAST", "KW_NATIONAL", "KW_NCHAR", 
		"KW_NONE", "KW_NULLIF", "KW_NUMERIC", "KW_OVERLAY", "KW_POSITION", "KW_PRECISION", 
		"KW_REAL", "KW_ROW", "KW_SETOF", "KW_SMALLINT", "KW_SUBSTRING", "KW_TIME", 
		"KW_TIMESTAMP", "KW_TREAT", "KW_TRIM", "KW_VALUES", "KW_VARCHAR", "KW_XMLATTRIBUTES", 
		"KW_XMLCONCAT", "KW_XMLELEMENT", "KW_XMLEXISTS", "KW_XMLFOREST", "KW_XMLPARSE", 
		"KW_XMLPI", "KW_XMLROOT", "KW_XMLSERIALIZE", "KW_CALL", "KW_CURRENT", 
		"KW_ATTACH", "KW_DETACH", "KW_EXPRESSION", "KW_GENERATED", "KW_LOGGED", 
		"KW_STORED", "KW_INCLUDE", "KW_ROUTINE", "KW_TRANSFORM", "KW_IMPORT", 
		"KW_POLICY", "KW_METHOD", "KW_REFERENCING", "KW_NEW", "KW_OLD", "KW_VALUE", 
		"KW_SUBSCRIPTION", "KW_PUBLICATION", "KW_OUT", "KW_END", "KW_ROUTINES", 
		"KW_SCHEMAS", "KW_PROCEDURES", "KW_INPUT", "KW_SUPPORT", "KW_PARALLEL", 
		"KW_SQL", "KW_DEPENDS", "KW_OVERRIDING", "KW_CONFLICT", "KW_SKIP", "KW_LOCKED", 
		"KW_TIES", "KW_ROLLUP", "KW_CUBE", "KW_GROUPING", "KW_SETS", "KW_TABLESAMPLE", 
		"KW_ORDINALITY", "KW_XMLTABLE", "KW_COLUMNS", "KW_XMLNAMESPACES", "KW_ROWTYPE", 
		"KW_NORMALIZED", "KW_WITHIN", "KW_FILTER", "KW_GROUPS", "KW_OTHERS", "KW_NFC", 
		"KW_NFD", "KW_NFKC", "KW_NFKD", "KW_UESCAPE", "KW_VIEWS", "KW_NORMALIZE", 
		"KW_DUMP", "KW_PRINT_STRICT_PARAMS", "KW_VARIABLE_CONFLICT", "KW_ERROR", 
		"KW_USE_VARIABLE", "KW_USE_COLUMN", "KW_ALIAS", "KW_CONSTANT", "KW_PERFORM", 
		"KW_GET", "KW_DIAGNOSTICS", "KW_STACKED", "KW_ELSIF", "KW_WHILE", "KW_REVERSE", 
		"KW_FOREACH", "KW_SLICE", "KW_EXIT", "KW_RETURN", "KW_QUERY", "KW_RAISE", 
		"KW_SQLSTATE", "KW_DEBUG", "KW_LOG", "KW_INFO", "KW_NOTICE", "KW_WARNING", 
		"KW_EXCEPTION", "KW_ASSERT", "KW_LOOP", "KW_OPEN", "KW_PEFERENCES", "KW_USAGE", 
		"KW_CONNECT", "KW_PUBLIC", "KW_MERGE", "KW_MATCHED", "KW_BREADTH", "KW_DEPTH", 
		"KW_UNSAFE", "KW_RESTRICTED", "KW_SAFE", "KW_FINALIZE", "KW_MODULUS", 
		"KW_REMAINDER", "KW_LOGIN", "KW_NOLOGIN", "KW_REPLICATION", "KW_NOREPLICATION", 
		"KW_BYPASSRLS", "KW_NOBYPASSRLS", "KW_PERMISSIVE", "KW_RESTRICTIVE", "KW_COMPRESSION", 
		"KW_PLAIN", "KW_EXTENDED", "KW_MAIN", "KW_SKIP_LOCKED", "KW_BUFFER_USAGE_LIMIT", 
		"Identifier", "QuotedIdentifier", "UnterminatedQuotedIdentifier", "InvalidQuotedIdentifier", 
		"InvalidUnterminatedQuotedIdentifier", "UnicodeQuotedIdentifier", "UnterminatedUnicodeQuotedIdentifier", 
		"InvalidUnicodeQuotedIdentifier", "InvalidUnterminatedUnicodeQuotedIdentifier", 
		"StringConstant", "UnterminatedStringConstant", "UnicodeEscapeStringConstant", 
		"UnterminatedUnicodeEscapeStringConstant", "BeginDollarStringConstant", 
		"BinaryStringConstant", "UnterminatedBinaryStringConstant", "InvalidBinaryStringConstant", 
		"InvalidUnterminatedBinaryStringConstant", "HexadecimalStringConstant", 
		"UnterminatedHexadecimalStringConstant", "InvalidHexadecimalStringConstant", 
		"InvalidUnterminatedHexadecimalStringConstant", "Integral", "NumericFail", 
		"Numeric", "PLSQLVARIABLENAME", "PLSQLIDENTIFIER", "Whitespace", "Newline", 
		"LineComment", "BlockComment", "UnterminatedBlockComment", "MetaCommand", 
		"EndMetaCommand", "ErrorCharacter", "EscapeStringConstant", "UnterminatedEscapeStringConstant", 
		"InvalidEscapeStringConstant", "InvalidUnterminatedEscapeStringConstant", 
		"DollarText", "EndDollarStringConstant", "AfterEscapeStringConstantWithNewlineMode_Continued",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(PostgreSQLParser._LITERAL_NAMES, PostgreSQLParser._SYMBOLIC_NAMES, []);

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

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

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

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

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

	constructor(input: TokenStream) {
		super(input);
		this._interp = new ParserATNSimulator(PostgreSQLParser._ATN, this);
	}
	// @RuleVersion(0)
	public program(): ProgramContext {
		let _localctx: ProgramContext = new ProgramContext(this._ctx, this.state);
		this.enterRule(_localctx, 0, PostgreSQLParser.RULE_program);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1753;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.OPEN_PAREN || _la === PostgreSQLParser.KW_ANALYSE || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (PostgreSQLParser.KW_ANALYZE - 32)) | (1 << (PostgreSQLParser.KW_CREATE - 32)) | (1 << (PostgreSQLParser.KW_DO - 32)) | (1 << (PostgreSQLParser.KW_FETCH - 32)))) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & ((1 << (PostgreSQLParser.KW_GRANT - 65)) | (1 << (PostgreSQLParser.KW_SELECT - 65)) | (1 << (PostgreSQLParser.KW_TABLE - 65)))) !== 0) || _la === PostgreSQLParser.KW_WITH || _la === PostgreSQLParser.KW_ABORT || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & ((1 << (PostgreSQLParser.KW_ALTER - 138)) | (1 << (PostgreSQLParser.KW_BEGIN - 138)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 138)) | (1 << (PostgreSQLParser.KW_CLOSE - 138)) | (1 << (PostgreSQLParser.KW_CLUSTER - 138)) | (1 << (PostgreSQLParser.KW_COMMENT - 138)) | (1 << (PostgreSQLParser.KW_COMMIT - 138)) | (1 << (PostgreSQLParser.KW_COPY - 138)))) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & ((1 << (PostgreSQLParser.KW_DEALLOCATE - 177)) | (1 << (PostgreSQLParser.KW_DECLARE - 177)) | (1 << (PostgreSQLParser.KW_DELETE - 177)) | (1 << (PostgreSQLParser.KW_DISCARD - 177)) | (1 << (PostgreSQLParser.KW_DROP - 177)) | (1 << (PostgreSQLParser.KW_EXECUTE - 177)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 177)))) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (PostgreSQLParser.KW_INSERT - 241)) | (1 << (PostgreSQLParser.KW_LISTEN - 241)) | (1 << (PostgreSQLParser.KW_LOAD - 241)) | (1 << (PostgreSQLParser.KW_LOCK - 241)) | (1 << (PostgreSQLParser.KW_MOVE - 241)) | (1 << (PostgreSQLParser.KW_NOTIFY - 241)))) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & ((1 << (PostgreSQLParser.KW_PREPARE - 290)) | (1 << (PostgreSQLParser.KW_REASSIGN - 290)) | (1 << (PostgreSQLParser.KW_REFRESH - 290)) | (1 << (PostgreSQLParser.KW_REINDEX - 290)) | (1 << (PostgreSQLParser.KW_RELEASE - 290)) | (1 << (PostgreSQLParser.KW_RESET - 290)) | (1 << (PostgreSQLParser.KW_REVOKE - 290)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 290)))) !== 0) || ((((_la - 322)) & ~0x1F) === 0 && ((1 << (_la - 322)) & ((1 << (PostgreSQLParser.KW_SAVEPOINT - 322)) | (1 << (PostgreSQLParser.KW_SECURITY - 322)) | (1 << (PostgreSQLParser.KW_SET - 322)) | (1 << (PostgreSQLParser.KW_SHOW - 322)) | (1 << (PostgreSQLParser.KW_START - 322)))) !== 0) || ((((_la - 358)) & ~0x1F) === 0 && ((1 << (_la - 358)) & ((1 << (PostgreSQLParser.KW_TRUNCATE - 358)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 358)) | (1 << (PostgreSQLParser.KW_UPDATE - 358)) | (1 << (PostgreSQLParser.KW_VACUUM - 358)))) !== 0) || ((((_la - 422)) & ~0x1F) === 0 && ((1 << (_la - 422)) & ((1 << (PostgreSQLParser.KW_VALUES - 422)) | (1 << (PostgreSQLParser.KW_CALL - 422)) | (1 << (PostgreSQLParser.KW_IMPORT - 422)))) !== 0) || _la === PostgreSQLParser.KW_END || _la === PostgreSQLParser.KW_MERGE || _la === PostgreSQLParser.MetaCommand) {
				{
				{
				this.state = 1750;
				this.singleStmt();
				}
				}
				this.state = 1755;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1756;
			this.match(PostgreSQLParser.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 plsqlroot(): PlsqlrootContext {
		let _localctx: PlsqlrootContext = new PlsqlrootContext(this._ctx, this.state);
		this.enterRule(_localctx, 2, PostgreSQLParser.RULE_plsqlroot);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1758;
			this.pl_function();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public singleStmt(): SingleStmtContext {
		let _localctx: SingleStmtContext = new SingleStmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 4, PostgreSQLParser.RULE_singleStmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1760;
			this.stmt();
			this.state = 1762;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.SEMI) {
				{
				this.state = 1761;
				this.match(PostgreSQLParser.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 stmt(): StmtContext {
		let _localctx: StmtContext = new StmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 6, PostgreSQLParser.RULE_stmt);
		try {
			this.state = 1881;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 2, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1764;
				this.altereventtrigstmt();
				}
				break;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 1802;
				this.clusterstmt();
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 1803;
				this.commentstmt();
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 1804;
				this.constraintssetstmt();
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 1805;
				this.copystmt();
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 1806;
				this.createamstmt();
				}
				break;

			case 44:
				this.enterOuterAlt(_localctx, 44);
				{
				this.state = 1807;
				this.createasstmt();
				}
				break;

			case 45:
				this.enterOuterAlt(_localctx, 45);
				{
				this.state = 1808;
				this.createassertionstmt();
				}
				break;

			case 46:
				this.enterOuterAlt(_localctx, 46);
				{
				this.state = 1809;
				this.createcaststmt();
				}
				break;

			case 47:
				this.enterOuterAlt(_localctx, 47);
				{
				this.state = 1810;
				this.createconversionstmt();
				}
				break;

			case 48:
				this.enterOuterAlt(_localctx, 48);
				{
				this.state = 1811;
				this.createdomainstmt();
				}
				break;

			case 49:
				this.enterOuterAlt(_localctx, 49);
				{
				this.state = 1812;
				this.createextensionstmt();
				}
				break;

			case 50:
				this.enterOuterAlt(_localctx, 50);
				{
				this.state = 1813;
				this.createfdwstmt();
				}
				break;

			case 51:
				this.enterOuterAlt(_localctx, 51);
				{
				this.state = 1814;
				this.createforeignserverstmt();
				}
				break;

			case 52:
				this.enterOuterAlt(_localctx, 52);
				{
				this.state = 1815;
				this.createforeigntablestmt();
				}
				break;

			case 53:
				this.enterOuterAlt(_localctx, 53);
				{
				this.state = 1816;
				this.createfunctionstmt();
				}
				break;

			case 54:
				this.enterOuterAlt(_localctx, 54);
				{
				this.state = 1817;
				this.creategroupstmt();
				}
				break;

			case 55:
				this.enterOuterAlt(_localctx, 55);
				{
				this.state = 1818;
				this.creatematviewstmt();
				}
				break;

			case 56:
				this.enterOuterAlt(_localctx, 56);
				{
				this.state = 1819;
				this.createopclassstmt();
				}
				break;

			case 57:
				this.enterOuterAlt(_localctx, 57);
				{
				this.state = 1820;
				this.createopfamilystmt();
				}
				break;

			case 58:
				this.enterOuterAlt(_localctx, 58);
				{
				this.state = 1821;
				this.createpublicationstmt();
				}
				break;

			case 59:
				this.enterOuterAlt(_localctx, 59);
				{
				this.state = 1822;
				this.alteropfamilystmt();
				}
				break;

			case 60:
				this.enterOuterAlt(_localctx, 60);
				{
				this.state = 1823;
				this.createpolicystmt();
				}
				break;

			case 61:
				this.enterOuterAlt(_localctx, 61);
				{
				this.state = 1824;
				this.createplangstmt();
				}
				break;

			case 62:
				this.enterOuterAlt(_localctx, 62);
				{
				this.state = 1825;
				this.createschemastmt();
				}
				break;

			case 63:
				this.enterOuterAlt(_localctx, 63);
				{
				this.state = 1826;
				this.createseqstmt();
				}
				break;

			case 64:
				this.enterOuterAlt(_localctx, 64);
				{
				this.state = 1827;
				this.createstmt();
				}
				break;

			case 65:
				this.enterOuterAlt(_localctx, 65);
				{
				this.state = 1828;
				this.createsubscriptionstmt();
				}
				break;

			case 66:
				this.enterOuterAlt(_localctx, 66);
				{
				this.state = 1829;
				this.createstatsstmt();
				}
				break;

			case 67:
				this.enterOuterAlt(_localctx, 67);
				{
				this.state = 1830;
				this.createtablespacestmt();
				}
				break;

			case 68:
				this.enterOuterAlt(_localctx, 68);
				{
				this.state = 1831;
				this.createtransformstmt();
				}
				break;

			case 69:
				this.enterOuterAlt(_localctx, 69);
				{
				this.state = 1832;
				this.createtrigstmt();
				}
				break;

			case 70:
				this.enterOuterAlt(_localctx, 70);
				{
				this.state = 1833;
				this.createeventtrigstmt();
				}
				break;

			case 71:
				this.enterOuterAlt(_localctx, 71);
				{
				this.state = 1834;
				this.createrolestmt();
				}
				break;

			case 72:
				this.enterOuterAlt(_localctx, 72);
				{
				this.state = 1835;
				this.createuserstmt();
				}
				break;

			case 73:
				this.enterOuterAlt(_localctx, 73);
				{
				this.state = 1836;
				this.createusermappingstmt();
				}
				break;

			case 74:
				this.enterOuterAlt(_localctx, 74);
				{
				this.state = 1837;
				this.createdbstmt();
				}
				break;

			case 75:
				this.enterOuterAlt(_localctx, 75);
				{
				this.state = 1838;
				this.deallocatestmt();
				}
				break;

			case 76:
				this.enterOuterAlt(_localctx, 76);
				{
				this.state = 1839;
				this.declarecursorstmt();
				}
				break;

			case 77:
				this.enterOuterAlt(_localctx, 77);
				{
				this.state = 1840;
				this.definestmt();
				}
				break;

			case 78:
				this.enterOuterAlt(_localctx, 78);
				{
				this.state = 1841;
				this.deletestmt();
				}
				break;

			case 79:
				this.enterOuterAlt(_localctx, 79);
				{
				this.state = 1842;
				this.discardstmt();
				}
				break;

			case 80:
				this.enterOuterAlt(_localctx, 80);
				{
				this.state = 1843;
				this.dostmt();
				}
				break;

			case 81:
				this.enterOuterAlt(_localctx, 81);
				{
				this.state = 1844;
				this.dropstmt();
				}
				break;

			case 82:
				this.enterOuterAlt(_localctx, 82);
				{
				this.state = 1845;
				this.executestmt();
				}
				break;

			case 83:
				this.enterOuterAlt(_localctx, 83);
				{
				this.state = 1846;
				this.explainstmt();
				}
				break;

			case 84:
				this.enterOuterAlt(_localctx, 84);
				{
				this.state = 1847;
				this.fetchstmt();
				}
				break;

			case 85:
				this.enterOuterAlt(_localctx, 85);
				{
				this.state = 1848;
				this.grantstmt();
				}
				break;

			case 86:
				this.enterOuterAlt(_localctx, 86);
				{
				this.state = 1849;
				this.grantrolestmt();
				}
				break;

			case 87:
				this.enterOuterAlt(_localctx, 87);
				{
				this.state = 1850;
				this.mergestmt();
				}
				break;

			case 88:
				this.enterOuterAlt(_localctx, 88);
				{
				this.state = 1851;
				this.importforeignschemastmt();
				}
				break;

			case 89:
				this.enterOuterAlt(_localctx, 89);
				{
				this.state = 1852;
				this.indexstmt();
				}
				break;

			case 90:
				this.enterOuterAlt(_localctx, 90);
				{
				this.state = 1853;
				this.insertstmt();
				}
				break;

			case 91:
				this.enterOuterAlt(_localctx, 91);
				{
				this.state = 1854;
				this.listenstmt();
				}
				break;

			case 92:
				this.enterOuterAlt(_localctx, 92);
				{
				this.state = 1855;
				this.refreshmatviewstmt();
				}
				break;

			case 93:
				this.enterOuterAlt(_localctx, 93);
				{
				this.state = 1856;
				this.loadstmt();
				}
				break;

			case 94:
				this.enterOuterAlt(_localctx, 94);
				{
				this.state = 1857;
				this.lockstmt();
				}
				break;

			case 95:
				this.enterOuterAlt(_localctx, 95);
				{
				this.state = 1858;
				this.notifystmt();
				}
				break;

			case 96:
				this.enterOuterAlt(_localctx, 96);
				{
				this.state = 1859;
				this.preparestmt();
				}
				break;

			case 97:
				this.enterOuterAlt(_localctx, 97);
				{
				this.state = 1860;
				this.reassignownedstmt();
				}
				break;

			case 98:
				this.enterOuterAlt(_localctx, 98);
				{
				this.state = 1861;
				this.reindexstmt();
				}
				break;

			case 99:
				this.enterOuterAlt(_localctx, 99);
				{
				this.state = 1862;
				this.removeaggrstmt();
				}
				break;

			case 100:
				this.enterOuterAlt(_localctx, 100);
				{
				this.state = 1863;
				this.removefuncstmt();
				}
				break;

			case 101:
				this.enterOuterAlt(_localctx, 101);
				{
				this.state = 1864;
				this.removeoperstmt();
				}
				break;

			case 102:
				this.enterOuterAlt(_localctx, 102);
				{
				this.state = 1865;
				this.renamestmt();
				}
				break;

			case 103:
				this.enterOuterAlt(_localctx, 103);
				{
				this.state = 1866;
				this.revokestmt();
				}
				break;

			case 104:
				this.enterOuterAlt(_localctx, 104);
				{
				this.state = 1867;
				this.revokerolestmt();
				}
				break;

			case 105:
				this.enterOuterAlt(_localctx, 105);
				{
				this.state = 1868;
				this.rulestmt();
				}
				break;

			case 106:
				this.enterOuterAlt(_localctx, 106);
				{
				this.state = 1869;
				this.seclabelstmt();
				}
				break;

			case 107:
				this.enterOuterAlt(_localctx, 107);
				{
				this.state = 1870;
				this.selectstmt();
				}
				break;

			case 108:
				this.enterOuterAlt(_localctx, 108);
				{
				this.state = 1871;
				this.transactionstmt();
				}
				break;

			case 109:
				this.enterOuterAlt(_localctx, 109);
				{
				this.state = 1872;
				this.truncatestmt();
				}
				break;

			case 110:
				this.enterOuterAlt(_localctx, 110);
				{
				this.state = 1873;
				this.unlistenstmt();
				}
				break;

			case 111:
				this.enterOuterAlt(_localctx, 111);
				{
				this.state = 1874;
				this.updatestmt();
				}
				break;

			case 112:
				this.enterOuterAlt(_localctx, 112);
				{
				this.state = 1875;
				this.vacuumstmt();
				}
				break;

			case 113:
				this.enterOuterAlt(_localctx, 113);
				{
				this.state = 1876;
				this.variableresetstmt();
				}
				break;

			case 114:
				this.enterOuterAlt(_localctx, 114);
				{
				this.state = 1877;
				this.variablesetstmt();
				}
				break;

			case 115:
				this.enterOuterAlt(_localctx, 115);
				{
				this.state = 1878;
				this.variableshowstmt();
				}
				break;

			case 116:
				this.enterOuterAlt(_localctx, 116);
				{
				this.state = 1879;
				this.viewstmt();
				}
				break;

			case 117:
				this.enterOuterAlt(_localctx, 117);
				{
				this.state = 1880;
				this.plsqlconsolecommand();
				}
				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 plsqlconsolecommand(): PlsqlconsolecommandContext {
		let _localctx: PlsqlconsolecommandContext = new PlsqlconsolecommandContext(this._ctx, this.state);
		this.enterRule(_localctx, 8, PostgreSQLParser.RULE_plsqlconsolecommand);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1883;
			this.match(PostgreSQLParser.MetaCommand);
			this.state = 1885;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.EndMetaCommand) {
				{
				this.state = 1884;
				this.match(PostgreSQLParser.EndMetaCommand);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public callstmt(): CallstmtContext {
		let _localctx: CallstmtContext = new CallstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 10, PostgreSQLParser.RULE_callstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1887;
			this.match(PostgreSQLParser.KW_CALL);
			this.state = 1888;
			this.func_application();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createrolestmt(): CreaterolestmtContext {
		let _localctx: CreaterolestmtContext = new CreaterolestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 12, PostgreSQLParser.RULE_createrolestmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1890;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 1891;
			this.match(PostgreSQLParser.KW_ROLE);
			this.state = 1892;
			this.roleid();
			this.state = 1894;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 4, this._ctx) ) {
			case 1:
				{
				this.state = 1893;
				this.opt_with();
				}
				break;
			}
			this.state = 1896;
			this.optrolelist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_with(): Opt_withContext {
		let _localctx: Opt_withContext = new Opt_withContext(this._ctx, this.state);
		this.enterRule(_localctx, 14, PostgreSQLParser.RULE_opt_with);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1898;
			this.match(PostgreSQLParser.KW_WITH);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optrolelist(): OptrolelistContext {
		let _localctx: OptrolelistContext = new OptrolelistContext(this._ctx, this.state);
		this.enterRule(_localctx, 16, PostgreSQLParser.RULE_optrolelist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1903;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 5, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1900;
					this.createoptroleelem();
					}
					}
				}
				this.state = 1905;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 5, 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 alteroptrolelist(): AlteroptrolelistContext {
		let _localctx: AlteroptrolelistContext = new AlteroptrolelistContext(this._ctx, this.state);
		this.enterRule(_localctx, 18, PostgreSQLParser.RULE_alteroptrolelist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1909;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 6, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1906;
					this.alteroptroleelem();
					}
					}
				}
				this.state = 1911;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 6, 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 alteroptroleelem(): AlteroptroleelemContext {
		let _localctx: AlteroptroleelemContext = new AlteroptroleelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 20, PostgreSQLParser.RULE_alteroptroleelem);
		let _la: number;
		try {
			this.state = 1947;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 8, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1912;
				this.match(PostgreSQLParser.KW_PASSWORD);
				this.state = 1915;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 1913;
					this.sconst();
					}
					break;
				case PostgreSQLParser.KW_NULL:
					{
					this.state = 1914;
					this.match(PostgreSQLParser.KW_NULL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1917;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_ENCRYPTED || _la === PostgreSQLParser.KW_UNENCRYPTED)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1918;
				this.match(PostgreSQLParser.KW_PASSWORD);
				this.state = 1919;
				this.sconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1920;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_INHERIT || _la === PostgreSQLParser.KW_NOINHERIT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1921;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CREATEUSER || _la === PostgreSQLParser.KW_NOCREATEUSER)) {
				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 = 1922;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CREATEROLE || _la === PostgreSQLParser.KW_NOCREATEROLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 1923;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CREATEDB || _la === PostgreSQLParser.KW_NOCREATEDB)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 1924;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_SUPERUSER || _la === PostgreSQLParser.KW_NOSUPERUSER)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 1925;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_LOGIN || _la === PostgreSQLParser.KW_NOLOGIN)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 1926;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_REPLICATION || _la === PostgreSQLParser.KW_NOREPLICATION)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 1927;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_BYPASSRLS || _la === PostgreSQLParser.KW_NOBYPASSRLS)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 1928;
				this.match(PostgreSQLParser.KW_CONNECTION);
				this.state = 1929;
				this.match(PostgreSQLParser.KW_LIMIT);
				this.state = 1930;
				this.signediconst();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 1931;
				this.match(PostgreSQLParser.KW_VALID);
				this.state = 1932;
				this.match(PostgreSQLParser.KW_UNTIL);
				this.state = 1933;
				this.sconst();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 1934;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 1935;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 1936;
				this.name_list();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 1937;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 1938;
				this.match(PostgreSQLParser.KW_GROUP);
				this.state = 1939;
				this.name_list();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 1940;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 1941;
				this.role_list();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 1942;
				this.match(PostgreSQLParser.KW_ADMIN);
				this.state = 1943;
				this.name_list();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 1944;
				this.match(PostgreSQLParser.KW_USER);
				this.state = 1945;
				this.role_list();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 1946;
				this.identifier();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createoptroleelem(): CreateoptroleelemContext {
		let _localctx: CreateoptroleelemContext = new CreateoptroleelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 22, PostgreSQLParser.RULE_createoptroleelem);
		let _la: number;
		try {
			this.state = 1959;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 9, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 1949;
				this.alteroptroleelem();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1950;
				this.match(PostgreSQLParser.KW_SYSID);
				this.state = 1951;
				this.iconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 1952;
				this.match(PostgreSQLParser.KW_ADMIN);
				this.state = 1953;
				this.role_list();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 1954;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 1955;
				this.role_list();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 1956;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 1957;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_GROUP || _la === PostgreSQLParser.KW_ROLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 1958;
				this.role_list();
				}
				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 createuserstmt(): CreateuserstmtContext {
		let _localctx: CreateuserstmtContext = new CreateuserstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 24, PostgreSQLParser.RULE_createuserstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1961;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 1962;
			this.match(PostgreSQLParser.KW_USER);
			this.state = 1963;
			this.roleid();
			this.state = 1965;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 10, this._ctx) ) {
			case 1:
				{
				this.state = 1964;
				this.opt_with();
				}
				break;
			}
			this.state = 1967;
			this.optrolelist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterrolestmt(): AlterrolestmtContext {
		let _localctx: AlterrolestmtContext = new AlterrolestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 26, PostgreSQLParser.RULE_alterrolestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1969;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 1970;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_USER || _la === PostgreSQLParser.KW_ROLE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1971;
			this.rolespec();
			this.state = 1973;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) {
			case 1:
				{
				this.state = 1972;
				this.opt_with();
				}
				break;
			}
			this.state = 1975;
			this.alteroptrolelist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_in_database(): Opt_in_databaseContext {
		let _localctx: Opt_in_databaseContext = new Opt_in_databaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 28, PostgreSQLParser.RULE_opt_in_database);
		try {
			this.state = 1981;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_IN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 1978;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 1979;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 1980;
				this.database_name();
				}
				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 alterrolesetstmt(): AlterrolesetstmtContext {
		let _localctx: AlterrolesetstmtContext = new AlterrolesetstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 30, PostgreSQLParser.RULE_alterrolesetstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1983;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 1984;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_USER || _la === PostgreSQLParser.KW_ROLE)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 1987;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ALL:
				{
				this.state = 1985;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_PUBLIC:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 1986;
				this.rolespec();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 1989;
			this.opt_in_database();
			this.state = 1990;
			this.setresetclause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterroutinestmt(): AlterroutinestmtContext {
		let _localctx: AlterroutinestmtContext = new AlterroutinestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 32, PostgreSQLParser.RULE_alterroutinestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 1992;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 1993;
			this.match(PostgreSQLParser.KW_ROUTINE);
			this.state = 1994;
			this.routine_name();
			this.state = 1996;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 1995;
				this.func_args();
				}
			}

			this.state = 1998;
			this.alter_routine_cluase();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_routine_cluase(): Alter_routine_cluaseContext {
		let _localctx: Alter_routine_cluaseContext = new Alter_routine_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 34, PostgreSQLParser.RULE_alter_routine_cluase);
		let _la: number;
		try {
			this.state = 2020;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 17, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2000;
				this.routine_action_list();
				this.state = 2002;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 15, this._ctx) ) {
				case 1:
					{
					this.state = 2001;
					this.match(PostgreSQLParser.KW_RESTRICT);
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2004;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 2005;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2006;
				this.routine_name_create();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2007;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 2008;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2009;
				this.rolespec();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2010;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2011;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 2012;
				this.schema_name_create();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2014;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 2013;
					this.match(PostgreSQLParser.KW_NO);
					}
				}

				this.state = 2016;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 2017;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 2018;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 2019;
				this.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 routine_action_list(): Routine_action_listContext {
		let _localctx: Routine_action_listContext = new Routine_action_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 36, PostgreSQLParser.RULE_routine_action_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2022;
			this.routine_action();
			this.state = 2026;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 18, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 2023;
					this.routine_action();
					}
					}
				}
				this.state = 2028;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 18, 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 routine_action(): Routine_actionContext {
		let _localctx: Routine_actionContext = new Routine_actionContext(this._ctx, this.state);
		this.enterRule(_localctx, 38, PostgreSQLParser.RULE_routine_action);
		let _la: number;
		try {
			this.state = 2070;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 24, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2029;
				this.match(PostgreSQLParser.KW_IMMUTABLE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2030;
				this.match(PostgreSQLParser.KW_STABLE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2031;
				this.match(PostgreSQLParser.KW_VOLATILE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2033;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NOT) {
					{
					this.state = 2032;
					this.match(PostgreSQLParser.KW_NOT);
					}
				}

				this.state = 2035;
				this.match(PostgreSQLParser.KW_LEAKPROOF);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2046;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) {
				case 1:
					{
					this.state = 2037;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_EXTERNAL) {
						{
						this.state = 2036;
						this.match(PostgreSQLParser.KW_EXTERNAL);
						}
					}

					this.state = 2039;
					this.match(PostgreSQLParser.KW_SECURITY);
					this.state = 2040;
					this.match(PostgreSQLParser.KW_INVOKER);
					}
					break;

				case 2:
					{
					this.state = 2042;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_EXTERNAL) {
						{
						this.state = 2041;
						this.match(PostgreSQLParser.KW_EXTERNAL);
						}
					}

					this.state = 2044;
					this.match(PostgreSQLParser.KW_SECURITY);
					this.state = 2045;
					this.match(PostgreSQLParser.KW_DEFINER);
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2048;
				this.match(PostgreSQLParser.KW_PARALLEL);
				this.state = 2049;
				_la = this._input.LA(1);
				if (!(((((_la - 529)) & ~0x1F) === 0 && ((1 << (_la - 529)) & ((1 << (PostgreSQLParser.KW_UNSAFE - 529)) | (1 << (PostgreSQLParser.KW_RESTRICTED - 529)) | (1 << (PostgreSQLParser.KW_SAFE - 529)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2050;
				this.match(PostgreSQLParser.KW_COST);
				this.state = 2051;
				this.attr_name();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2052;
				this.match(PostgreSQLParser.KW_ROWS);
				this.state = 2053;
				this.name();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2054;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2055;
				this.name();
				this.state = 2056;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.KW_TO)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 2059;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 23, this._ctx) ) {
				case 1:
					{
					this.state = 2057;
					this.name();
					}
					break;

				case 2:
					{
					this.state = 2058;
					this.match(PostgreSQLParser.KW_DEFAULT);
					}
					break;
				}
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2061;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2062;
				this.name();
				this.state = 2063;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 2064;
				this.match(PostgreSQLParser.KW_CURRENT);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2066;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 2067;
				this.name();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 2068;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 2069;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 creategroupstmt(): CreategroupstmtContext {
		let _localctx: CreategroupstmtContext = new CreategroupstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 40, PostgreSQLParser.RULE_creategroupstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2072;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 2073;
			this.match(PostgreSQLParser.KW_GROUP);
			this.state = 2074;
			this.groupname();
			this.state = 2076;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) {
			case 1:
				{
				this.state = 2075;
				this.opt_with();
				}
				break;
			}
			this.state = 2078;
			this.optrolelist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altergroupstmt(): AltergroupstmtContext {
		let _localctx: AltergroupstmtContext = new AltergroupstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 42, PostgreSQLParser.RULE_altergroupstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2080;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 2081;
			this.match(PostgreSQLParser.KW_GROUP);
			this.state = 2082;
			this.rolespec();
			this.state = 2083;
			this.add_drop();
			this.state = 2084;
			this.match(PostgreSQLParser.KW_USER);
			this.state = 2085;
			this.role_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public add_drop(): Add_dropContext {
		let _localctx: Add_dropContext = new Add_dropContext(this._ctx, this.state);
		this.enterRule(_localctx, 44, PostgreSQLParser.RULE_add_drop);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2087;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ADD || _la === PostgreSQLParser.KW_DROP)) {
			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 createschemastmt(): CreateschemastmtContext {
		let _localctx: CreateschemastmtContext = new CreateschemastmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 46, PostgreSQLParser.RULE_createschemastmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2089;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 2090;
			this.match(PostgreSQLParser.KW_SCHEMA);
			this.state = 2092;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) {
			case 1:
				{
				this.state = 2091;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 2100;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 28, this._ctx) ) {
			case 1:
				{
				this.state = 2095;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 2094;
					this.schema_name_create();
					}
				}

				this.state = 2097;
				this.match(PostgreSQLParser.KW_AUTHORIZATION);
				this.state = 2098;
				this.rolespec();
				}
				break;

			case 2:
				{
				this.state = 2099;
				this.schema_name_create();
				}
				break;
			}
			this.state = 2102;
			this.optschemaeltlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public schema_name_create(): Schema_name_createContext {
		let _localctx: Schema_name_createContext = new Schema_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 48, PostgreSQLParser.RULE_schema_name_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2104;
			this.colid();
			this.state = 2106;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 2105;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optschemaeltlist(): OptschemaeltlistContext {
		let _localctx: OptschemaeltlistContext = new OptschemaeltlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 50, PostgreSQLParser.RULE_optschemaeltlist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2111;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 30, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 2108;
					this.schema_stmt();
					}
					}
				}
				this.state = 2113;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 30, 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 schema_stmt(): Schema_stmtContext {
		let _localctx: Schema_stmtContext = new Schema_stmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 52, PostgreSQLParser.RULE_schema_stmt);
		try {
			this.state = 2120;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 31, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2114;
				this.createstmt();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2119;
				this.viewstmt();
				}
				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 variablesetstmt(): VariablesetstmtContext {
		let _localctx: VariablesetstmtContext = new VariablesetstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 54, PostgreSQLParser.RULE_variablesetstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2122;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 2124;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 32, this._ctx) ) {
			case 1:
				{
				this.state = 2123;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_LOCAL || _la === PostgreSQLParser.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 = 2126;
			this.set_rest();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public set_rest(): Set_restContext {
		let _localctx: Set_restContext = new Set_restContext(this._ctx, this.state);
		this.enterRule(_localctx, 56, PostgreSQLParser.RULE_set_rest);
		try {
			this.state = 2136;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2128;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 2129;
				this.transaction_mode_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2130;
				this.match(PostgreSQLParser.KW_SESSION);
				this.state = 2131;
				this.match(PostgreSQLParser.KW_CHARACTERISTICS);
				this.state = 2132;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 2133;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 2134;
				this.transaction_mode_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2135;
				this.set_rest_more();
				}
				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 generic_set(): Generic_setContext {
		let _localctx: Generic_setContext = new Generic_setContext(this._ctx, this.state);
		this.enterRule(_localctx, 58, PostgreSQLParser.RULE_generic_set);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2140;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 2138;
				this.var_name();
				}
				break;
			case PostgreSQLParser.KW_ALL:
				{
				this.state = 2139;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 2143;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.KW_TO) {
				{
				this.state = 2142;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.KW_TO)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			this.state = 2147;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) {
			case 1:
				{
				this.state = 2145;
				this.var_list();
				}
				break;

			case 2:
				{
				this.state = 2146;
				this.match(PostgreSQLParser.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 set_rest_more(): Set_rest_moreContext {
		let _localctx: Set_rest_moreContext = new Set_rest_moreContext(this._ctx, this.state);
		this.enterRule(_localctx, 60, PostgreSQLParser.RULE_set_rest_more);
		try {
			this.state = 2176;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 38, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2149;
				this.generic_set();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2150;
				this.var_name();
				this.state = 2151;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 2152;
				this.match(PostgreSQLParser.KW_CURRENT);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2154;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 2155;
				this.match(PostgreSQLParser.KW_ZONE);
				this.state = 2156;
				this.zone_value();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2157;
				this.match(PostgreSQLParser.KW_CATALOG);
				this.state = 2158;
				this.sconst();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2159;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 2160;
				this.schema_name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2161;
				this.match(PostgreSQLParser.KW_NAMES);
				this.state = 2163;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 37, this._ctx) ) {
				case 1:
					{
					this.state = 2162;
					this.opt_encoding();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2165;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 2166;
				this.nonreservedword_or_sconst();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2167;
				this.match(PostgreSQLParser.KW_SESSION);
				this.state = 2168;
				this.match(PostgreSQLParser.KW_AUTHORIZATION);
				this.state = 2169;
				this.nonreservedword_or_sconst();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2170;
				this.match(PostgreSQLParser.KW_XML);
				this.state = 2171;
				this.match(PostgreSQLParser.KW_OPTION);
				this.state = 2172;
				this.document_or_content();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2173;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 2174;
				this.match(PostgreSQLParser.KW_SNAPSHOT);
				this.state = 2175;
				this.sconst();
				}
				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 var_name(): Var_nameContext {
		let _localctx: Var_nameContext = new Var_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 62, PostgreSQLParser.RULE_var_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2178;
			this.colid();
			this.state = 2183;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.DOT) {
				{
				{
				this.state = 2179;
				this.match(PostgreSQLParser.DOT);
				this.state = 2180;
				this.colid();
				}
				}
				this.state = 2185;
				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 var_list(): Var_listContext {
		let _localctx: Var_listContext = new Var_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 64, PostgreSQLParser.RULE_var_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2186;
			this.var_value();
			this.state = 2191;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2187;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2188;
				this.var_value();
				}
				}
				this.state = 2193;
				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 var_value(): Var_valueContext {
		let _localctx: Var_valueContext = new Var_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 66, PostgreSQLParser.RULE_var_value);
		try {
			this.state = 2196;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2194;
				this.opt_boolean_or_string();
				}
				break;
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2195;
				this.numericonly();
				}
				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 iso_level(): Iso_levelContext {
		let _localctx: Iso_levelContext = new Iso_levelContext(this._ctx, this.state);
		this.enterRule(_localctx, 68, PostgreSQLParser.RULE_iso_level);
		let _la: number;
		try {
			this.state = 2203;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_READ:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2198;
				this.match(PostgreSQLParser.KW_READ);
				this.state = 2199;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_COMMITTED || _la === PostgreSQLParser.KW_UNCOMMITTED)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_REPEATABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2200;
				this.match(PostgreSQLParser.KW_REPEATABLE);
				this.state = 2201;
				this.match(PostgreSQLParser.KW_READ);
				}
				break;
			case PostgreSQLParser.KW_SERIALIZABLE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2202;
				this.match(PostgreSQLParser.KW_SERIALIZABLE);
				}
				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 opt_boolean_or_string_column(): Opt_boolean_or_string_columnContext {
		let _localctx: Opt_boolean_or_string_columnContext = new Opt_boolean_or_string_columnContext(this._ctx, this.state);
		this.enterRule(_localctx, 70, PostgreSQLParser.RULE_opt_boolean_or_string_column);
		try {
			this.state = 2209;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_TRUE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2205;
				this.match(PostgreSQLParser.KW_TRUE);
				}
				break;
			case PostgreSQLParser.KW_FALSE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2206;
				this.match(PostgreSQLParser.KW_FALSE);
				}
				break;
			case PostgreSQLParser.KW_ON:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2207;
				this.match(PostgreSQLParser.KW_ON);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2208;
				this.nonreservedword_or_sconst_column();
				}
				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 opt_boolean_or_string(): Opt_boolean_or_stringContext {
		let _localctx: Opt_boolean_or_stringContext = new Opt_boolean_or_stringContext(this._ctx, this.state);
		this.enterRule(_localctx, 72, PostgreSQLParser.RULE_opt_boolean_or_string);
		try {
			this.state = 2215;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_TRUE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2211;
				this.match(PostgreSQLParser.KW_TRUE);
				}
				break;
			case PostgreSQLParser.KW_FALSE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2212;
				this.match(PostgreSQLParser.KW_FALSE);
				}
				break;
			case PostgreSQLParser.KW_ON:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2213;
				this.match(PostgreSQLParser.KW_ON);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2214;
				this.nonreservedword_or_sconst();
				}
				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 zone_value(): Zone_valueContext {
		let _localctx: Zone_valueContext = new Zone_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 74, PostgreSQLParser.RULE_zone_value);
		try {
			this.state = 2233;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2217;
				this.sconst();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2219;
				this.constinterval();
				this.state = 2220;
				this.sconst();
				this.state = 2222;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 45, this._ctx) ) {
				case 1:
					{
					this.state = 2221;
					this.opt_interval();
					}
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2224;
				this.constinterval();
				this.state = 2225;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2226;
				this.iconst();
				this.state = 2227;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 2228;
				this.sconst();
				}
				break;

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2231;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2232;
				this.match(PostgreSQLParser.KW_LOCAL);
				}
				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 opt_encoding(): Opt_encodingContext {
		let _localctx: Opt_encodingContext = new Opt_encodingContext(this._ctx, this.state);
		this.enterRule(_localctx, 76, PostgreSQLParser.RULE_opt_encoding);
		try {
			this.state = 2237;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2235;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2236;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				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 nonreservedword_or_sconst_column(): Nonreservedword_or_sconst_columnContext {
		let _localctx: Nonreservedword_or_sconst_columnContext = new Nonreservedword_or_sconst_columnContext(this._ctx, this.state);
		this.enterRule(_localctx, 78, PostgreSQLParser.RULE_nonreservedword_or_sconst_column);
		try {
			this.state = 2241;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2239;
				this.nonreservedword_column();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2240;
				this.sconst();
				}
				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 nonreservedword_or_sconst(): Nonreservedword_or_sconstContext {
		let _localctx: Nonreservedword_or_sconstContext = new Nonreservedword_or_sconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 80, PostgreSQLParser.RULE_nonreservedword_or_sconst);
		try {
			this.state = 2245;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2243;
				this.nonreservedword();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2244;
				this.sconst();
				}
				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 variableresetstmt(): VariableresetstmtContext {
		let _localctx: VariableresetstmtContext = new VariableresetstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 82, PostgreSQLParser.RULE_variableresetstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2247;
			this.match(PostgreSQLParser.KW_RESET);
			this.state = 2248;
			this.reset_rest();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public reset_rest(): Reset_restContext {
		let _localctx: Reset_restContext = new Reset_restContext(this._ctx, this.state);
		this.enterRule(_localctx, 84, PostgreSQLParser.RULE_reset_rest);
		try {
			this.state = 2258;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 50, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2250;
				this.generic_reset();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2251;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 2252;
				this.match(PostgreSQLParser.KW_ZONE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2253;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 2254;
				this.match(PostgreSQLParser.KW_ISOLATION);
				this.state = 2255;
				this.match(PostgreSQLParser.KW_LEVEL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2256;
				this.match(PostgreSQLParser.KW_SESSION);
				this.state = 2257;
				this.match(PostgreSQLParser.KW_AUTHORIZATION);
				}
				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 generic_reset(): Generic_resetContext {
		let _localctx: Generic_resetContext = new Generic_resetContext(this._ctx, this.state);
		this.enterRule(_localctx, 86, PostgreSQLParser.RULE_generic_reset);
		try {
			this.state = 2262;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2260;
				this.var_name();
				}
				break;
			case PostgreSQLParser.KW_ALL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2261;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 setresetclause(): SetresetclauseContext {
		let _localctx: SetresetclauseContext = new SetresetclauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 88, PostgreSQLParser.RULE_setresetclause);
		try {
			this.state = 2267;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2264;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2265;
				this.set_rest();
				}
				break;
			case PostgreSQLParser.KW_RESET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2266;
				this.variableresetstmt();
				}
				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 functionsetresetclause(): FunctionsetresetclauseContext {
		let _localctx: FunctionsetresetclauseContext = new FunctionsetresetclauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 90, PostgreSQLParser.RULE_functionsetresetclause);
		try {
			this.state = 2272;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2269;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2270;
				this.set_rest_more();
				}
				break;
			case PostgreSQLParser.KW_RESET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2271;
				this.variableresetstmt();
				}
				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 variableshowstmt(): VariableshowstmtContext {
		let _localctx: VariableshowstmtContext = new VariableshowstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 92, PostgreSQLParser.RULE_variableshowstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2274;
			this.match(PostgreSQLParser.KW_SHOW);
			this.state = 2284;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 54, this._ctx) ) {
			case 1:
				{
				this.state = 2275;
				this.var_name();
				}
				break;

			case 2:
				{
				this.state = 2276;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 2277;
				this.match(PostgreSQLParser.KW_ZONE);
				}
				break;

			case 3:
				{
				this.state = 2278;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 2279;
				this.match(PostgreSQLParser.KW_ISOLATION);
				this.state = 2280;
				this.match(PostgreSQLParser.KW_LEVEL);
				}
				break;

			case 4:
				{
				this.state = 2281;
				this.match(PostgreSQLParser.KW_SESSION);
				this.state = 2282;
				this.match(PostgreSQLParser.KW_AUTHORIZATION);
				}
				break;

			case 5:
				{
				this.state = 2283;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 constraintssetstmt(): ConstraintssetstmtContext {
		let _localctx: ConstraintssetstmtContext = new ConstraintssetstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 94, PostgreSQLParser.RULE_constraintssetstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2286;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 2287;
			this.match(PostgreSQLParser.KW_CONSTRAINTS);
			this.state = 2288;
			this.constraints_set_list();
			this.state = 2289;
			this.constraints_set_mode();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constraints_set_list(): Constraints_set_listContext {
		let _localctx: Constraints_set_listContext = new Constraints_set_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 96, PostgreSQLParser.RULE_constraints_set_list);
		try {
			this.state = 2293;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ALL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2291;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2292;
				this.qualified_name_list();
				}
				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 constraints_set_mode(): Constraints_set_modeContext {
		let _localctx: Constraints_set_modeContext = new Constraints_set_modeContext(this._ctx, this.state);
		this.enterRule(_localctx, 98, PostgreSQLParser.RULE_constraints_set_mode);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2295;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_DEFERRED || _la === PostgreSQLParser.KW_IMMEDIATE)) {
			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 checkpointstmt(): CheckpointstmtContext {
		let _localctx: CheckpointstmtContext = new CheckpointstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 100, PostgreSQLParser.RULE_checkpointstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2297;
			this.match(PostgreSQLParser.KW_CHECKPOINT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public discardstmt(): DiscardstmtContext {
		let _localctx: DiscardstmtContext = new DiscardstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 102, PostgreSQLParser.RULE_discardstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2299;
			this.match(PostgreSQLParser.KW_DISCARD);
			this.state = 2300;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_PLANS || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & ((1 << (PostgreSQLParser.KW_SEQUENCES - 329)) | (1 << (PostgreSQLParser.KW_TEMP - 329)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 329)))) !== 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 altertablestmt(): AltertablestmtContext {
		let _localctx: AltertablestmtContext = new AltertablestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 104, PostgreSQLParser.RULE_altertablestmt);
		let _la: number;
		try {
			this.state = 2435;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 74, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2302;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2303;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 2305;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 56, this._ctx) ) {
				case 1:
					{
					this.state = 2304;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2307;
				this.relation_expr();
				this.state = 2310;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_NOT:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_VALIDATE:
					{
					this.state = 2308;
					this.alter_table_cmds();
					}
					break;
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
					{
					this.state = 2309;
					this.partition_cmd();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2312;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2313;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 2314;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 2315;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 2316;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2317;
				this.tablespace_name();
				this.state = 2321;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OWNED) {
					{
					this.state = 2318;
					this.match(PostgreSQLParser.KW_OWNED);
					this.state = 2319;
					this.match(PostgreSQLParser.KW_BY);
					this.state = 2320;
					this.role_list();
					}
				}

				this.state = 2323;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2324;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2325;
				this.tablespace_name_create();
				this.state = 2327;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 59, this._ctx) ) {
				case 1:
					{
					this.state = 2326;
					this.opt_nowait();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2329;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2330;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 2332;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 60, this._ctx) ) {
				case 1:
					{
					this.state = 2331;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2334;
				this.table_name();
				this.state = 2335;
				this.match(PostgreSQLParser.KW_ATTACH);
				this.state = 2336;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 2337;
				this.qualified_name();
				this.state = 2342;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_FOR:
					{
					this.state = 2338;
					this.match(PostgreSQLParser.KW_FOR);
					this.state = 2339;
					this.match(PostgreSQLParser.KW_VALUES);
					this.state = 2340;
					this.partition_bound_spec();
					}
					break;
				case PostgreSQLParser.KW_DEFAULT:
					{
					this.state = 2341;
					this.match(PostgreSQLParser.KW_DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2344;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2345;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 2347;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 62, this._ctx) ) {
				case 1:
					{
					this.state = 2346;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2349;
				this.table_name();
				this.state = 2350;
				this.match(PostgreSQLParser.KW_DETACH);
				this.state = 2351;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 2352;
				this.qualified_name();
				this.state = 2354;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY || _la === PostgreSQLParser.KW_FINALIZE) {
					{
					this.state = 2353;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.KW_CONCURRENTLY || _la === PostgreSQLParser.KW_FINALIZE)) {
					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 = 2356;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2357;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 2359;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 64, this._ctx) ) {
				case 1:
					{
					this.state = 2358;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2361;
				this.qualified_name();
				this.state = 2364;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_NOT:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_VALIDATE:
					{
					this.state = 2362;
					this.alter_table_cmds();
					}
					break;
				case PostgreSQLParser.KW_ATTACH:
					{
					this.state = 2363;
					this.index_partition_cmd();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2366;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2367;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 2368;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 2369;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 2370;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2371;
				this.tablespace_name();
				this.state = 2375;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OWNED) {
					{
					this.state = 2372;
					this.match(PostgreSQLParser.KW_OWNED);
					this.state = 2373;
					this.match(PostgreSQLParser.KW_BY);
					this.state = 2374;
					this.role_list();
					}
				}

				this.state = 2377;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2378;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2379;
				this.tablespace_name_create();
				this.state = 2381;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 67, this._ctx) ) {
				case 1:
					{
					this.state = 2380;
					this.opt_nowait();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2383;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2384;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 2386;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 68, this._ctx) ) {
				case 1:
					{
					this.state = 2385;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2388;
				this.qualified_name();
				this.state = 2389;
				this.alter_table_cmds();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2391;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2392;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 2394;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 69, this._ctx) ) {
				case 1:
					{
					this.state = 2393;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2396;
				this.view_name();
				this.state = 2397;
				this.alter_table_cmds();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2399;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2400;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 2401;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 2403;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 70, this._ctx) ) {
				case 1:
					{
					this.state = 2402;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2405;
				this.view_name();
				this.state = 2406;
				this.alter_table_cmds();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2408;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2409;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 2410;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 2411;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 2412;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 2413;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2414;
				this.tablespace_name();
				this.state = 2418;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OWNED) {
					{
					this.state = 2415;
					this.match(PostgreSQLParser.KW_OWNED);
					this.state = 2416;
					this.match(PostgreSQLParser.KW_BY);
					this.state = 2417;
					this.role_list();
					}
				}

				this.state = 2420;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2421;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2422;
				this.tablespace_name_create();
				this.state = 2424;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 72, this._ctx) ) {
				case 1:
					{
					this.state = 2423;
					this.opt_nowait();
					}
					break;
				}
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2426;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2427;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 2428;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 2430;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 73, this._ctx) ) {
				case 1:
					{
					this.state = 2429;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2432;
				this.relation_expr();
				this.state = 2433;
				this.alter_table_cmds();
				}
				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 alter_table_cmds(): Alter_table_cmdsContext {
		let _localctx: Alter_table_cmdsContext = new Alter_table_cmdsContext(this._ctx, this.state);
		this.enterRule(_localctx, 106, PostgreSQLParser.RULE_alter_table_cmds);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2437;
			this.alter_table_cmd();
			this.state = 2442;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2438;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2439;
				this.alter_table_cmd();
				}
				}
				this.state = 2444;
				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 partition_bound_spec(): Partition_bound_specContext {
		let _localctx: Partition_bound_specContext = new Partition_bound_specContext(this._ctx, this.state);
		this.enterRule(_localctx, 108, PostgreSQLParser.RULE_partition_bound_spec);
		try {
			this.state = 2454;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_IN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2445;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 2446;
				this.opt_type_modifiers();
				}
				break;
			case PostgreSQLParser.KW_FROM:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2447;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 2448;
				this.partition_bound_cluase();
				this.state = 2449;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2450;
				this.partition_bound_cluase();
				}
				break;
			case PostgreSQLParser.KW_WITH:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2452;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 2453;
				this.partition_with_cluase();
				}
				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 partition_bound_cluase(): Partition_bound_cluaseContext {
		let _localctx: Partition_bound_cluaseContext = new Partition_bound_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 110, PostgreSQLParser.RULE_partition_bound_cluase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2456;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 2457;
			this.partition_bound_choose();
			this.state = 2462;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2458;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2459;
				this.partition_bound_choose();
				}
				}
				this.state = 2464;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2465;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partition_bound_choose(): Partition_bound_chooseContext {
		let _localctx: Partition_bound_chooseContext = new Partition_bound_chooseContext(this._ctx, this.state);
		this.enterRule(_localctx, 112, PostgreSQLParser.RULE_partition_bound_choose);
		try {
			this.state = 2470;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2467;
				this.opt_type_modifiers();
				}
				break;
			case PostgreSQLParser.KW_MINVALUE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2468;
				this.match(PostgreSQLParser.KW_MINVALUE);
				}
				break;
			case PostgreSQLParser.KW_MAXVALUE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2469;
				this.match(PostgreSQLParser.KW_MAXVALUE);
				}
				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 partition_with_cluase(): Partition_with_cluaseContext {
		let _localctx: Partition_with_cluaseContext = new Partition_with_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 114, PostgreSQLParser.RULE_partition_with_cluase);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2472;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 2473;
			this.match(PostgreSQLParser.KW_MODULUS);
			this.state = 2474;
			this.numericonly();
			this.state = 2475;
			this.match(PostgreSQLParser.COMMA);
			this.state = 2476;
			this.match(PostgreSQLParser.KW_REMAINDER);
			this.state = 2477;
			this.numericonly();
			this.state = 2478;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partition_cmd(): Partition_cmdContext {
		let _localctx: Partition_cmdContext = new Partition_cmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 116, PostgreSQLParser.RULE_partition_cmd);
		try {
			this.state = 2488;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ATTACH:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2480;
				this.match(PostgreSQLParser.KW_ATTACH);
				this.state = 2481;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 2482;
				this.qualified_name();
				this.state = 2483;
				this.partitionboundspec();
				}
				break;
			case PostgreSQLParser.KW_DETACH:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2485;
				this.match(PostgreSQLParser.KW_DETACH);
				this.state = 2486;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 2487;
				this.qualified_name();
				}
				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 index_partition_cmd(): Index_partition_cmdContext {
		let _localctx: Index_partition_cmdContext = new Index_partition_cmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 118, PostgreSQLParser.RULE_index_partition_cmd);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2490;
			this.match(PostgreSQLParser.KW_ATTACH);
			this.state = 2491;
			this.match(PostgreSQLParser.KW_PARTITION);
			this.state = 2492;
			this.qualified_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_table_cmd(): Alter_table_cmdContext {
		let _localctx: Alter_table_cmdContext = new Alter_table_cmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 120, PostgreSQLParser.RULE_alter_table_cmd);
		let _la: number;
		try {
			this.state = 2756;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 107, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2494;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 2496;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 80, this._ctx) ) {
				case 1:
					{
					this.state = 2495;
					this.opt_column();
					}
					break;
				}
				this.state = 2499;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 81, this._ctx) ) {
				case 1:
					{
					this.state = 2498;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 2501;
				this.columnDefCluase();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2502;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2504;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 82, this._ctx) ) {
				case 1:
					{
					this.state = 2503;
					this.opt_column();
					}
					break;
				}
				this.state = 2506;
				this.column_name();
				this.state = 2507;
				this.alter_column_default();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2509;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2511;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 83, this._ctx) ) {
				case 1:
					{
					this.state = 2510;
					this.opt_column();
					}
					break;
				}
				this.state = 2513;
				this.column_name();
				this.state = 2514;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2515;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 2516;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2518;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2520;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 84, this._ctx) ) {
				case 1:
					{
					this.state = 2519;
					this.opt_column();
					}
					break;
				}
				this.state = 2522;
				this.column_name();
				this.state = 2523;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2524;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 2525;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2527;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2529;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 85, this._ctx) ) {
				case 1:
					{
					this.state = 2528;
					this.opt_column();
					}
					break;
				}
				this.state = 2531;
				this.column_name();
				this.state = 2532;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2533;
				this.match(PostgreSQLParser.KW_EXPRESSION);
				this.state = 2535;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 86, this._ctx) ) {
				case 1:
					{
					this.state = 2534;
					this.opt_if_exists();
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2537;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2539;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 87, this._ctx) ) {
				case 1:
					{
					this.state = 2538;
					this.opt_column();
					}
					break;
				}
				this.state = 2541;
				this.column_name();
				this.state = 2542;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2543;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 2544;
				this.signediconst();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2546;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2548;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 88, this._ctx) ) {
				case 1:
					{
					this.state = 2547;
					this.opt_column();
					}
					break;
				}
				this.state = 2550;
				this.column_name();
				this.state = 2551;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2552;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 2553;
				this.signediconst();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2555;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2557;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 89, this._ctx) ) {
				case 1:
					{
					this.state = 2556;
					this.opt_column();
					}
					break;
				}
				this.state = 2559;
				this.column_name();
				this.state = 2560;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2561;
				this.reloptions();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 2563;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2565;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 90, this._ctx) ) {
				case 1:
					{
					this.state = 2564;
					this.opt_column();
					}
					break;
				}
				this.state = 2567;
				this.column_name();
				this.state = 2568;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 2569;
				this.reloptions();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 2571;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2573;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 91, this._ctx) ) {
				case 1:
					{
					this.state = 2572;
					this.opt_column();
					}
					break;
				}
				this.state = 2575;
				this.column_name();
				this.state = 2576;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2577;
				this.match(PostgreSQLParser.KW_STORAGE);
				this.state = 2578;
				this.colid();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 2580;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2582;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 92, this._ctx) ) {
				case 1:
					{
					this.state = 2581;
					this.opt_column();
					}
					break;
				}
				this.state = 2584;
				this.column_name();
				this.state = 2585;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 2586;
				this.match(PostgreSQLParser.KW_GENERATED);
				this.state = 2587;
				this.generated_when();
				this.state = 2588;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 2589;
				this.match(PostgreSQLParser.KW_IDENTITY);
				this.state = 2591;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 93, this._ctx) ) {
				case 1:
					{
					this.state = 2590;
					this.optparenthesizedseqoptlist();
					}
					break;
				}
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 2593;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2595;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 94, this._ctx) ) {
				case 1:
					{
					this.state = 2594;
					this.opt_column();
					}
					break;
				}
				this.state = 2597;
				this.column_name();
				this.state = 2598;
				this.alter_identity_column_option_list();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 2600;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2602;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 95, this._ctx) ) {
				case 1:
					{
					this.state = 2601;
					this.opt_column();
					}
					break;
				}
				this.state = 2604;
				this.column_name();
				this.state = 2605;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2606;
				this.match(PostgreSQLParser.KW_IDENTITY);
				this.state = 2608;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 96, this._ctx) ) {
				case 1:
					{
					this.state = 2607;
					this.opt_if_exists();
					}
					break;
				}
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 2610;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2612;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 97, this._ctx) ) {
				case 1:
					{
					this.state = 2611;
					this.opt_column();
					}
					break;
				}
				this.state = 2615;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 98, this._ctx) ) {
				case 1:
					{
					this.state = 2614;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2617;
				this.column_name();
				this.state = 2619;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 99, this._ctx) ) {
				case 1:
					{
					this.state = 2618;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 2621;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2623;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 100, this._ctx) ) {
				case 1:
					{
					this.state = 2622;
					this.opt_column();
					}
					break;
				}
				this.state = 2625;
				this.column_name();
				this.state = 2627;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_SET) {
					{
					this.state = 2626;
					this.opt_set_data();
					}
				}

				this.state = 2629;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 2630;
				this.typename();
				this.state = 2632;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 102, this._ctx) ) {
				case 1:
					{
					this.state = 2631;
					this.opt_collate_clause();
					}
					break;
				}
				this.state = 2635;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 2634;
					this.alter_using();
					}
				}

				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 2637;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2639;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 104, this._ctx) ) {
				case 1:
					{
					this.state = 2638;
					this.opt_column();
					}
					break;
				}
				this.state = 2641;
				this.column_name();
				this.state = 2642;
				this.alter_generic_options();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 2644;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 2645;
				this.tableconstraint();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 2646;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2647;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 2648;
				this.name();
				this.state = 2649;
				this.constraintattributespec();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 2651;
				this.match(PostgreSQLParser.KW_VALIDATE);
				this.state = 2652;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 2653;
				this.name();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 2654;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2655;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 2657;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 105, this._ctx) ) {
				case 1:
					{
					this.state = 2656;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2659;
				this.name();
				this.state = 2661;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 106, this._ctx) ) {
				case 1:
					{
					this.state = 2660;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 2663;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2664;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 2665;
				this.match(PostgreSQLParser.KW_OIDS);
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 2666;
				this.match(PostgreSQLParser.KW_CLUSTER);
				this.state = 2667;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 2668;
				this.name();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 2669;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2670;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 2671;
				this.match(PostgreSQLParser.KW_CLUSTER);
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 2672;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2673;
				this.match(PostgreSQLParser.KW_LOGGED);
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 2674;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2675;
				this.match(PostgreSQLParser.KW_UNLOGGED);
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 2676;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2677;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2678;
				this.name();
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 2679;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2680;
				this.match(PostgreSQLParser.KW_ALWAYS);
				this.state = 2681;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2682;
				this.name();
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 2683;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2684;
				this.match(PostgreSQLParser.KW_REPLICA);
				this.state = 2685;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2686;
				this.name();
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 2687;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2688;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2689;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 2690;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2691;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2692;
				this.match(PostgreSQLParser.KW_USER);
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 2693;
				this.match(PostgreSQLParser.KW_DISABLE);
				this.state = 2694;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2695;
				this.name();
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 2696;
				this.match(PostgreSQLParser.KW_DISABLE);
				this.state = 2697;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2698;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 2699;
				this.match(PostgreSQLParser.KW_DISABLE);
				this.state = 2700;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 2701;
				this.match(PostgreSQLParser.KW_USER);
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 2702;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2703;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 2704;
				this.name();
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 2705;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2706;
				this.match(PostgreSQLParser.KW_ALWAYS);
				this.state = 2707;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 2708;
				this.name();
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 2709;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2710;
				this.match(PostgreSQLParser.KW_REPLICA);
				this.state = 2711;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 2712;
				this.name();
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 2713;
				this.match(PostgreSQLParser.KW_DISABLE);
				this.state = 2714;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 2715;
				this.name();
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 2716;
				this.match(PostgreSQLParser.KW_INHERIT);
				this.state = 2717;
				this.qualified_name();
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 2718;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 2719;
				this.match(PostgreSQLParser.KW_INHERIT);
				this.state = 2720;
				this.qualified_name();
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 2721;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 2722;
				this.any_name();
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 2723;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 2724;
				this.match(PostgreSQLParser.KW_OF);
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 2725;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 2726;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2727;
				this.rolespec();
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 2728;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2729;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 2730;
				this.tablespace_name_create();
				}
				break;

			case 44:
				this.enterOuterAlt(_localctx, 44);
				{
				this.state = 2731;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2732;
				this.reloptions();
				}
				break;

			case 45:
				this.enterOuterAlt(_localctx, 45);
				{
				this.state = 2733;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 2734;
				this.reloptions();
				}
				break;

			case 46:
				this.enterOuterAlt(_localctx, 46);
				{
				this.state = 2735;
				this.match(PostgreSQLParser.KW_REPLICA);
				this.state = 2736;
				this.match(PostgreSQLParser.KW_IDENTITY);
				this.state = 2737;
				this.replica_identity();
				}
				break;

			case 47:
				this.enterOuterAlt(_localctx, 47);
				{
				this.state = 2738;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 2739;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 2740;
				this.match(PostgreSQLParser.KW_LEVEL);
				this.state = 2741;
				this.match(PostgreSQLParser.KW_SECURITY);
				}
				break;

			case 48:
				this.enterOuterAlt(_localctx, 48);
				{
				this.state = 2742;
				this.match(PostgreSQLParser.KW_DISABLE);
				this.state = 2743;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 2744;
				this.match(PostgreSQLParser.KW_LEVEL);
				this.state = 2745;
				this.match(PostgreSQLParser.KW_SECURITY);
				}
				break;

			case 49:
				this.enterOuterAlt(_localctx, 49);
				{
				this.state = 2746;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 2747;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 2748;
				this.match(PostgreSQLParser.KW_LEVEL);
				this.state = 2749;
				this.match(PostgreSQLParser.KW_SECURITY);
				}
				break;

			case 50:
				this.enterOuterAlt(_localctx, 50);
				{
				this.state = 2750;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 2751;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 2752;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 2753;
				this.match(PostgreSQLParser.KW_LEVEL);
				this.state = 2754;
				this.match(PostgreSQLParser.KW_SECURITY);
				}
				break;

			case 51:
				this.enterOuterAlt(_localctx, 51);
				{
				this.state = 2755;
				this.alter_generic_options();
				}
				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 alter_column_default(): Alter_column_defaultContext {
		let _localctx: Alter_column_defaultContext = new Alter_column_defaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 122, PostgreSQLParser.RULE_alter_column_default);
		try {
			this.state = 2763;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2758;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2759;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 2760;
				this.a_expr();
				}
				break;
			case PostgreSQLParser.KW_DROP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2761;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2762;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				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 opt_drop_behavior(): Opt_drop_behaviorContext {
		let _localctx: Opt_drop_behaviorContext = new Opt_drop_behaviorContext(this._ctx, this.state);
		this.enterRule(_localctx, 124, PostgreSQLParser.RULE_opt_drop_behavior);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2765;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_CASCADE || _la === PostgreSQLParser.KW_RESTRICT)) {
			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 opt_collate_clause(): Opt_collate_clauseContext {
		let _localctx: Opt_collate_clauseContext = new Opt_collate_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 126, PostgreSQLParser.RULE_opt_collate_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2767;
			this.match(PostgreSQLParser.KW_COLLATE);
			this.state = 2768;
			this.any_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_using(): Alter_usingContext {
		let _localctx: Alter_usingContext = new Alter_usingContext(this._ctx, this.state);
		this.enterRule(_localctx, 128, PostgreSQLParser.RULE_alter_using);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2770;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 2771;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public replica_identity(): Replica_identityContext {
		let _localctx: Replica_identityContext = new Replica_identityContext(this._ctx, this.state);
		this.enterRule(_localctx, 130, PostgreSQLParser.RULE_replica_identity);
		try {
			this.state = 2779;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_NOTHING:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2773;
				this.match(PostgreSQLParser.KW_NOTHING);
				}
				break;
			case PostgreSQLParser.KW_FULL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2774;
				this.match(PostgreSQLParser.KW_FULL);
				}
				break;
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2775;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				break;
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2776;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 2777;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 2778;
				this.name();
				}
				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 reloptions(): ReloptionsContext {
		let _localctx: ReloptionsContext = new ReloptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 132, PostgreSQLParser.RULE_reloptions);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2781;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 2782;
			this.reloption_list();
			this.state = 2783;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_reloptions(): Opt_reloptionsContext {
		let _localctx: Opt_reloptionsContext = new Opt_reloptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 134, PostgreSQLParser.RULE_opt_reloptions);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2785;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 2786;
			this.reloptions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public reloption_list(): Reloption_listContext {
		let _localctx: Reloption_listContext = new Reloption_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 136, PostgreSQLParser.RULE_reloption_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2788;
			this.reloption_elem();
			this.state = 2793;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2789;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2790;
				this.reloption_elem();
				}
				}
				this.state = 2795;
				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 reloption_elem(): Reloption_elemContext {
		let _localctx: Reloption_elemContext = new Reloption_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 138, PostgreSQLParser.RULE_reloption_elem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2796;
			this.collabel();
			this.state = 2805;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.EQUAL:
				{
				this.state = 2797;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 2798;
				this.def_arg();
				}
				break;
			case PostgreSQLParser.DOT:
				{
				this.state = 2799;
				this.match(PostgreSQLParser.DOT);
				this.state = 2800;
				this.collabel();
				this.state = 2803;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.EQUAL) {
					{
					this.state = 2801;
					this.match(PostgreSQLParser.EQUAL);
					this.state = 2802;
					this.def_arg();
					}
				}

				}
				break;
			case PostgreSQLParser.CLOSE_PAREN:
			case PostgreSQLParser.COMMA:
				break;
			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 alter_identity_column_option_list(): Alter_identity_column_option_listContext {
		let _localctx: Alter_identity_column_option_listContext = new Alter_identity_column_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 140, PostgreSQLParser.RULE_alter_identity_column_option_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2808;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 2807;
					this.alter_identity_column_option();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2810;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 113, 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 alter_identity_column_option(): Alter_identity_column_optionContext {
		let _localctx: Alter_identity_column_optionContext = new Alter_identity_column_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 142, PostgreSQLParser.RULE_alter_identity_column_option);
		let _la: number;
		try {
			this.state = 2825;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_RESTART:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2812;
				this.match(PostgreSQLParser.KW_RESTART);
				this.state = 2817;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 115, this._ctx) ) {
				case 1:
					{
					this.state = 2814;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_WITH) {
						{
						this.state = 2813;
						this.opt_with();
						}
					}

					this.state = 2816;
					this.numericonly();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2819;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 2823;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AS:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_START:
					{
					this.state = 2820;
					this.seqoptelem();
					}
					break;
				case PostgreSQLParser.KW_GENERATED:
					{
					this.state = 2821;
					this.match(PostgreSQLParser.KW_GENERATED);
					this.state = 2822;
					this.generated_when();
					}
					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 partitionboundspec(): PartitionboundspecContext {
		let _localctx: PartitionboundspecContext = new PartitionboundspecContext(this._ctx, this.state);
		this.enterRule(_localctx, 144, PostgreSQLParser.RULE_partitionboundspec);
		try {
			this.state = 2853;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 118, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2827;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 2828;
				this.match(PostgreSQLParser.KW_VALUES);
				this.state = 2829;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 2830;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2831;
				this.hash_partbound();
				this.state = 2832;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2834;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 2835;
				this.match(PostgreSQLParser.KW_VALUES);
				this.state = 2836;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 2837;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2838;
				this.expr_list();
				this.state = 2839;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2841;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 2842;
				this.match(PostgreSQLParser.KW_VALUES);
				this.state = 2843;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 2844;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2845;
				this.expr_list();
				this.state = 2846;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 2847;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2848;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2849;
				this.expr_list();
				this.state = 2850;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2852;
				this.match(PostgreSQLParser.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 hash_partbound_elem(): Hash_partbound_elemContext {
		let _localctx: Hash_partbound_elemContext = new Hash_partbound_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 146, PostgreSQLParser.RULE_hash_partbound_elem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2855;
			this.nonreservedword();
			this.state = 2856;
			this.iconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public hash_partbound(): Hash_partboundContext {
		let _localctx: Hash_partboundContext = new Hash_partboundContext(this._ctx, this.state);
		this.enterRule(_localctx, 148, PostgreSQLParser.RULE_hash_partbound);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2858;
			this.hash_partbound_elem();
			this.state = 2863;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2859;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2860;
				this.hash_partbound_elem();
				}
				}
				this.state = 2865;
				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 altercompositetypestmt(): AltercompositetypestmtContext {
		let _localctx: AltercompositetypestmtContext = new AltercompositetypestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 150, PostgreSQLParser.RULE_altercompositetypestmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2866;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 2867;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 2868;
			this.any_name();
			this.state = 2869;
			this.alter_type_cmds();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_type_cmds(): Alter_type_cmdsContext {
		let _localctx: Alter_type_cmdsContext = new Alter_type_cmdsContext(this._ctx, this.state);
		this.enterRule(_localctx, 152, PostgreSQLParser.RULE_alter_type_cmds);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2871;
			this.alter_type_cmd();
			this.state = 2876;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 2872;
				this.match(PostgreSQLParser.COMMA);
				this.state = 2873;
				this.alter_type_cmd();
				}
				}
				this.state = 2878;
				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 alter_type_cmd(): Alter_type_cmdContext {
		let _localctx: Alter_type_cmdContext = new Alter_type_cmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 154, PostgreSQLParser.RULE_alter_type_cmd);
		let _la: number;
		try {
			this.state = 2908;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ADD:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2879;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 2880;
				this.match(PostgreSQLParser.KW_ATTRIBUTE);
				this.state = 2881;
				this.tablefuncelement();
				this.state = 2883;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 121, this._ctx) ) {
				case 1:
					{
					this.state = 2882;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_DROP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2885;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 2886;
				this.match(PostgreSQLParser.KW_ATTRIBUTE);
				this.state = 2888;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 122, this._ctx) ) {
				case 1:
					{
					this.state = 2887;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 2890;
				this.colid();
				this.state = 2892;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 123, this._ctx) ) {
				case 1:
					{
					this.state = 2891;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_ALTER:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2894;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 2895;
				this.match(PostgreSQLParser.KW_ATTRIBUTE);
				this.state = 2896;
				this.colid();
				this.state = 2898;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_SET) {
					{
					this.state = 2897;
					this.opt_set_data();
					}
				}

				this.state = 2900;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 2901;
				this.typename();
				this.state = 2903;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 125, this._ctx) ) {
				case 1:
					{
					this.state = 2902;
					this.opt_collate_clause();
					}
					break;
				}
				this.state = 2906;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 126, this._ctx) ) {
				case 1:
					{
					this.state = 2905;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				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 closeportalstmt(): CloseportalstmtContext {
		let _localctx: CloseportalstmtContext = new CloseportalstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 156, PostgreSQLParser.RULE_closeportalstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2910;
			this.match(PostgreSQLParser.KW_CLOSE);
			this.state = 2913;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 2911;
				this.cursor_name();
				}
				break;
			case PostgreSQLParser.KW_ALL:
				{
				this.state = 2912;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 copystmt(): CopystmtContext {
		let _localctx: CopystmtContext = new CopystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 158, PostgreSQLParser.RULE_copystmt);
		let _la: number;
		try {
			this.state = 2952;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 137, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2915;
				this.match(PostgreSQLParser.KW_COPY);
				this.state = 2917;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_BINARY) {
					{
					this.state = 2916;
					this.opt_binary();
					}
				}

				this.state = 2919;
				this.table_name();
				this.state = 2921;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 2920;
					this.opt_column_list();
					}
				}

				this.state = 2923;
				this.copy_from();
				this.state = 2925;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROGRAM) {
					{
					this.state = 2924;
					this.opt_program();
					}
				}

				this.state = 2927;
				this.copy_file_name();
				this.state = 2929;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 132, this._ctx) ) {
				case 1:
					{
					this.state = 2928;
					this.copy_delimiter();
					}
					break;
				}
				this.state = 2932;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 133, this._ctx) ) {
				case 1:
					{
					this.state = 2931;
					this.opt_with();
					}
					break;
				}
				this.state = 2934;
				this.copy_options();
				this.state = 2936;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 2935;
					this.where_clause();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2938;
				this.match(PostgreSQLParser.KW_COPY);
				this.state = 2939;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2940;
				this.preparablestmt();
				this.state = 2941;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 2942;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 2944;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROGRAM) {
					{
					this.state = 2943;
					this.opt_program();
					}
				}

				this.state = 2946;
				this.copy_file_name();
				this.state = 2948;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 136, this._ctx) ) {
				case 1:
					{
					this.state = 2947;
					this.opt_with();
					}
					break;
				}
				this.state = 2950;
				this.copy_options();
				}
				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 copy_from(): Copy_fromContext {
		let _localctx: Copy_fromContext = new Copy_fromContext(this._ctx, this.state);
		this.enterRule(_localctx, 160, PostgreSQLParser.RULE_copy_from);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2954;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_TO)) {
			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 opt_program(): Opt_programContext {
		let _localctx: Opt_programContext = new Opt_programContext(this._ctx, this.state);
		this.enterRule(_localctx, 162, PostgreSQLParser.RULE_opt_program);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2956;
			this.match(PostgreSQLParser.KW_PROGRAM);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public copy_file_name(): Copy_file_nameContext {
		let _localctx: Copy_file_nameContext = new Copy_file_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 164, PostgreSQLParser.RULE_copy_file_name);
		try {
			this.state = 2961;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2958;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_STDIN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2959;
				this.match(PostgreSQLParser.KW_STDIN);
				}
				break;
			case PostgreSQLParser.KW_STDOUT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2960;
				this.match(PostgreSQLParser.KW_STDOUT);
				}
				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 copy_options(): Copy_optionsContext {
		let _localctx: Copy_optionsContext = new Copy_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 166, PostgreSQLParser.RULE_copy_options);
		try {
			this.state = 2968;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 139, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2963;
				this.copy_opt_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2964;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 2965;
				this.copy_generic_opt_list();
				this.state = 2966;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 copy_opt_list(): Copy_opt_listContext {
		let _localctx: Copy_opt_listContext = new Copy_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 168, PostgreSQLParser.RULE_copy_opt_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 2973;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 140, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 2970;
					this.copy_opt_item();
					}
					}
				}
				this.state = 2975;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 140, 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 copy_opt_item(): Copy_opt_itemContext {
		let _localctx: Copy_opt_itemContext = new Copy_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 170, PostgreSQLParser.RULE_copy_opt_item);
		let _la: number;
		try {
			this.state = 3015;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 145, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 2976;
				this.match(PostgreSQLParser.KW_BINARY);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 2977;
				this.match(PostgreSQLParser.KW_FREEZE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 2978;
				this.match(PostgreSQLParser.KW_DELIMITER);
				this.state = 2980;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 2979;
					this.opt_as();
					}
				}

				this.state = 2982;
				this.sconst();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 2983;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 2985;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 2984;
					this.opt_as();
					}
				}

				this.state = 2987;
				this.sconst();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 2988;
				this.match(PostgreSQLParser.KW_CSV);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 2989;
				this.match(PostgreSQLParser.KW_HEADER);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 2990;
				this.match(PostgreSQLParser.KW_QUOTE);
				this.state = 2992;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 2991;
					this.opt_as();
					}
				}

				this.state = 2994;
				this.sconst();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 2995;
				this.match(PostgreSQLParser.KW_ESCAPE);
				this.state = 2997;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 2996;
					this.opt_as();
					}
				}

				this.state = 2999;
				this.sconst();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3000;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 3001;
				this.match(PostgreSQLParser.KW_QUOTE);
				this.state = 3002;
				this.columnlist();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3003;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 3004;
				this.match(PostgreSQLParser.KW_QUOTE);
				this.state = 3005;
				this.match(PostgreSQLParser.STAR);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 3006;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 3007;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 3008;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 3009;
				this.columnlist();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 3010;
				this.match(PostgreSQLParser.KW_FORCE);
				this.state = 3011;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 3012;
				this.columnlist();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 3013;
				this.match(PostgreSQLParser.KW_ENCODING);
				this.state = 3014;
				this.sconst();
				}
				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 opt_binary(): Opt_binaryContext {
		let _localctx: Opt_binaryContext = new Opt_binaryContext(this._ctx, this.state);
		this.enterRule(_localctx, 172, PostgreSQLParser.RULE_opt_binary);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3017;
			this.match(PostgreSQLParser.KW_BINARY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public copy_delimiter(): Copy_delimiterContext {
		let _localctx: Copy_delimiterContext = new Copy_delimiterContext(this._ctx, this.state);
		this.enterRule(_localctx, 174, PostgreSQLParser.RULE_copy_delimiter);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3020;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 3019;
				this.opt_using();
				}
			}

			this.state = 3022;
			this.match(PostgreSQLParser.KW_DELIMITERS);
			this.state = 3023;
			this.sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_using(): Opt_usingContext {
		let _localctx: Opt_usingContext = new Opt_usingContext(this._ctx, this.state);
		this.enterRule(_localctx, 176, PostgreSQLParser.RULE_opt_using);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3025;
			this.match(PostgreSQLParser.KW_USING);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public copy_generic_opt_list(): Copy_generic_opt_listContext {
		let _localctx: Copy_generic_opt_listContext = new Copy_generic_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 178, PostgreSQLParser.RULE_copy_generic_opt_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3027;
			this.copy_generic_opt_elem();
			this.state = 3032;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3028;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3029;
				this.copy_generic_opt_elem();
				}
				}
				this.state = 3034;
				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 copy_generic_opt_elem(): Copy_generic_opt_elemContext {
		let _localctx: Copy_generic_opt_elemContext = new Copy_generic_opt_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 180, PostgreSQLParser.RULE_copy_generic_opt_elem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3035;
			this.collabel();
			this.state = 3037;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.STAR) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (PostgreSQLParser.KW_ON - 80)) | (1 << (PostgreSQLParser.KW_TABLE - 80)) | (1 << (PostgreSQLParser.KW_TRUE - 80)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 80)) | (1 << (PostgreSQLParser.KW_BINARY - 80)) | (1 << (PostgreSQLParser.KW_COLLATION - 80)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 80)) | (1 << (PostgreSQLParser.KW_CROSS - 80)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 80)))) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (PostgreSQLParser.KW_FREEZE - 112)) | (1 << (PostgreSQLParser.KW_FULL - 112)) | (1 << (PostgreSQLParser.KW_ILIKE - 112)) | (1 << (PostgreSQLParser.KW_INNER - 112)) | (1 << (PostgreSQLParser.KW_IS - 112)) | (1 << (PostgreSQLParser.KW_ISNULL - 112)) | (1 << (PostgreSQLParser.KW_JOIN - 112)) | (1 << (PostgreSQLParser.KW_LEFT - 112)) | (1 << (PostgreSQLParser.KW_LIKE - 112)) | (1 << (PostgreSQLParser.KW_NATURAL - 112)) | (1 << (PostgreSQLParser.KW_NOTNULL - 112)) | (1 << (PostgreSQLParser.KW_OUTER - 112)) | (1 << (PostgreSQLParser.KW_OVER - 112)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 112)) | (1 << (PostgreSQLParser.KW_RIGHT - 112)) | (1 << (PostgreSQLParser.KW_SIMILAR - 112)) | (1 << (PostgreSQLParser.KW_VERBOSE - 112)) | (1 << (PostgreSQLParser.KW_ABORT - 112)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 112)) | (1 << (PostgreSQLParser.KW_ACCESS - 112)) | (1 << (PostgreSQLParser.KW_ACTION - 112)) | (1 << (PostgreSQLParser.KW_ADD - 112)) | (1 << (PostgreSQLParser.KW_ADMIN - 112)) | (1 << (PostgreSQLParser.KW_AFTER - 112)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 112)) | (1 << (PostgreSQLParser.KW_ALSO - 112)) | (1 << (PostgreSQLParser.KW_ALTER - 112)) | (1 << (PostgreSQLParser.KW_ALWAYS - 112)) | (1 << (PostgreSQLParser.KW_ASSERTION - 112)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 112)) | (1 << (PostgreSQLParser.KW_AT - 112)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 112)))) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & ((1 << (PostgreSQLParser.KW_BACKWARD - 144)) | (1 << (PostgreSQLParser.KW_BEFORE - 144)) | (1 << (PostgreSQLParser.KW_BEGIN - 144)) | (1 << (PostgreSQLParser.KW_BY - 144)) | (1 << (PostgreSQLParser.KW_CACHE - 144)) | (1 << (PostgreSQLParser.KW_CALLED - 144)) | (1 << (PostgreSQLParser.KW_CASCADE - 144)) | (1 << (PostgreSQLParser.KW_CASCADED - 144)) | (1 << (PostgreSQLParser.KW_CATALOG - 144)) | (1 << (PostgreSQLParser.KW_CHAIN - 144)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 144)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 144)) | (1 << (PostgreSQLParser.KW_CLASS - 144)) | (1 << (PostgreSQLParser.KW_CLOSE - 144)) | (1 << (PostgreSQLParser.KW_CLUSTER - 144)) | (1 << (PostgreSQLParser.KW_COMMENT - 144)) | (1 << (PostgreSQLParser.KW_COMMENTS - 144)) | (1 << (PostgreSQLParser.KW_COMMIT - 144)) | (1 << (PostgreSQLParser.KW_COMMITTED - 144)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 144)) | (1 << (PostgreSQLParser.KW_CONNECTION - 144)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 144)) | (1 << (PostgreSQLParser.KW_CONTENT - 144)) | (1 << (PostgreSQLParser.KW_CONTINUE - 144)) | (1 << (PostgreSQLParser.KW_CONVERSION - 144)) | (1 << (PostgreSQLParser.KW_COPY - 144)) | (1 << (PostgreSQLParser.KW_COST - 144)) | (1 << (PostgreSQLParser.KW_CSV - 144)) | (1 << (PostgreSQLParser.KW_CURSOR - 144)) | (1 << (PostgreSQLParser.KW_CYCLE - 144)) | (1 << (PostgreSQLParser.KW_DATA - 144)) | (1 << (PostgreSQLParser.KW_DATABASE - 144)))) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & ((1 << (PostgreSQLParser.KW_DAY - 176)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 176)) | (1 << (PostgreSQLParser.KW_DECLARE - 176)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 176)) | (1 << (PostgreSQLParser.KW_DEFERRED - 176)) | (1 << (PostgreSQLParser.KW_DEFINER - 176)) | (1 << (PostgreSQLParser.KW_DELETE - 176)) | (1 << (PostgreSQLParser.KW_DELIMITER - 176)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 176)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 176)) | (1 << (PostgreSQLParser.KW_DISABLE - 176)) | (1 << (PostgreSQLParser.KW_DISCARD - 176)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 176)) | (1 << (PostgreSQLParser.KW_DOMAIN - 176)) | (1 << (PostgreSQLParser.KW_DOUBLE - 176)) | (1 << (PostgreSQLParser.KW_DROP - 176)) | (1 << (PostgreSQLParser.KW_EACH - 176)) | (1 << (PostgreSQLParser.KW_ENABLE - 176)) | (1 << (PostgreSQLParser.KW_ENCODING - 176)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 176)) | (1 << (PostgreSQLParser.KW_ENUM - 176)) | (1 << (PostgreSQLParser.KW_ESCAPE - 176)) | (1 << (PostgreSQLParser.KW_EVENT - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 176)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 176)) | (1 << (PostgreSQLParser.KW_EXECUTE - 176)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 176)) | (1 << (PostgreSQLParser.KW_EXTENSION - 176)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 176)) | (1 << (PostgreSQLParser.KW_FAMILY - 176)) | (1 << (PostgreSQLParser.KW_FIRST - 176)))) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & ((1 << (PostgreSQLParser.KW_FOLLOWING - 208)) | (1 << (PostgreSQLParser.KW_FORCE - 208)) | (1 << (PostgreSQLParser.KW_FORWARD - 208)) | (1 << (PostgreSQLParser.KW_FUNCTION - 208)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 208)) | (1 << (PostgreSQLParser.KW_GLOBAL - 208)) | (1 << (PostgreSQLParser.KW_GRANTED - 208)) | (1 << (PostgreSQLParser.KW_HANDLER - 208)) | (1 << (PostgreSQLParser.KW_HEADER - 208)) | (1 << (PostgreSQLParser.KW_HOLD - 208)) | (1 << (PostgreSQLParser.KW_HOUR - 208)) | (1 << (PostgreSQLParser.KW_IDENTITY - 208)) | (1 << (PostgreSQLParser.KW_IF - 208)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 208)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 208)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 208)) | (1 << (PostgreSQLParser.KW_INCLUDING - 208)) | (1 << (PostgreSQLParser.KW_INCREMENT - 208)) | (1 << (PostgreSQLParser.KW_INDEX - 208)) | (1 << (PostgreSQLParser.KW_INDEXES - 208)) | (1 << (PostgreSQLParser.KW_INHERIT - 208)) | (1 << (PostgreSQLParser.KW_INHERITS - 208)) | (1 << (PostgreSQLParser.KW_INLINE - 208)))) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & ((1 << (PostgreSQLParser.KW_INSENSITIVE - 240)) | (1 << (PostgreSQLParser.KW_INSERT - 240)) | (1 << (PostgreSQLParser.KW_INSTEAD - 240)) | (1 << (PostgreSQLParser.KW_INVOKER - 240)) | (1 << (PostgreSQLParser.KW_ISOLATION - 240)) | (1 << (PostgreSQLParser.KW_KEY - 240)) | (1 << (PostgreSQLParser.KW_LABEL - 240)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 240)) | (1 << (PostgreSQLParser.KW_LARGE - 240)) | (1 << (PostgreSQLParser.KW_LAST - 240)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 240)) | (1 << (PostgreSQLParser.KW_LEVEL - 240)) | (1 << (PostgreSQLParser.KW_LISTEN - 240)) | (1 << (PostgreSQLParser.KW_LOAD - 240)) | (1 << (PostgreSQLParser.KW_LOCAL - 240)) | (1 << (PostgreSQLParser.KW_LOCATION - 240)) | (1 << (PostgreSQLParser.KW_LOCK - 240)) | (1 << (PostgreSQLParser.KW_MAPPING - 240)) | (1 << (PostgreSQLParser.KW_MATCH - 240)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 240)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 240)) | (1 << (PostgreSQLParser.KW_MINUTE - 240)) | (1 << (PostgreSQLParser.KW_MINVALUE - 240)) | (1 << (PostgreSQLParser.KW_MODE - 240)) | (1 << (PostgreSQLParser.KW_MONTH - 240)) | (1 << (PostgreSQLParser.KW_MOVE - 240)) | (1 << (PostgreSQLParser.KW_NAME - 240)) | (1 << (PostgreSQLParser.KW_NAMES - 240)) | (1 << (PostgreSQLParser.KW_NEXT - 240)) | (1 << (PostgreSQLParser.KW_NO - 240)) | (1 << (PostgreSQLParser.KW_NOTHING - 240)) | (1 << (PostgreSQLParser.KW_NOTIFY - 240)))) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & ((1 << (PostgreSQLParser.KW_NOWAIT - 272)) | (1 << (PostgreSQLParser.KW_NULLS - 272)) | (1 << (PostgreSQLParser.KW_OBJECT - 272)) | (1 << (PostgreSQLParser.KW_OF - 272)) | (1 << (PostgreSQLParser.KW_OFF - 272)) | (1 << (PostgreSQLParser.KW_OIDS - 272)) | (1 << (PostgreSQLParser.KW_OPERATOR - 272)) | (1 << (PostgreSQLParser.KW_OPTION - 272)) | (1 << (PostgreSQLParser.KW_OPTIONS - 272)) | (1 << (PostgreSQLParser.KW_OWNED - 272)) | (1 << (PostgreSQLParser.KW_OWNER - 272)) | (1 << (PostgreSQLParser.KW_PARSER - 272)) | (1 << (PostgreSQLParser.KW_PARTIAL - 272)) | (1 << (PostgreSQLParser.KW_PARTITION - 272)) | (1 << (PostgreSQLParser.KW_PASSING - 272)) | (1 << (PostgreSQLParser.KW_PASSWORD - 272)) | (1 << (PostgreSQLParser.KW_PLANS - 272)) | (1 << (PostgreSQLParser.KW_PRECEDING - 272)) | (1 << (PostgreSQLParser.KW_PREPARE - 272)) | (1 << (PostgreSQLParser.KW_PREPARED - 272)) | (1 << (PostgreSQLParser.KW_PRESERVE - 272)) | (1 << (PostgreSQLParser.KW_PRIOR - 272)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 272)) | (1 << (PostgreSQLParser.KW_PROGRAM - 272)) | (1 << (PostgreSQLParser.KW_QUOTE - 272)) | (1 << (PostgreSQLParser.KW_RANGE - 272)) | (1 << (PostgreSQLParser.KW_READ - 272)) | (1 << (PostgreSQLParser.KW_REASSIGN - 272)) | (1 << (PostgreSQLParser.KW_RECHECK - 272)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 272)))) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & ((1 << (PostgreSQLParser.KW_REF - 304)) | (1 << (PostgreSQLParser.KW_REFRESH - 304)) | (1 << (PostgreSQLParser.KW_REINDEX - 304)) | (1 << (PostgreSQLParser.KW_RELATIVE - 304)) | (1 << (PostgreSQLParser.KW_RELEASE - 304)) | (1 << (PostgreSQLParser.KW_RENAME - 304)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 304)) | (1 << (PostgreSQLParser.KW_REPLACE - 304)) | (1 << (PostgreSQLParser.KW_REPLICA - 304)) | (1 << (PostgreSQLParser.KW_RESET - 304)) | (1 << (PostgreSQLParser.KW_RESTART - 304)) | (1 << (PostgreSQLParser.KW_RESTRICT - 304)) | (1 << (PostgreSQLParser.KW_RETURNS - 304)) | (1 << (PostgreSQLParser.KW_REVOKE - 304)) | (1 << (PostgreSQLParser.KW_ROLE - 304)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 304)) | (1 << (PostgreSQLParser.KW_ROWS - 304)) | (1 << (PostgreSQLParser.KW_RULE - 304)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 304)) | (1 << (PostgreSQLParser.KW_SCHEMA - 304)) | (1 << (PostgreSQLParser.KW_SCROLL - 304)) | (1 << (PostgreSQLParser.KW_SEARCH - 304)) | (1 << (PostgreSQLParser.KW_SECOND - 304)) | (1 << (PostgreSQLParser.KW_SECURITY - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 304)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 304)) | (1 << (PostgreSQLParser.KW_SERVER - 304)) | (1 << (PostgreSQLParser.KW_SESSION - 304)) | (1 << (PostgreSQLParser.KW_SET - 304)) | (1 << (PostgreSQLParser.KW_SHARE - 304)) | (1 << (PostgreSQLParser.KW_SHOW - 304)))) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & ((1 << (PostgreSQLParser.KW_SIMPLE - 336)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 336)) | (1 << (PostgreSQLParser.KW_STABLE - 336)) | (1 << (PostgreSQLParser.KW_STANDALONE - 336)) | (1 << (PostgreSQLParser.KW_START - 336)) | (1 << (PostgreSQLParser.KW_STATEMENT - 336)) | (1 << (PostgreSQLParser.KW_STATISTICS - 336)) | (1 << (PostgreSQLParser.KW_STDIN - 336)) | (1 << (PostgreSQLParser.KW_STDOUT - 336)) | (1 << (PostgreSQLParser.KW_STORAGE - 336)) | (1 << (PostgreSQLParser.KW_STRICT - 336)) | (1 << (PostgreSQLParser.KW_STRIP - 336)) | (1 << (PostgreSQLParser.KW_SYSID - 336)) | (1 << (PostgreSQLParser.KW_SYSTEM - 336)) | (1 << (PostgreSQLParser.KW_TABLES - 336)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 336)) | (1 << (PostgreSQLParser.KW_TEMP - 336)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 336)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 336)) | (1 << (PostgreSQLParser.KW_TEXT - 336)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 336)) | (1 << (PostgreSQLParser.KW_TRIGGER - 336)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 336)) | (1 << (PostgreSQLParser.KW_TRUSTED - 336)) | (1 << (PostgreSQLParser.KW_TYPE - 336)) | (1 << (PostgreSQLParser.KW_TYPES - 336)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 336)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 336)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 336)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 336)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 336)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 336)))) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & ((1 << (PostgreSQLParser.KW_UNTIL - 368)) | (1 << (PostgreSQLParser.KW_UPDATE - 368)) | (1 << (PostgreSQLParser.KW_VACUUM - 368)) | (1 << (PostgreSQLParser.KW_VALID - 368)) | (1 << (PostgreSQLParser.KW_VALIDATE - 368)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 368)) | (1 << (PostgreSQLParser.KW_VARYING - 368)) | (1 << (PostgreSQLParser.KW_VERSION - 368)) | (1 << (PostgreSQLParser.KW_VIEW - 368)) | (1 << (PostgreSQLParser.KW_VOLATILE - 368)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 368)) | (1 << (PostgreSQLParser.KW_WITHOUT - 368)) | (1 << (PostgreSQLParser.KW_WORK - 368)) | (1 << (PostgreSQLParser.KW_WRAPPER - 368)) | (1 << (PostgreSQLParser.KW_WRITE - 368)) | (1 << (PostgreSQLParser.KW_XML - 368)) | (1 << (PostgreSQLParser.KW_YEAR - 368)) | (1 << (PostgreSQLParser.KW_YES - 368)) | (1 << (PostgreSQLParser.KW_ZONE - 368)) | (1 << (PostgreSQLParser.KW_BETWEEN - 368)) | (1 << (PostgreSQLParser.KW_BIGINT - 368)) | (1 << (PostgreSQLParser.KW_BIT - 368)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 368)) | (1 << (PostgreSQLParser.KW_CHAR - 368)) | (1 << (PostgreSQLParser.KW_CHARACTER - 368)) | (1 << (PostgreSQLParser.KW_COALESCE - 368)) | (1 << (PostgreSQLParser.KW_DEC - 368)) | (1 << (PostgreSQLParser.KW_DECIMAL - 368)) | (1 << (PostgreSQLParser.KW_EXISTS - 368)) | (1 << (PostgreSQLParser.KW_EXTRACT - 368)) | (1 << (PostgreSQLParser.KW_FLOAT - 368)) | (1 << (PostgreSQLParser.KW_GREATEST - 368)))) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & ((1 << (PostgreSQLParser.KW_INOUT - 400)) | (1 << (PostgreSQLParser.KW_INT - 400)) | (1 << (PostgreSQLParser.KW_INTEGER - 400)) | (1 << (PostgreSQLParser.KW_INTERVAL - 400)) | (1 << (PostgreSQLParser.KW_LEAST - 400)) | (1 << (PostgreSQLParser.KW_NATIONAL - 400)) | (1 << (PostgreSQLParser.KW_NCHAR - 400)) | (1 << (PostgreSQLParser.KW_NONE - 400)) | (1 << (PostgreSQLParser.KW_NULLIF - 400)) | (1 << (PostgreSQLParser.KW_NUMERIC - 400)) | (1 << (PostgreSQLParser.KW_OVERLAY - 400)) | (1 << (PostgreSQLParser.KW_POSITION - 400)) | (1 << (PostgreSQLParser.KW_PRECISION - 400)) | (1 << (PostgreSQLParser.KW_REAL - 400)) | (1 << (PostgreSQLParser.KW_ROW - 400)) | (1 << (PostgreSQLParser.KW_SETOF - 400)) | (1 << (PostgreSQLParser.KW_SMALLINT - 400)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 400)) | (1 << (PostgreSQLParser.KW_TIME - 400)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 400)) | (1 << (PostgreSQLParser.KW_TREAT - 400)) | (1 << (PostgreSQLParser.KW_TRIM - 400)) | (1 << (PostgreSQLParser.KW_VALUES - 400)) | (1 << (PostgreSQLParser.KW_VARCHAR - 400)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 400)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 400)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 400)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 400)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 400)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 400)) | (1 << (PostgreSQLParser.KW_XMLPI - 400)) | (1 << (PostgreSQLParser.KW_XMLROOT - 400)))) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & ((1 << (PostgreSQLParser.KW_XMLSERIALIZE - 432)) | (1 << (PostgreSQLParser.KW_CALL - 432)) | (1 << (PostgreSQLParser.KW_CURRENT - 432)) | (1 << (PostgreSQLParser.KW_ATTACH - 432)) | (1 << (PostgreSQLParser.KW_DETACH - 432)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 432)) | (1 << (PostgreSQLParser.KW_GENERATED - 432)) | (1 << (PostgreSQLParser.KW_LOGGED - 432)) | (1 << (PostgreSQLParser.KW_STORED - 432)) | (1 << (PostgreSQLParser.KW_INCLUDE - 432)) | (1 << (PostgreSQLParser.KW_ROUTINE - 432)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 432)) | (1 << (PostgreSQLParser.KW_IMPORT - 432)) | (1 << (PostgreSQLParser.KW_POLICY - 432)) | (1 << (PostgreSQLParser.KW_METHOD - 432)) | (1 << (PostgreSQLParser.KW_REFERENCING - 432)) | (1 << (PostgreSQLParser.KW_NEW - 432)) | (1 << (PostgreSQLParser.KW_OLD - 432)) | (1 << (PostgreSQLParser.KW_VALUE - 432)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 432)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 432)) | (1 << (PostgreSQLParser.KW_OUT - 432)) | (1 << (PostgreSQLParser.KW_ROUTINES - 432)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 432)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 432)) | (1 << (PostgreSQLParser.KW_INPUT - 432)) | (1 << (PostgreSQLParser.KW_SUPPORT - 432)) | (1 << (PostgreSQLParser.KW_PARALLEL - 432)) | (1 << (PostgreSQLParser.KW_SQL - 432)) | (1 << (PostgreSQLParser.KW_DEPENDS - 432)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 432)))) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & ((1 << (PostgreSQLParser.KW_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_SKIP - 464)) | (1 << (PostgreSQLParser.KW_LOCKED - 464)) | (1 << (PostgreSQLParser.KW_TIES - 464)) | (1 << (PostgreSQLParser.KW_ROLLUP - 464)) | (1 << (PostgreSQLParser.KW_CUBE - 464)) | (1 << (PostgreSQLParser.KW_GROUPING - 464)) | (1 << (PostgreSQLParser.KW_SETS - 464)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 464)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 464)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 464)) | (1 << (PostgreSQLParser.KW_COLUMNS - 464)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 464)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 464)) | (1 << (PostgreSQLParser.KW_WITHIN - 464)) | (1 << (PostgreSQLParser.KW_FILTER - 464)) | (1 << (PostgreSQLParser.KW_GROUPS - 464)) | (1 << (PostgreSQLParser.KW_OTHERS - 464)) | (1 << (PostgreSQLParser.KW_NFC - 464)) | (1 << (PostgreSQLParser.KW_NFD - 464)) | (1 << (PostgreSQLParser.KW_NFKC - 464)) | (1 << (PostgreSQLParser.KW_NFKD - 464)) | (1 << (PostgreSQLParser.KW_UESCAPE - 464)) | (1 << (PostgreSQLParser.KW_VIEWS - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 464)) | (1 << (PostgreSQLParser.KW_DUMP - 464)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 464)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_ERROR - 464)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 464)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 464)))) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & ((1 << (PostgreSQLParser.KW_ALIAS - 496)) | (1 << (PostgreSQLParser.KW_CONSTANT - 496)) | (1 << (PostgreSQLParser.KW_PERFORM - 496)) | (1 << (PostgreSQLParser.KW_GET - 496)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 496)) | (1 << (PostgreSQLParser.KW_STACKED - 496)) | (1 << (PostgreSQLParser.KW_ELSIF - 496)) | (1 << (PostgreSQLParser.KW_REVERSE - 496)) | (1 << (PostgreSQLParser.KW_SLICE - 496)) | (1 << (PostgreSQLParser.KW_EXIT - 496)) | (1 << (PostgreSQLParser.KW_RETURN - 496)) | (1 << (PostgreSQLParser.KW_QUERY - 496)) | (1 << (PostgreSQLParser.KW_RAISE - 496)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 496)) | (1 << (PostgreSQLParser.KW_DEBUG - 496)) | (1 << (PostgreSQLParser.KW_LOG - 496)) | (1 << (PostgreSQLParser.KW_INFO - 496)) | (1 << (PostgreSQLParser.KW_NOTICE - 496)) | (1 << (PostgreSQLParser.KW_WARNING - 496)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 496)) | (1 << (PostgreSQLParser.KW_ASSERT - 496)) | (1 << (PostgreSQLParser.KW_OPEN - 496)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 3036;
				this.copy_generic_opt_arg();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public copy_generic_opt_arg(): Copy_generic_opt_argContext {
		let _localctx: Copy_generic_opt_argContext = new Copy_generic_opt_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 182, PostgreSQLParser.RULE_copy_generic_opt_arg);
		try {
			this.state = 3046;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3039;
				this.opt_boolean_or_string();
				}
				break;
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3040;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.STAR:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3041;
				this.match(PostgreSQLParser.STAR);
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3042;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3043;
				this.copy_generic_opt_arg_list();
				this.state = 3044;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 copy_generic_opt_arg_list(): Copy_generic_opt_arg_listContext {
		let _localctx: Copy_generic_opt_arg_listContext = new Copy_generic_opt_arg_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 184, PostgreSQLParser.RULE_copy_generic_opt_arg_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3048;
			this.copy_generic_opt_arg_list_item();
			this.state = 3053;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3049;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3050;
				this.copy_generic_opt_arg_list_item();
				}
				}
				this.state = 3055;
				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 copy_generic_opt_arg_list_item(): Copy_generic_opt_arg_list_itemContext {
		let _localctx: Copy_generic_opt_arg_list_itemContext = new Copy_generic_opt_arg_list_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 186, PostgreSQLParser.RULE_copy_generic_opt_arg_list_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3056;
			this.opt_boolean_or_string_column();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createstmt(): CreatestmtContext {
		let _localctx: CreatestmtContext = new CreatestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 188, PostgreSQLParser.RULE_createstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3058;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3060;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 352)))) !== 0)) {
				{
				this.state = 3059;
				this.opttemp();
				}
			}

			this.state = 3062;
			this.match(PostgreSQLParser.KW_TABLE);
			this.state = 3064;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 152, this._ctx) ) {
			case 1:
				{
				this.state = 3063;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 3066;
			this.table_name_create();
			this.state = 3132;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
				{
				this.state = 3067;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3069;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CHECK - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)) | (1 << (PostgreSQLParser.KW_FOREIGN - 33)))) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & ((1 << (PostgreSQLParser.KW_PRIMARY - 85)) | (1 << (PostgreSQLParser.KW_TABLE - 85)) | (1 << (PostgreSQLParser.KW_UNIQUE - 85)) | (1 << (PostgreSQLParser.KW_IS - 85)))) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & ((1 << (PostgreSQLParser.KW_LIKE - 120)) | (1 << (PostgreSQLParser.KW_OUTER - 120)) | (1 << (PostgreSQLParser.KW_OVER - 120)) | (1 << (PostgreSQLParser.KW_ABORT - 120)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 120)) | (1 << (PostgreSQLParser.KW_ACCESS - 120)) | (1 << (PostgreSQLParser.KW_ACTION - 120)) | (1 << (PostgreSQLParser.KW_ADD - 120)) | (1 << (PostgreSQLParser.KW_ADMIN - 120)) | (1 << (PostgreSQLParser.KW_AFTER - 120)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 120)) | (1 << (PostgreSQLParser.KW_ALSO - 120)) | (1 << (PostgreSQLParser.KW_ALTER - 120)) | (1 << (PostgreSQLParser.KW_ALWAYS - 120)) | (1 << (PostgreSQLParser.KW_ASSERTION - 120)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 120)) | (1 << (PostgreSQLParser.KW_AT - 120)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 120)) | (1 << (PostgreSQLParser.KW_BACKWARD - 120)) | (1 << (PostgreSQLParser.KW_BEFORE - 120)) | (1 << (PostgreSQLParser.KW_BEGIN - 120)) | (1 << (PostgreSQLParser.KW_BY - 120)) | (1 << (PostgreSQLParser.KW_CACHE - 120)) | (1 << (PostgreSQLParser.KW_CALLED - 120)) | (1 << (PostgreSQLParser.KW_CASCADE - 120)) | (1 << (PostgreSQLParser.KW_CASCADED - 120)))) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & ((1 << (PostgreSQLParser.KW_CATALOG - 152)) | (1 << (PostgreSQLParser.KW_CHAIN - 152)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 152)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 152)) | (1 << (PostgreSQLParser.KW_CLASS - 152)) | (1 << (PostgreSQLParser.KW_CLOSE - 152)) | (1 << (PostgreSQLParser.KW_CLUSTER - 152)) | (1 << (PostgreSQLParser.KW_COMMENT - 152)) | (1 << (PostgreSQLParser.KW_COMMENTS - 152)) | (1 << (PostgreSQLParser.KW_COMMIT - 152)) | (1 << (PostgreSQLParser.KW_COMMITTED - 152)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 152)) | (1 << (PostgreSQLParser.KW_CONNECTION - 152)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 152)) | (1 << (PostgreSQLParser.KW_CONTENT - 152)) | (1 << (PostgreSQLParser.KW_CONTINUE - 152)) | (1 << (PostgreSQLParser.KW_CONVERSION - 152)) | (1 << (PostgreSQLParser.KW_COPY - 152)) | (1 << (PostgreSQLParser.KW_COST - 152)) | (1 << (PostgreSQLParser.KW_CSV - 152)) | (1 << (PostgreSQLParser.KW_CURSOR - 152)) | (1 << (PostgreSQLParser.KW_CYCLE - 152)) | (1 << (PostgreSQLParser.KW_DATA - 152)) | (1 << (PostgreSQLParser.KW_DATABASE - 152)) | (1 << (PostgreSQLParser.KW_DAY - 152)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 152)) | (1 << (PostgreSQLParser.KW_DECLARE - 152)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 152)) | (1 << (PostgreSQLParser.KW_DEFERRED - 152)) | (1 << (PostgreSQLParser.KW_DEFINER - 152)) | (1 << (PostgreSQLParser.KW_DELETE - 152)) | (1 << (PostgreSQLParser.KW_DELIMITER - 152)))) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & ((1 << (PostgreSQLParser.KW_DELIMITERS - 184)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 184)) | (1 << (PostgreSQLParser.KW_DISABLE - 184)) | (1 << (PostgreSQLParser.KW_DISCARD - 184)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 184)) | (1 << (PostgreSQLParser.KW_DOMAIN - 184)) | (1 << (PostgreSQLParser.KW_DOUBLE - 184)) | (1 << (PostgreSQLParser.KW_DROP - 184)) | (1 << (PostgreSQLParser.KW_EACH - 184)) | (1 << (PostgreSQLParser.KW_ENABLE - 184)) | (1 << (PostgreSQLParser.KW_ENCODING - 184)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 184)) | (1 << (PostgreSQLParser.KW_ENUM - 184)) | (1 << (PostgreSQLParser.KW_ESCAPE - 184)) | (1 << (PostgreSQLParser.KW_EVENT - 184)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 184)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 184)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 184)) | (1 << (PostgreSQLParser.KW_EXECUTE - 184)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 184)) | (1 << (PostgreSQLParser.KW_EXTENSION - 184)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 184)) | (1 << (PostgreSQLParser.KW_FAMILY - 184)) | (1 << (PostgreSQLParser.KW_FIRST - 184)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 184)) | (1 << (PostgreSQLParser.KW_FORCE - 184)) | (1 << (PostgreSQLParser.KW_FORWARD - 184)) | (1 << (PostgreSQLParser.KW_FUNCTION - 184)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 184)) | (1 << (PostgreSQLParser.KW_GLOBAL - 184)) | (1 << (PostgreSQLParser.KW_GRANTED - 184)) | (1 << (PostgreSQLParser.KW_HANDLER - 184)))) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & ((1 << (PostgreSQLParser.KW_HEADER - 216)) | (1 << (PostgreSQLParser.KW_HOLD - 216)) | (1 << (PostgreSQLParser.KW_HOUR - 216)) | (1 << (PostgreSQLParser.KW_IDENTITY - 216)) | (1 << (PostgreSQLParser.KW_IF - 216)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 216)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 216)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 216)) | (1 << (PostgreSQLParser.KW_INCLUDING - 216)) | (1 << (PostgreSQLParser.KW_INCREMENT - 216)) | (1 << (PostgreSQLParser.KW_INDEX - 216)) | (1 << (PostgreSQLParser.KW_INDEXES - 216)) | (1 << (PostgreSQLParser.KW_INHERIT - 216)) | (1 << (PostgreSQLParser.KW_INHERITS - 216)) | (1 << (PostgreSQLParser.KW_INLINE - 216)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 216)) | (1 << (PostgreSQLParser.KW_INSERT - 216)) | (1 << (PostgreSQLParser.KW_INSTEAD - 216)) | (1 << (PostgreSQLParser.KW_INVOKER - 216)) | (1 << (PostgreSQLParser.KW_ISOLATION - 216)) | (1 << (PostgreSQLParser.KW_KEY - 216)) | (1 << (PostgreSQLParser.KW_LABEL - 216)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 216)))) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & ((1 << (PostgreSQLParser.KW_LARGE - 248)) | (1 << (PostgreSQLParser.KW_LAST - 248)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 248)) | (1 << (PostgreSQLParser.KW_LEVEL - 248)) | (1 << (PostgreSQLParser.KW_LISTEN - 248)) | (1 << (PostgreSQLParser.KW_LOAD - 248)) | (1 << (PostgreSQLParser.KW_LOCAL - 248)) | (1 << (PostgreSQLParser.KW_LOCATION - 248)) | (1 << (PostgreSQLParser.KW_LOCK - 248)) | (1 << (PostgreSQLParser.KW_MAPPING - 248)) | (1 << (PostgreSQLParser.KW_MATCH - 248)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 248)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 248)) | (1 << (PostgreSQLParser.KW_MINUTE - 248)) | (1 << (PostgreSQLParser.KW_MINVALUE - 248)) | (1 << (PostgreSQLParser.KW_MODE - 248)) | (1 << (PostgreSQLParser.KW_MONTH - 248)) | (1 << (PostgreSQLParser.KW_MOVE - 248)) | (1 << (PostgreSQLParser.KW_NAME - 248)) | (1 << (PostgreSQLParser.KW_NAMES - 248)) | (1 << (PostgreSQLParser.KW_NEXT - 248)) | (1 << (PostgreSQLParser.KW_NO - 248)) | (1 << (PostgreSQLParser.KW_NOTHING - 248)) | (1 << (PostgreSQLParser.KW_NOTIFY - 248)) | (1 << (PostgreSQLParser.KW_NOWAIT - 248)) | (1 << (PostgreSQLParser.KW_NULLS - 248)) | (1 << (PostgreSQLParser.KW_OBJECT - 248)) | (1 << (PostgreSQLParser.KW_OF - 248)) | (1 << (PostgreSQLParser.KW_OFF - 248)) | (1 << (PostgreSQLParser.KW_OIDS - 248)) | (1 << (PostgreSQLParser.KW_OPERATOR - 248)) | (1 << (PostgreSQLParser.KW_OPTION - 248)))) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & ((1 << (PostgreSQLParser.KW_OPTIONS - 280)) | (1 << (PostgreSQLParser.KW_OWNED - 280)) | (1 << (PostgreSQLParser.KW_OWNER - 280)) | (1 << (PostgreSQLParser.KW_PARSER - 280)) | (1 << (PostgreSQLParser.KW_PARTIAL - 280)) | (1 << (PostgreSQLParser.KW_PARTITION - 280)) | (1 << (PostgreSQLParser.KW_PASSING - 280)) | (1 << (PostgreSQLParser.KW_PASSWORD - 280)) | (1 << (PostgreSQLParser.KW_PLANS - 280)) | (1 << (PostgreSQLParser.KW_PRECEDING - 280)) | (1 << (PostgreSQLParser.KW_PREPARE - 280)) | (1 << (PostgreSQLParser.KW_PREPARED - 280)) | (1 << (PostgreSQLParser.KW_PRESERVE - 280)) | (1 << (PostgreSQLParser.KW_PRIOR - 280)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 280)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 280)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 280)) | (1 << (PostgreSQLParser.KW_PROGRAM - 280)) | (1 << (PostgreSQLParser.KW_QUOTE - 280)) | (1 << (PostgreSQLParser.KW_RANGE - 280)) | (1 << (PostgreSQLParser.KW_READ - 280)) | (1 << (PostgreSQLParser.KW_REASSIGN - 280)) | (1 << (PostgreSQLParser.KW_RECHECK - 280)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 280)) | (1 << (PostgreSQLParser.KW_REF - 280)) | (1 << (PostgreSQLParser.KW_REFRESH - 280)) | (1 << (PostgreSQLParser.KW_REINDEX - 280)) | (1 << (PostgreSQLParser.KW_RELATIVE - 280)) | (1 << (PostgreSQLParser.KW_RELEASE - 280)) | (1 << (PostgreSQLParser.KW_RENAME - 280)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 280)) | (1 << (PostgreSQLParser.KW_REPLACE - 280)))) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & ((1 << (PostgreSQLParser.KW_REPLICA - 312)) | (1 << (PostgreSQLParser.KW_RESET - 312)) | (1 << (PostgreSQLParser.KW_RESTART - 312)) | (1 << (PostgreSQLParser.KW_RESTRICT - 312)) | (1 << (PostgreSQLParser.KW_RETURNS - 312)) | (1 << (PostgreSQLParser.KW_REVOKE - 312)) | (1 << (PostgreSQLParser.KW_ROLE - 312)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 312)) | (1 << (PostgreSQLParser.KW_ROWS - 312)) | (1 << (PostgreSQLParser.KW_RULE - 312)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 312)) | (1 << (PostgreSQLParser.KW_SCHEMA - 312)) | (1 << (PostgreSQLParser.KW_SCROLL - 312)) | (1 << (PostgreSQLParser.KW_SEARCH - 312)) | (1 << (PostgreSQLParser.KW_SECOND - 312)) | (1 << (PostgreSQLParser.KW_SECURITY - 312)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 312)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 312)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 312)) | (1 << (PostgreSQLParser.KW_SERVER - 312)) | (1 << (PostgreSQLParser.KW_SESSION - 312)) | (1 << (PostgreSQLParser.KW_SET - 312)) | (1 << (PostgreSQLParser.KW_SHARE - 312)) | (1 << (PostgreSQLParser.KW_SHOW - 312)) | (1 << (PostgreSQLParser.KW_SIMPLE - 312)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 312)) | (1 << (PostgreSQLParser.KW_STABLE - 312)) | (1 << (PostgreSQLParser.KW_STANDALONE - 312)) | (1 << (PostgreSQLParser.KW_START - 312)) | (1 << (PostgreSQLParser.KW_STATEMENT - 312)) | (1 << (PostgreSQLParser.KW_STATISTICS - 312)) | (1 << (PostgreSQLParser.KW_STDIN - 312)))) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & ((1 << (PostgreSQLParser.KW_STDOUT - 344)) | (1 << (PostgreSQLParser.KW_STORAGE - 344)) | (1 << (PostgreSQLParser.KW_STRICT - 344)) | (1 << (PostgreSQLParser.KW_STRIP - 344)) | (1 << (PostgreSQLParser.KW_SYSID - 344)) | (1 << (PostgreSQLParser.KW_SYSTEM - 344)) | (1 << (PostgreSQLParser.KW_TABLES - 344)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 344)) | (1 << (PostgreSQLParser.KW_TEMP - 344)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 344)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 344)) | (1 << (PostgreSQLParser.KW_TEXT - 344)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 344)) | (1 << (PostgreSQLParser.KW_TRIGGER - 344)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 344)) | (1 << (PostgreSQLParser.KW_TRUSTED - 344)) | (1 << (PostgreSQLParser.KW_TYPE - 344)) | (1 << (PostgreSQLParser.KW_TYPES - 344)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 344)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 344)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 344)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 344)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 344)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 344)) | (1 << (PostgreSQLParser.KW_UNTIL - 344)) | (1 << (PostgreSQLParser.KW_UPDATE - 344)) | (1 << (PostgreSQLParser.KW_VACUUM - 344)) | (1 << (PostgreSQLParser.KW_VALID - 344)) | (1 << (PostgreSQLParser.KW_VALIDATE - 344)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 344)) | (1 << (PostgreSQLParser.KW_VARYING - 344)) | (1 << (PostgreSQLParser.KW_VERSION - 344)))) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & ((1 << (PostgreSQLParser.KW_VIEW - 376)) | (1 << (PostgreSQLParser.KW_VOLATILE - 376)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 376)) | (1 << (PostgreSQLParser.KW_WITHOUT - 376)) | (1 << (PostgreSQLParser.KW_WORK - 376)) | (1 << (PostgreSQLParser.KW_WRAPPER - 376)) | (1 << (PostgreSQLParser.KW_WRITE - 376)) | (1 << (PostgreSQLParser.KW_XML - 376)) | (1 << (PostgreSQLParser.KW_YEAR - 376)) | (1 << (PostgreSQLParser.KW_YES - 376)) | (1 << (PostgreSQLParser.KW_ZONE - 376)) | (1 << (PostgreSQLParser.KW_BETWEEN - 376)) | (1 << (PostgreSQLParser.KW_BIGINT - 376)) | (1 << (PostgreSQLParser.KW_BIT - 376)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 376)) | (1 << (PostgreSQLParser.KW_CHAR - 376)) | (1 << (PostgreSQLParser.KW_CHARACTER - 376)) | (1 << (PostgreSQLParser.KW_COALESCE - 376)) | (1 << (PostgreSQLParser.KW_DEC - 376)) | (1 << (PostgreSQLParser.KW_DECIMAL - 376)) | (1 << (PostgreSQLParser.KW_EXISTS - 376)) | (1 << (PostgreSQLParser.KW_EXTRACT - 376)) | (1 << (PostgreSQLParser.KW_FLOAT - 376)) | (1 << (PostgreSQLParser.KW_GREATEST - 376)) | (1 << (PostgreSQLParser.KW_INOUT - 376)) | (1 << (PostgreSQLParser.KW_INT - 376)) | (1 << (PostgreSQLParser.KW_INTEGER - 376)) | (1 << (PostgreSQLParser.KW_INTERVAL - 376)) | (1 << (PostgreSQLParser.KW_LEAST - 376)) | (1 << (PostgreSQLParser.KW_NATIONAL - 376)) | (1 << (PostgreSQLParser.KW_NCHAR - 376)) | (1 << (PostgreSQLParser.KW_NONE - 376)))) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & ((1 << (PostgreSQLParser.KW_NULLIF - 408)) | (1 << (PostgreSQLParser.KW_NUMERIC - 408)) | (1 << (PostgreSQLParser.KW_OVERLAY - 408)) | (1 << (PostgreSQLParser.KW_POSITION - 408)) | (1 << (PostgreSQLParser.KW_PRECISION - 408)) | (1 << (PostgreSQLParser.KW_REAL - 408)) | (1 << (PostgreSQLParser.KW_ROW - 408)) | (1 << (PostgreSQLParser.KW_SETOF - 408)) | (1 << (PostgreSQLParser.KW_SMALLINT - 408)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 408)) | (1 << (PostgreSQLParser.KW_TIME - 408)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 408)) | (1 << (PostgreSQLParser.KW_TREAT - 408)) | (1 << (PostgreSQLParser.KW_TRIM - 408)) | (1 << (PostgreSQLParser.KW_VALUES - 408)) | (1 << (PostgreSQLParser.KW_VARCHAR - 408)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 408)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 408)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 408)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 408)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 408)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 408)) | (1 << (PostgreSQLParser.KW_XMLPI - 408)) | (1 << (PostgreSQLParser.KW_XMLROOT - 408)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 408)) | (1 << (PostgreSQLParser.KW_CALL - 408)) | (1 << (PostgreSQLParser.KW_CURRENT - 408)) | (1 << (PostgreSQLParser.KW_ATTACH - 408)) | (1 << (PostgreSQLParser.KW_DETACH - 408)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 408)) | (1 << (PostgreSQLParser.KW_GENERATED - 408)) | (1 << (PostgreSQLParser.KW_LOGGED - 408)))) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & ((1 << (PostgreSQLParser.KW_STORED - 440)) | (1 << (PostgreSQLParser.KW_INCLUDE - 440)) | (1 << (PostgreSQLParser.KW_ROUTINE - 440)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 440)) | (1 << (PostgreSQLParser.KW_IMPORT - 440)) | (1 << (PostgreSQLParser.KW_POLICY - 440)) | (1 << (PostgreSQLParser.KW_METHOD - 440)) | (1 << (PostgreSQLParser.KW_REFERENCING - 440)) | (1 << (PostgreSQLParser.KW_NEW - 440)) | (1 << (PostgreSQLParser.KW_OLD - 440)) | (1 << (PostgreSQLParser.KW_VALUE - 440)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 440)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 440)) | (1 << (PostgreSQLParser.KW_OUT - 440)) | (1 << (PostgreSQLParser.KW_ROUTINES - 440)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 440)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 440)) | (1 << (PostgreSQLParser.KW_INPUT - 440)) | (1 << (PostgreSQLParser.KW_SUPPORT - 440)) | (1 << (PostgreSQLParser.KW_PARALLEL - 440)) | (1 << (PostgreSQLParser.KW_SQL - 440)) | (1 << (PostgreSQLParser.KW_DEPENDS - 440)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 440)) | (1 << (PostgreSQLParser.KW_CONFLICT - 440)) | (1 << (PostgreSQLParser.KW_SKIP - 440)) | (1 << (PostgreSQLParser.KW_LOCKED - 440)) | (1 << (PostgreSQLParser.KW_TIES - 440)) | (1 << (PostgreSQLParser.KW_ROLLUP - 440)) | (1 << (PostgreSQLParser.KW_CUBE - 440)) | (1 << (PostgreSQLParser.KW_GROUPING - 440)) | (1 << (PostgreSQLParser.KW_SETS - 440)))) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & ((1 << (PostgreSQLParser.KW_ORDINALITY - 473)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 473)) | (1 << (PostgreSQLParser.KW_COLUMNS - 473)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 473)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 473)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 473)) | (1 << (PostgreSQLParser.KW_WITHIN - 473)) | (1 << (PostgreSQLParser.KW_FILTER - 473)) | (1 << (PostgreSQLParser.KW_GROUPS - 473)) | (1 << (PostgreSQLParser.KW_OTHERS - 473)) | (1 << (PostgreSQLParser.KW_NFC - 473)) | (1 << (PostgreSQLParser.KW_NFD - 473)) | (1 << (PostgreSQLParser.KW_NFKC - 473)) | (1 << (PostgreSQLParser.KW_NFKD - 473)) | (1 << (PostgreSQLParser.KW_UESCAPE - 473)) | (1 << (PostgreSQLParser.KW_VIEWS - 473)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 473)) | (1 << (PostgreSQLParser.KW_DUMP - 473)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 473)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 473)) | (1 << (PostgreSQLParser.KW_ERROR - 473)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 473)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 473)) | (1 << (PostgreSQLParser.KW_ALIAS - 473)) | (1 << (PostgreSQLParser.KW_CONSTANT - 473)) | (1 << (PostgreSQLParser.KW_PERFORM - 473)) | (1 << (PostgreSQLParser.KW_GET - 473)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 473)) | (1 << (PostgreSQLParser.KW_STACKED - 473)) | (1 << (PostgreSQLParser.KW_ELSIF - 473)) | (1 << (PostgreSQLParser.KW_REVERSE - 473)))) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & ((1 << (PostgreSQLParser.KW_SLICE - 506)) | (1 << (PostgreSQLParser.KW_EXIT - 506)) | (1 << (PostgreSQLParser.KW_RETURN - 506)) | (1 << (PostgreSQLParser.KW_QUERY - 506)) | (1 << (PostgreSQLParser.KW_RAISE - 506)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 506)) | (1 << (PostgreSQLParser.KW_DEBUG - 506)) | (1 << (PostgreSQLParser.KW_LOG - 506)) | (1 << (PostgreSQLParser.KW_INFO - 506)) | (1 << (PostgreSQLParser.KW_NOTICE - 506)) | (1 << (PostgreSQLParser.KW_WARNING - 506)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 506)) | (1 << (PostgreSQLParser.KW_ASSERT - 506)) | (1 << (PostgreSQLParser.KW_OPEN - 506)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 3068;
					this.table_column_list();
					}
				}

				this.state = 3071;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3073;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 154, this._ctx) ) {
				case 1:
					{
					this.state = 3072;
					this.optinherit();
					}
					break;
				}
				this.state = 3076;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 155, this._ctx) ) {
				case 1:
					{
					this.state = 3075;
					this.optpartitionspec();
					}
					break;
				}
				this.state = 3079;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3078;
					this.table_access_method_clause();
					}
				}

				this.state = 3082;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 157, this._ctx) ) {
				case 1:
					{
					this.state = 3081;
					this.optwith();
					}
					break;
				}
				this.state = 3085;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ON) {
					{
					this.state = 3084;
					this.oncommitoption();
					}
				}

				this.state = 3088;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 159, this._ctx) ) {
				case 1:
					{
					this.state = 3087;
					this.opttablespace();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_OF:
				{
				this.state = 3090;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 3091;
				this.any_name();
				this.state = 3093;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 160, this._ctx) ) {
				case 1:
					{
					this.state = 3092;
					this.opttypedtableelementlist();
					}
					break;
				}
				this.state = 3096;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 161, this._ctx) ) {
				case 1:
					{
					this.state = 3095;
					this.optpartitionspec();
					}
					break;
				}
				this.state = 3099;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3098;
					this.table_access_method_clause();
					}
				}

				this.state = 3102;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 163, this._ctx) ) {
				case 1:
					{
					this.state = 3101;
					this.optwith();
					}
					break;
				}
				this.state = 3105;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ON) {
					{
					this.state = 3104;
					this.oncommitoption();
					}
				}

				this.state = 3108;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 165, this._ctx) ) {
				case 1:
					{
					this.state = 3107;
					this.opttablespace();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_PARTITION:
				{
				this.state = 3110;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 3111;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 3112;
				this.qualified_name();
				this.state = 3114;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 3113;
					this.opttypedtableelementlist();
					}
				}

				this.state = 3116;
				this.partitionboundspec();
				this.state = 3118;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 167, this._ctx) ) {
				case 1:
					{
					this.state = 3117;
					this.optpartitionspec();
					}
					break;
				}
				this.state = 3121;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3120;
					this.table_access_method_clause();
					}
				}

				this.state = 3124;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 169, this._ctx) ) {
				case 1:
					{
					this.state = 3123;
					this.optwith();
					}
					break;
				}
				this.state = 3127;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ON) {
					{
					this.state = 3126;
					this.oncommitoption();
					}
				}

				this.state = 3130;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 171, this._ctx) ) {
				case 1:
					{
					this.state = 3129;
					this.opttablespace();
					}
					break;
				}
				}
				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 opttemp(): OpttempContext {
		let _localctx: OpttempContext = new OpttempContext(this._ctx, this.state);
		this.enterRule(_localctx, 190, PostgreSQLParser.RULE_opttemp);
		let _la: number;
		try {
			this.state = 3141;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_TEMPORARY:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3134;
				this.match(PostgreSQLParser.KW_TEMPORARY);
				}
				break;
			case PostgreSQLParser.KW_TEMP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3135;
				this.match(PostgreSQLParser.KW_TEMP);
				}
				break;
			case PostgreSQLParser.KW_LOCAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3136;
				this.match(PostgreSQLParser.KW_LOCAL);
				this.state = 3137;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_TEMP || _la === PostgreSQLParser.KW_TEMPORARY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_GLOBAL:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3138;
				this.match(PostgreSQLParser.KW_GLOBAL);
				this.state = 3139;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_TEMP || _la === PostgreSQLParser.KW_TEMPORARY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_UNLOGGED:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3140;
				this.match(PostgreSQLParser.KW_UNLOGGED);
				}
				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 table_column_list(): Table_column_listContext {
		let _localctx: Table_column_listContext = new Table_column_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 192, PostgreSQLParser.RULE_table_column_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3143;
			this.tableelementlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opttableelementlist(): OpttableelementlistContext {
		let _localctx: OpttableelementlistContext = new OpttableelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 194, PostgreSQLParser.RULE_opttableelementlist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3145;
			this.tableelementlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opttypedtableelementlist(): OpttypedtableelementlistContext {
		let _localctx: OpttypedtableelementlistContext = new OpttypedtableelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 196, PostgreSQLParser.RULE_opttypedtableelementlist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3147;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3148;
			this.typedtableelementlist();
			this.state = 3149;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tableelementlist(): TableelementlistContext {
		let _localctx: TableelementlistContext = new TableelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 198, PostgreSQLParser.RULE_tableelementlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3151;
			this.tableelement();
			this.state = 3156;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3152;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3153;
				this.tableelement();
				}
				}
				this.state = 3158;
				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 typedtableelementlist(): TypedtableelementlistContext {
		let _localctx: TypedtableelementlistContext = new TypedtableelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 200, PostgreSQLParser.RULE_typedtableelementlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3159;
			this.typedtableelement();
			this.state = 3164;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3160;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3161;
				this.typedtableelement();
				}
				}
				this.state = 3166;
				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 tableelement(): TableelementContext {
		let _localctx: TableelementContext = new TableelementContext(this._ctx, this.state);
		this.enterRule(_localctx, 202, PostgreSQLParser.RULE_tableelement);
		try {
			this.state = 3170;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 176, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3167;
				this.columnDef();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3169;
				this.tableconstraint();
				}
				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 typedtableelement(): TypedtableelementContext {
		let _localctx: TypedtableelementContext = new TypedtableelementContext(this._ctx, this.state);
		this.enterRule(_localctx, 204, PostgreSQLParser.RULE_typedtableelement);
		try {
			this.state = 3174;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 177, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3172;
				this.columnOptions();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3173;
				this.tableconstraint();
				}
				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 columnDefCluase(): ColumnDefCluaseContext {
		let _localctx: ColumnDefCluaseContext = new ColumnDefCluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 206, PostgreSQLParser.RULE_columnDefCluase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3176;
			this.column_name();
			this.state = 3177;
			this.typename();
			this.state = 3179;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 178, this._ctx) ) {
			case 1:
				{
				this.state = 3178;
				this.create_generic_options();
				}
				break;
			}
			this.state = 3182;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 179, this._ctx) ) {
			case 1:
				{
				this.state = 3181;
				this.storageCluase();
				}
				break;
			}
			this.state = 3185;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_COMPRESSION) {
				{
				this.state = 3184;
				this.compressionCluase();
				}
			}

			this.state = 3189;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 181, this._ctx) ) {
			case 1:
				{
				this.state = 3187;
				this.match(PostgreSQLParser.KW_COLLATE);
				this.state = 3188;
				this.any_name();
				}
				break;
			}
			this.state = 3193;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 182, this._ctx) ) {
			case 1:
				{
				this.state = 3191;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 3192;
				this.match(PostgreSQLParser.KW_OPTIONS);
				}
				break;
			}
			this.state = 3195;
			this.colquallist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnDef(): ColumnDefContext {
		let _localctx: ColumnDefContext = new ColumnDefContext(this._ctx, this.state);
		this.enterRule(_localctx, 208, PostgreSQLParser.RULE_columnDef);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3197;
			this.column_name();
			this.state = 3198;
			this.typename();
			this.state = 3200;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 183, this._ctx) ) {
			case 1:
				{
				this.state = 3199;
				this.create_generic_options();
				}
				break;
			}
			this.state = 3203;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 184, this._ctx) ) {
			case 1:
				{
				this.state = 3202;
				this.storageCluase();
				}
				break;
			}
			this.state = 3206;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_COMPRESSION) {
				{
				this.state = 3205;
				this.compressionCluase();
				}
			}

			this.state = 3210;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 186, this._ctx) ) {
			case 1:
				{
				this.state = 3208;
				this.match(PostgreSQLParser.KW_COLLATE);
				this.state = 3209;
				this.any_name();
				}
				break;
			}
			this.state = 3214;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 187, this._ctx) ) {
			case 1:
				{
				this.state = 3212;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 3213;
				this.match(PostgreSQLParser.KW_OPTIONS);
				}
				break;
			}
			this.state = 3216;
			this.colquallist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public compressionCluase(): CompressionCluaseContext {
		let _localctx: CompressionCluaseContext = new CompressionCluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 210, PostgreSQLParser.RULE_compressionCluase);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3218;
			this.match(PostgreSQLParser.KW_COMPRESSION);
			this.state = 3219;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public storageCluase(): StorageCluaseContext {
		let _localctx: StorageCluaseContext = new StorageCluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 212, PostgreSQLParser.RULE_storageCluase);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3221;
			this.match(PostgreSQLParser.KW_STORAGE);
			this.state = 3228;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 188, this._ctx) ) {
			case 1:
				{
				this.state = 3222;
				this.match(PostgreSQLParser.KW_PLAIN);
				}
				break;

			case 2:
				{
				this.state = 3223;
				this.match(PostgreSQLParser.KW_EXTERNAL);
				}
				break;

			case 3:
				{
				this.state = 3224;
				this.match(PostgreSQLParser.KW_EXTENDED);
				}
				break;

			case 4:
				{
				this.state = 3225;
				this.match(PostgreSQLParser.KW_MAIN);
				}
				break;

			case 5:
				{
				this.state = 3226;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				break;

			case 6:
				{
				this.state = 3227;
				this.colid();
				}
				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 columnOptions(): ColumnOptionsContext {
		let _localctx: ColumnOptionsContext = new ColumnOptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 214, PostgreSQLParser.RULE_columnOptions);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3230;
			this.column_name();
			this.state = 3233;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 189, this._ctx) ) {
			case 1:
				{
				this.state = 3231;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 3232;
				this.match(PostgreSQLParser.KW_OPTIONS);
				}
				break;
			}
			this.state = 3235;
			this.colquallist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public colquallist(): ColquallistContext {
		let _localctx: ColquallistContext = new ColquallistContext(this._ctx, this.state);
		this.enterRule(_localctx, 216, PostgreSQLParser.RULE_colquallist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3240;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 190, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3237;
					this.colconstraint();
					}
					}
				}
				this.state = 3242;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 190, 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 colconstraint(): ColconstraintContext {
		let _localctx: ColconstraintContext = new ColconstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 218, PostgreSQLParser.RULE_colconstraint);
		let _la: number;
		try {
			this.state = 3261;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 196, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3245;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONSTRAINT) {
					{
					this.state = 3243;
					this.match(PostgreSQLParser.KW_CONSTRAINT);
					this.state = 3244;
					this.name();
					}
				}

				this.state = 3247;
				this.colconstraintelem();
				this.state = 3249;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 192, this._ctx) ) {
				case 1:
					{
					this.state = 3248;
					this.deferrable_trigger();
					}
					break;
				}
				this.state = 3252;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_INITIALLY) {
					{
					this.state = 3251;
					this.initially_trigger();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3254;
				this.colconstraintelem();
				this.state = 3256;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 194, this._ctx) ) {
				case 1:
					{
					this.state = 3255;
					this.deferrable_trigger();
					}
					break;
				}
				this.state = 3259;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_INITIALLY) {
					{
					this.state = 3258;
					this.initially_trigger();
					}
				}

				}
				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 colconstraintelem(): ColconstraintelemContext {
		let _localctx: ColconstraintelemContext = new ColconstraintelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 220, PostgreSQLParser.RULE_colconstraintelem);
		let _la: number;
		try {
			this.state = 3321;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 208, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3263;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 3264;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3265;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3266;
				this.match(PostgreSQLParser.KW_UNIQUE);
				this.state = 3268;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 197, this._ctx) ) {
				case 1:
					{
					this.state = 3267;
					this.opt_definition();
					}
					break;
				}
				this.state = 3271;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3270;
					this.optconstablespace();
					}
				}

				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3273;
				this.match(PostgreSQLParser.KW_UNIQUE);
				this.state = 3275;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 199, this._ctx) ) {
				case 1:
					{
					this.state = 3274;
					this.nulls_distinct();
					}
					break;
				}
				this.state = 3277;
				this.index_paramenters_create();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3278;
				this.match(PostgreSQLParser.KW_PRIMARY);
				this.state = 3279;
				this.match(PostgreSQLParser.KW_KEY);
				this.state = 3281;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 200, this._ctx) ) {
				case 1:
					{
					this.state = 3280;
					this.opt_definition();
					}
					break;
				}
				this.state = 3284;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3283;
					this.optconstablespace();
					}
				}

				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3286;
				this.match(PostgreSQLParser.KW_CHECK);
				this.state = 3287;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3288;
				this.a_expr();
				this.state = 3289;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3291;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 202, this._ctx) ) {
				case 1:
					{
					this.state = 3290;
					this.opt_no_inherit();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 3293;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 3294;
				this.b_expr(0);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 3295;
				this.match(PostgreSQLParser.KW_GENERATED);
				this.state = 3296;
				this.generated_when();
				this.state = 3297;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 3307;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_IDENTITY:
					{
					this.state = 3298;
					this.match(PostgreSQLParser.KW_IDENTITY);
					this.state = 3300;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 203, this._ctx) ) {
					case 1:
						{
						this.state = 3299;
						this.optparenthesizedseqoptlist();
						}
						break;
					}
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 3302;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 3303;
					this.a_expr();
					this.state = 3304;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 3305;
					this.match(PostgreSQLParser.KW_STORED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3309;
				this.match(PostgreSQLParser.KW_REFERENCES);
				this.state = 3310;
				this.qualified_name();
				this.state = 3312;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 205, this._ctx) ) {
				case 1:
					{
					this.state = 3311;
					this.opt_column_list();
					}
					break;
				}
				this.state = 3315;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 206, this._ctx) ) {
				case 1:
					{
					this.state = 3314;
					this.key_match();
					}
					break;
				}
				this.state = 3318;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ON) {
					{
					this.state = 3317;
					this.key_actions();
					}
				}

				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3320;
				this.opt_collate();
				}
				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 nulls_distinct(): Nulls_distinctContext {
		let _localctx: Nulls_distinctContext = new Nulls_distinctContext(this._ctx, this.state);
		this.enterRule(_localctx, 222, PostgreSQLParser.RULE_nulls_distinct);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3323;
			this.match(PostgreSQLParser.KW_NULLS);
			this.state = 3325;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_NOT) {
				{
				this.state = 3324;
				this.match(PostgreSQLParser.KW_NOT);
				}
			}

			this.state = 3327;
			this.match(PostgreSQLParser.KW_DISTINCT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public generated_when(): Generated_whenContext {
		let _localctx: Generated_whenContext = new Generated_whenContext(this._ctx, this.state);
		this.enterRule(_localctx, 224, PostgreSQLParser.RULE_generated_when);
		try {
			this.state = 3332;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ALWAYS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3329;
				this.match(PostgreSQLParser.KW_ALWAYS);
				}
				break;
			case PostgreSQLParser.KW_BY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3330;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 3331;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				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 deferrable_trigger(): Deferrable_triggerContext {
		let _localctx: Deferrable_triggerContext = new Deferrable_triggerContext(this._ctx, this.state);
		this.enterRule(_localctx, 226, PostgreSQLParser.RULE_deferrable_trigger);
		try {
			this.state = 3337;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_DEFERRABLE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3334;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				break;
			case PostgreSQLParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3335;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 3336;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				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 initially_trigger(): Initially_triggerContext {
		let _localctx: Initially_triggerContext = new Initially_triggerContext(this._ctx, this.state);
		this.enterRule(_localctx, 228, PostgreSQLParser.RULE_initially_trigger);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3339;
			this.match(PostgreSQLParser.KW_INITIALLY);
			this.state = 3340;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_DEFERRED || _la === PostgreSQLParser.KW_IMMEDIATE)) {
			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 tablelikeclause(): TablelikeclauseContext {
		let _localctx: TablelikeclauseContext = new TablelikeclauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 230, PostgreSQLParser.RULE_tablelikeclause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3342;
			this.match(PostgreSQLParser.KW_LIKE);
			this.state = 3343;
			this.qualified_name();
			this.state = 3344;
			this.tablelikeoptionlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablelikeoptionlist(): TablelikeoptionlistContext {
		let _localctx: TablelikeoptionlistContext = new TablelikeoptionlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 232, PostgreSQLParser.RULE_tablelikeoptionlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3350;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_EXCLUDING || _la === PostgreSQLParser.KW_INCLUDING) {
				{
				{
				this.state = 3346;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_EXCLUDING || _la === PostgreSQLParser.KW_INCLUDING)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 3347;
				this.tablelikeoption();
				}
				}
				this.state = 3352;
				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 tablelikeoption(): TablelikeoptionContext {
		let _localctx: TablelikeoptionContext = new TablelikeoptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 234, PostgreSQLParser.RULE_tablelikeoption);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3353;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALL || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & ((1 << (PostgreSQLParser.KW_COMMENTS - 160)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 160)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 160)))) !== 0) || _la === PostgreSQLParser.KW_IDENTITY || _la === PostgreSQLParser.KW_INDEXES || _la === PostgreSQLParser.KW_STATISTICS || _la === PostgreSQLParser.KW_STORAGE || _la === PostgreSQLParser.KW_GENERATED)) {
			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 tableconstraint(): TableconstraintContext {
		let _localctx: TableconstraintContext = new TableconstraintContext(this._ctx, this.state);
		this.enterRule(_localctx, 236, PostgreSQLParser.RULE_tableconstraint);
		try {
			this.state = 3360;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CONSTRAINT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3355;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 3356;
				this.name();
				this.state = 3357;
				this.constraintelem();
				}
				break;
			case PostgreSQLParser.KW_CHECK:
			case PostgreSQLParser.KW_FOREIGN:
			case PostgreSQLParser.KW_PRIMARY:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_EXCLUDE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3359;
				this.constraintelem();
				}
				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 constraintelem(): ConstraintelemContext {
		let _localctx: ConstraintelemContext = new ConstraintelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 238, PostgreSQLParser.RULE_constraintelem);
		let _la: number;
		try {
			this.state = 3448;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CHECK:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3362;
				this.match(PostgreSQLParser.KW_CHECK);
				this.state = 3363;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3364;
				this.a_expr();
				this.state = 3365;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3366;
				this.constraintattributespec();
				}
				break;
			case PostgreSQLParser.KW_UNIQUE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3368;
				this.match(PostgreSQLParser.KW_UNIQUE);
				this.state = 3386;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 3369;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 3370;
					this.columnlist();
					this.state = 3371;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 3373;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 214, this._ctx) ) {
					case 1:
						{
						this.state = 3372;
						this.opt_c_include();
						}
						break;
					}
					this.state = 3376;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 215, this._ctx) ) {
					case 1:
						{
						this.state = 3375;
						this.opt_definition();
						}
						break;
					}
					this.state = 3379;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_USING) {
						{
						this.state = 3378;
						this.optconstablespace();
						}
					}

					this.state = 3381;
					this.constraintattributespec();
					}
					break;
				case PostgreSQLParser.KW_USING:
					{
					this.state = 3383;
					this.existingindex();
					this.state = 3384;
					this.constraintattributespec();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case PostgreSQLParser.KW_PRIMARY:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3388;
				this.match(PostgreSQLParser.KW_PRIMARY);
				this.state = 3389;
				this.match(PostgreSQLParser.KW_KEY);
				this.state = 3407;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 3390;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 3391;
					this.columnlist();
					this.state = 3392;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 3394;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 218, this._ctx) ) {
					case 1:
						{
						this.state = 3393;
						this.opt_c_include();
						}
						break;
					}
					this.state = 3397;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 219, this._ctx) ) {
					case 1:
						{
						this.state = 3396;
						this.opt_definition();
						}
						break;
					}
					this.state = 3400;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_USING) {
						{
						this.state = 3399;
						this.optconstablespace();
						}
					}

					this.state = 3402;
					this.constraintattributespec();
					}
					break;
				case PostgreSQLParser.KW_USING:
					{
					this.state = 3404;
					this.existingindex();
					this.state = 3405;
					this.constraintattributespec();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case PostgreSQLParser.KW_EXCLUDE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3409;
				this.match(PostgreSQLParser.KW_EXCLUDE);
				this.state = 3411;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3410;
					this.access_method_clause();
					}
				}

				this.state = 3413;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3414;
				this.exclusionconstraintlist();
				this.state = 3415;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3417;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 223, this._ctx) ) {
				case 1:
					{
					this.state = 3416;
					this.opt_c_include();
					}
					break;
				}
				this.state = 3420;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 224, this._ctx) ) {
				case 1:
					{
					this.state = 3419;
					this.opt_definition();
					}
					break;
				}
				this.state = 3423;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 3422;
					this.optconstablespace();
					}
				}

				this.state = 3426;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 3425;
					this.exclusionwhereclause();
					}
				}

				this.state = 3428;
				this.constraintattributespec();
				}
				break;
			case PostgreSQLParser.KW_FOREIGN:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3430;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 3431;
				this.match(PostgreSQLParser.KW_KEY);
				this.state = 3432;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3433;
				this.columnlist();
				this.state = 3434;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3435;
				this.match(PostgreSQLParser.KW_REFERENCES);
				this.state = 3436;
				this.qualified_name();
				this.state = 3438;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 227, this._ctx) ) {
				case 1:
					{
					this.state = 3437;
					this.opt_column_list();
					}
					break;
				}
				this.state = 3441;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 228, this._ctx) ) {
				case 1:
					{
					this.state = 3440;
					this.key_match();
					}
					break;
				}
				this.state = 3444;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ON) {
					{
					this.state = 3443;
					this.key_actions();
					}
				}

				this.state = 3446;
				this.constraintattributespec();
				}
				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 opt_no_inherit(): Opt_no_inheritContext {
		let _localctx: Opt_no_inheritContext = new Opt_no_inheritContext(this._ctx, this.state);
		this.enterRule(_localctx, 240, PostgreSQLParser.RULE_opt_no_inherit);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3450;
			this.match(PostgreSQLParser.KW_NO);
			this.state = 3451;
			this.match(PostgreSQLParser.KW_INHERIT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_column_list(): Opt_column_listContext {
		let _localctx: Opt_column_listContext = new Opt_column_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 242, PostgreSQLParser.RULE_opt_column_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3453;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3454;
			this.columnlist();
			this.state = 3455;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnlist(): ColumnlistContext {
		let _localctx: ColumnlistContext = new ColumnlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 244, PostgreSQLParser.RULE_columnlist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3457;
			this.column_name();
			this.state = 3462;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 231, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3458;
					this.match(PostgreSQLParser.COMMA);
					this.state = 3459;
					this.column_name();
					}
					}
				}
				this.state = 3464;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 231, 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 opt_c_include(): Opt_c_includeContext {
		let _localctx: Opt_c_includeContext = new Opt_c_includeContext(this._ctx, this.state);
		this.enterRule(_localctx, 246, PostgreSQLParser.RULE_opt_c_include);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3465;
			this.match(PostgreSQLParser.KW_INCLUDE);
			this.state = 3466;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3467;
			this.columnlist();
			this.state = 3468;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public key_match(): Key_matchContext {
		let _localctx: Key_matchContext = new Key_matchContext(this._ctx, this.state);
		this.enterRule(_localctx, 248, PostgreSQLParser.RULE_key_match);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3470;
			this.match(PostgreSQLParser.KW_MATCH);
			this.state = 3471;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FULL || _la === PostgreSQLParser.KW_PARTIAL || _la === PostgreSQLParser.KW_SIMPLE)) {
			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 exclusionconstraintlist(): ExclusionconstraintlistContext {
		let _localctx: ExclusionconstraintlistContext = new ExclusionconstraintlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 250, PostgreSQLParser.RULE_exclusionconstraintlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3473;
			this.exclusionconstraintelem();
			this.state = 3478;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3474;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3475;
				this.exclusionconstraintelem();
				}
				}
				this.state = 3480;
				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 exclusionconstraintelem(): ExclusionconstraintelemContext {
		let _localctx: ExclusionconstraintelemContext = new ExclusionconstraintelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 252, PostgreSQLParser.RULE_exclusionconstraintelem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3481;
			this.index_elem();
			this.state = 3482;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 3489;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 233, this._ctx) ) {
			case 1:
				{
				this.state = 3483;
				this.any_operator();
				}
				break;

			case 2:
				{
				this.state = 3484;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 3485;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3486;
				this.any_operator();
				this.state = 3487;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 exclusionwhereclause(): ExclusionwhereclauseContext {
		let _localctx: ExclusionwhereclauseContext = new ExclusionwhereclauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 254, PostgreSQLParser.RULE_exclusionwhereclause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3491;
			this.match(PostgreSQLParser.KW_WHERE);
			this.state = 3492;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3493;
			this.a_expr();
			this.state = 3494;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public key_actions(): Key_actionsContext {
		let _localctx: Key_actionsContext = new Key_actionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 256, PostgreSQLParser.RULE_key_actions);
		try {
			this.state = 3504;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 234, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3496;
				this.key_update();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3498;
				this.key_update();
				this.state = 3499;
				this.key_delete();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3501;
				this.key_delete();
				this.state = 3502;
				this.key_update();
				}
				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 key_update(): Key_updateContext {
		let _localctx: Key_updateContext = new Key_updateContext(this._ctx, this.state);
		this.enterRule(_localctx, 258, PostgreSQLParser.RULE_key_update);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3506;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 3507;
			this.match(PostgreSQLParser.KW_UPDATE);
			this.state = 3508;
			this.key_action();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public key_delete(): Key_deleteContext {
		let _localctx: Key_deleteContext = new Key_deleteContext(this._ctx, this.state);
		this.enterRule(_localctx, 260, PostgreSQLParser.RULE_key_delete);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3510;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 3511;
			this.match(PostgreSQLParser.KW_DELETE);
			this.state = 3512;
			this.key_action();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public key_action(): Key_actionContext {
		let _localctx: Key_actionContext = new Key_actionContext(this._ctx, this.state);
		this.enterRule(_localctx, 262, PostgreSQLParser.RULE_key_action);
		let _la: number;
		try {
			this.state = 3523;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_NO:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3514;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 3515;
				this.match(PostgreSQLParser.KW_ACTION);
				}
				break;
			case PostgreSQLParser.KW_RESTRICT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3516;
				this.match(PostgreSQLParser.KW_RESTRICT);
				}
				break;
			case PostgreSQLParser.KW_CASCADE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3517;
				this.match(PostgreSQLParser.KW_CASCADE);
				}
				break;
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3518;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 3519;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_DEFAULT || _la === PostgreSQLParser.KW_NULL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 3521;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 235, this._ctx) ) {
				case 1:
					{
					this.state = 3520;
					this.columnlist();
					}
					break;
				}
				}
				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 optinherit(): OptinheritContext {
		let _localctx: OptinheritContext = new OptinheritContext(this._ctx, this.state);
		this.enterRule(_localctx, 264, PostgreSQLParser.RULE_optinherit);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3525;
			this.match(PostgreSQLParser.KW_INHERITS);
			this.state = 3526;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3527;
			this.qualified_name_list();
			this.state = 3528;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optpartitionspec(): OptpartitionspecContext {
		let _localctx: OptpartitionspecContext = new OptpartitionspecContext(this._ctx, this.state);
		this.enterRule(_localctx, 266, PostgreSQLParser.RULE_optpartitionspec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3530;
			this.partitionspec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public partitionspec(): PartitionspecContext {
		let _localctx: PartitionspecContext = new PartitionspecContext(this._ctx, this.state);
		this.enterRule(_localctx, 268, PostgreSQLParser.RULE_partitionspec);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3532;
			this.match(PostgreSQLParser.KW_PARTITION);
			this.state = 3533;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 3534;
			this.colid();
			this.state = 3535;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3536;
			this.part_params();
			this.state = 3537;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public part_params(): Part_paramsContext {
		let _localctx: Part_paramsContext = new Part_paramsContext(this._ctx, this.state);
		this.enterRule(_localctx, 270, PostgreSQLParser.RULE_part_params);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3539;
			this.part_elem();
			this.state = 3544;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3540;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3541;
				this.part_elem();
				}
				}
				this.state = 3546;
				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 part_elem(): Part_elemContext {
		let _localctx: Part_elemContext = new Part_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 272, PostgreSQLParser.RULE_part_elem);
		let _la: number;
		try {
			this.state = 3570;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 244, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3547;
				this.column_name();
				this.state = 3549;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 238, this._ctx) ) {
				case 1:
					{
					this.state = 3548;
					this.opt_collate();
					}
					break;
				}
				this.state = 3552;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 3551;
					this.opt_class();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3554;
				this.func_expr_windowless();
				this.state = 3556;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 240, this._ctx) ) {
				case 1:
					{
					this.state = 3555;
					this.opt_collate();
					}
					break;
				}
				this.state = 3559;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 3558;
					this.opt_class();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3561;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3562;
				this.a_expr();
				this.state = 3563;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 3565;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 242, this._ctx) ) {
				case 1:
					{
					this.state = 3564;
					this.opt_collate();
					}
					break;
				}
				this.state = 3568;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 3567;
					this.opt_class();
					}
				}

				}
				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 table_access_method_clause(): Table_access_method_clauseContext {
		let _localctx: Table_access_method_clauseContext = new Table_access_method_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 274, PostgreSQLParser.RULE_table_access_method_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3572;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 3573;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optwith(): OptwithContext {
		let _localctx: OptwithContext = new OptwithContext(this._ctx, this.state);
		this.enterRule(_localctx, 276, PostgreSQLParser.RULE_optwith);
		try {
			this.state = 3581;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 245, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3575;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 3576;
				this.reloptions();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3577;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 3578;
				this.match(PostgreSQLParser.KW_OIDS);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3579;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 3580;
				this.match(PostgreSQLParser.KW_OIDS);
				}
				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 oncommitoption(): OncommitoptionContext {
		let _localctx: OncommitoptionContext = new OncommitoptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 278, PostgreSQLParser.RULE_oncommitoption);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3583;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 3584;
			this.match(PostgreSQLParser.KW_COMMIT);
			this.state = 3590;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_DROP:
				{
				this.state = 3585;
				this.match(PostgreSQLParser.KW_DROP);
				}
				break;
			case PostgreSQLParser.KW_DELETE:
				{
				this.state = 3586;
				this.match(PostgreSQLParser.KW_DELETE);
				this.state = 3587;
				this.match(PostgreSQLParser.KW_ROWS);
				}
				break;
			case PostgreSQLParser.KW_PRESERVE:
				{
				this.state = 3588;
				this.match(PostgreSQLParser.KW_PRESERVE);
				this.state = 3589;
				this.match(PostgreSQLParser.KW_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 opttablespace(): OpttablespaceContext {
		let _localctx: OpttablespaceContext = new OpttablespaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 280, PostgreSQLParser.RULE_opttablespace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3592;
			this.match(PostgreSQLParser.KW_TABLESPACE);
			this.state = 3593;
			this.tablespace_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public index_paramenters_create(): Index_paramenters_createContext {
		let _localctx: Index_paramenters_createContext = new Index_paramenters_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 282, PostgreSQLParser.RULE_index_paramenters_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3596;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 247, this._ctx) ) {
			case 1:
				{
				this.state = 3595;
				this.opt_include();
				}
				break;
			}
			this.state = 3599;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 248, this._ctx) ) {
			case 1:
				{
				this.state = 3598;
				this.with_clause();
				}
				break;
			}
			this.state = 3602;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 3601;
				this.optconstablespace();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optconstablespace(): OptconstablespaceContext {
		let _localctx: OptconstablespaceContext = new OptconstablespaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 284, PostgreSQLParser.RULE_optconstablespace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3604;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 3605;
			this.match(PostgreSQLParser.KW_INDEX);
			this.state = 3606;
			this.match(PostgreSQLParser.KW_TABLESPACE);
			this.state = 3607;
			this.tablespace_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public existingindex(): ExistingindexContext {
		let _localctx: ExistingindexContext = new ExistingindexContext(this._ctx, this.state);
		this.enterRule(_localctx, 286, PostgreSQLParser.RULE_existingindex);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3609;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 3610;
			this.match(PostgreSQLParser.KW_INDEX);
			this.state = 3611;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createstatsstmt(): CreatestatsstmtContext {
		let _localctx: CreatestatsstmtContext = new CreatestatsstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 288, PostgreSQLParser.RULE_createstatsstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3613;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3614;
			this.match(PostgreSQLParser.KW_STATISTICS);
			this.state = 3619;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 3616;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 250, this._ctx) ) {
				case 1:
					{
					this.state = 3615;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 3618;
				this.any_name();
				}
			}

			this.state = 3622;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 3621;
				this.opt_name_list();
				}
			}

			this.state = 3624;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 3627;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 253, this._ctx) ) {
			case 1:
				{
				this.state = 3625;
				this.column_expr_list();
				}
				break;

			case 2:
				{
				this.state = 3626;
				this.expr_list();
				}
				break;
			}
			this.state = 3629;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 3630;
			this.from_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterstatsstmt(): AlterstatsstmtContext {
		let _localctx: AlterstatsstmtContext = new AlterstatsstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 290, PostgreSQLParser.RULE_alterstatsstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3632;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 3633;
			this.match(PostgreSQLParser.KW_STATISTICS);
			this.state = 3635;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 254, this._ctx) ) {
			case 1:
				{
				this.state = 3634;
				this.opt_if_exists();
				}
				break;
			}
			this.state = 3637;
			this.any_name();
			this.state = 3638;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 3639;
			this.match(PostgreSQLParser.KW_STATISTICS);
			this.state = 3640;
			this.signediconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createasstmt(): CreateasstmtContext {
		let _localctx: CreateasstmtContext = new CreateasstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 292, PostgreSQLParser.RULE_createasstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3642;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3644;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 352)))) !== 0)) {
				{
				this.state = 3643;
				this.opttemp();
				}
			}

			this.state = 3646;
			this.match(PostgreSQLParser.KW_TABLE);
			this.state = 3648;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 256, this._ctx) ) {
			case 1:
				{
				this.state = 3647;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 3650;
			this.create_as_target();
			this.state = 3651;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 3652;
			this.selectstmt();
			this.state = 3654;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 257, this._ctx) ) {
			case 1:
				{
				this.state = 3653;
				this.opt_with_data();
				}
				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 create_as_target(): Create_as_targetContext {
		let _localctx: Create_as_targetContext = new Create_as_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 294, PostgreSQLParser.RULE_create_as_target);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3656;
			this.table_name_create();
			this.state = 3658;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 3657;
				this.opt_column_list();
				}
			}

			this.state = 3661;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 3660;
				this.table_access_method_clause();
				}
			}

			this.state = 3664;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH || _la === PostgreSQLParser.KW_WITHOUT) {
				{
				this.state = 3663;
				this.optwith();
				}
			}

			this.state = 3667;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ON) {
				{
				this.state = 3666;
				this.oncommitoption();
				}
			}

			this.state = 3670;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TABLESPACE) {
				{
				this.state = 3669;
				this.opttablespace();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_with_data(): Opt_with_dataContext {
		let _localctx: Opt_with_dataContext = new Opt_with_dataContext(this._ctx, this.state);
		this.enterRule(_localctx, 296, PostgreSQLParser.RULE_opt_with_data);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3672;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 3676;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_DATA:
				{
				this.state = 3673;
				this.match(PostgreSQLParser.KW_DATA);
				}
				break;
			case PostgreSQLParser.KW_NO:
				{
				this.state = 3674;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 3675;
				this.match(PostgreSQLParser.KW_DATA);
				}
				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 creatematviewstmt(): CreatematviewstmtContext {
		let _localctx: CreatematviewstmtContext = new CreatematviewstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 298, PostgreSQLParser.RULE_creatematviewstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3678;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3680;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_UNLOGGED) {
				{
				this.state = 3679;
				this.optnolog();
				}
			}

			this.state = 3682;
			this.match(PostgreSQLParser.KW_MATERIALIZED);
			this.state = 3683;
			this.match(PostgreSQLParser.KW_VIEW);
			this.state = 3685;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 265, this._ctx) ) {
			case 1:
				{
				this.state = 3684;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 3687;
			this.create_mv_target();
			this.state = 3688;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 3689;
			this.selectstmt();
			this.state = 3691;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 266, this._ctx) ) {
			case 1:
				{
				this.state = 3690;
				this.opt_with_data();
				}
				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 create_mv_target(): Create_mv_targetContext {
		let _localctx: Create_mv_targetContext = new Create_mv_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 300, PostgreSQLParser.RULE_create_mv_target);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3693;
			this.view_name_create();
			this.state = 3695;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 3694;
				this.opt_column_list();
				}
			}

			this.state = 3698;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 3697;
				this.table_access_method_clause();
				}
			}

			this.state = 3701;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 3700;
				this.opt_reloptions();
				}
			}

			this.state = 3704;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TABLESPACE) {
				{
				this.state = 3703;
				this.opttablespace();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optnolog(): OptnologContext {
		let _localctx: OptnologContext = new OptnologContext(this._ctx, this.state);
		this.enterRule(_localctx, 302, PostgreSQLParser.RULE_optnolog);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3706;
			this.match(PostgreSQLParser.KW_UNLOGGED);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public refreshmatviewstmt(): RefreshmatviewstmtContext {
		let _localctx: RefreshmatviewstmtContext = new RefreshmatviewstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 304, PostgreSQLParser.RULE_refreshmatviewstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3708;
			this.match(PostgreSQLParser.KW_REFRESH);
			this.state = 3709;
			this.match(PostgreSQLParser.KW_MATERIALIZED);
			this.state = 3710;
			this.match(PostgreSQLParser.KW_VIEW);
			this.state = 3712;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
				{
				this.state = 3711;
				this.opt_concurrently();
				}
			}

			this.state = 3714;
			this.view_name();
			this.state = 3716;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 272, this._ctx) ) {
			case 1:
				{
				this.state = 3715;
				this.opt_with_data();
				}
				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 createseqstmt(): CreateseqstmtContext {
		let _localctx: CreateseqstmtContext = new CreateseqstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 306, PostgreSQLParser.RULE_createseqstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3718;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3720;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 352)))) !== 0)) {
				{
				this.state = 3719;
				this.opttemp();
				}
			}

			this.state = 3722;
			this.match(PostgreSQLParser.KW_SEQUENCE);
			this.state = 3724;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 274, this._ctx) ) {
			case 1:
				{
				this.state = 3723;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 3726;
			this.qualified_name();
			this.state = 3728;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 275, this._ctx) ) {
			case 1:
				{
				this.state = 3727;
				this.optseqoptlist();
				}
				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 alterseqstmt(): AlterseqstmtContext {
		let _localctx: AlterseqstmtContext = new AlterseqstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 308, PostgreSQLParser.RULE_alterseqstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3730;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 3731;
			this.match(PostgreSQLParser.KW_SEQUENCE);
			this.state = 3733;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 276, this._ctx) ) {
			case 1:
				{
				this.state = 3732;
				this.opt_if_exists();
				}
				break;
			}
			this.state = 3735;
			this.qualified_name();
			this.state = 3736;
			this.seqoptlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optseqoptlist(): OptseqoptlistContext {
		let _localctx: OptseqoptlistContext = new OptseqoptlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 310, PostgreSQLParser.RULE_optseqoptlist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3738;
			this.seqoptlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext {
		let _localctx: OptparenthesizedseqoptlistContext = new OptparenthesizedseqoptlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 312, PostgreSQLParser.RULE_optparenthesizedseqoptlist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3740;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 3741;
			this.seqoptlist();
			this.state = 3742;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public seqoptlist(): SeqoptlistContext {
		let _localctx: SeqoptlistContext = new SeqoptlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 314, PostgreSQLParser.RULE_seqoptlist);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3745;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 3744;
					this.seqoptelem();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3747;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 277, 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 seqoptelem(): SeqoptelemContext {
		let _localctx: SeqoptelemContext = new SeqoptelemContext(this._ctx, this.state);
		this.enterRule(_localctx, 316, PostgreSQLParser.RULE_seqoptelem);
		let _la: number;
		try {
			this.state = 3783;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3749;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 3750;
				this.simpletypename();
				}
				break;
			case PostgreSQLParser.KW_CACHE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3751;
				this.match(PostgreSQLParser.KW_CACHE);
				this.state = 3752;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.KW_CYCLE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3753;
				this.match(PostgreSQLParser.KW_CYCLE);
				}
				break;
			case PostgreSQLParser.KW_INCREMENT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3754;
				this.match(PostgreSQLParser.KW_INCREMENT);
				this.state = 3756;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_BY) {
					{
					this.state = 3755;
					this.opt_by();
					}
				}

				this.state = 3758;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.KW_MAXVALUE:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3759;
				this.match(PostgreSQLParser.KW_MAXVALUE);
				this.state = 3760;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.KW_MINVALUE:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3761;
				this.match(PostgreSQLParser.KW_MINVALUE);
				this.state = 3762;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.KW_NO:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 3763;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 3764;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CYCLE || _la === PostgreSQLParser.KW_MAXVALUE || _la === PostgreSQLParser.KW_MINVALUE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_OWNED:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 3765;
				this.match(PostgreSQLParser.KW_OWNED);
				this.state = 3766;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 3767;
				this.table_column_name();
				}
				break;
			case PostgreSQLParser.KW_SEQUENCE:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3768;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 3769;
				this.match(PostgreSQLParser.KW_NAME);
				this.state = 3770;
				this.any_name();
				}
				break;
			case PostgreSQLParser.KW_START:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3771;
				this.match(PostgreSQLParser.KW_START);
				this.state = 3773;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WITH) {
					{
					this.state = 3772;
					this.opt_with();
					}
				}

				this.state = 3775;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.KW_RESTART:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 3776;
				this.match(PostgreSQLParser.KW_RESTART);
				this.state = 3778;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 280, this._ctx) ) {
				case 1:
					{
					this.state = 3777;
					this.opt_with();
					}
					break;
				}
				this.state = 3781;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS || _la === PostgreSQLParser.Integral || _la === PostgreSQLParser.Numeric) {
					{
					this.state = 3780;
					this.numericonly();
					}
				}

				}
				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 opt_by(): Opt_byContext {
		let _localctx: Opt_byContext = new Opt_byContext(this._ctx, this.state);
		this.enterRule(_localctx, 318, PostgreSQLParser.RULE_opt_by);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3785;
			this.match(PostgreSQLParser.KW_BY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public numericonly(): NumericonlyContext {
		let _localctx: NumericonlyContext = new NumericonlyContext(this._ctx, this.state);
		this.enterRule(_localctx, 320, PostgreSQLParser.RULE_numericonly);
		try {
			this.state = 3793;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 283, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3787;
				this.fconst();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3788;
				this.match(PostgreSQLParser.PLUS);
				this.state = 3789;
				this.fconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3790;
				this.match(PostgreSQLParser.MINUS);
				this.state = 3791;
				this.fconst();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3792;
				this.signediconst();
				}
				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 numericonly_list(): Numericonly_listContext {
		let _localctx: Numericonly_listContext = new Numericonly_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 322, PostgreSQLParser.RULE_numericonly_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3795;
			this.numericonly();
			this.state = 3800;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 3796;
				this.match(PostgreSQLParser.COMMA);
				this.state = 3797;
				this.numericonly();
				}
				}
				this.state = 3802;
				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 createplangstmt(): CreateplangstmtContext {
		let _localctx: CreateplangstmtContext = new CreateplangstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 324, PostgreSQLParser.RULE_createplangstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3803;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3805;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OR) {
				{
				this.state = 3804;
				this.opt_or_replace();
				}
			}

			this.state = 3808;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TRUSTED) {
				{
				this.state = 3807;
				this.opt_trusted();
				}
			}

			this.state = 3811;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_PROCEDURAL) {
				{
				this.state = 3810;
				this.opt_procedural();
				}
			}

			this.state = 3813;
			this.match(PostgreSQLParser.KW_LANGUAGE);
			this.state = 3814;
			this.name();
			this.state = 3823;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 290, this._ctx) ) {
			case 1:
				{
				this.state = 3815;
				this.match(PostgreSQLParser.KW_HANDLER);
				this.state = 3816;
				this.handler_name();
				this.state = 3818;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 288, this._ctx) ) {
				case 1:
					{
					this.state = 3817;
					this.opt_inline_handler();
					}
					break;
				}
				this.state = 3821;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 289, this._ctx) ) {
				case 1:
					{
					this.state = 3820;
					this.opt_validator();
					}
					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 opt_trusted(): Opt_trustedContext {
		let _localctx: Opt_trustedContext = new Opt_trustedContext(this._ctx, this.state);
		this.enterRule(_localctx, 326, PostgreSQLParser.RULE_opt_trusted);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3825;
			this.match(PostgreSQLParser.KW_TRUSTED);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public handler_name(): Handler_nameContext {
		let _localctx: Handler_nameContext = new Handler_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 328, PostgreSQLParser.RULE_handler_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3827;
			this.name();
			this.state = 3829;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 3828;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_inline_handler(): Opt_inline_handlerContext {
		let _localctx: Opt_inline_handlerContext = new Opt_inline_handlerContext(this._ctx, this.state);
		this.enterRule(_localctx, 330, PostgreSQLParser.RULE_opt_inline_handler);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3831;
			this.match(PostgreSQLParser.KW_INLINE);
			this.state = 3832;
			this.handler_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public validator_clause(): Validator_clauseContext {
		let _localctx: Validator_clauseContext = new Validator_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 332, PostgreSQLParser.RULE_validator_clause);
		try {
			this.state = 3838;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_VALIDATOR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3834;
				this.match(PostgreSQLParser.KW_VALIDATOR);
				this.state = 3835;
				this.handler_name();
				}
				break;
			case PostgreSQLParser.KW_NO:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3836;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 3837;
				this.match(PostgreSQLParser.KW_VALIDATOR);
				}
				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 opt_validator(): Opt_validatorContext {
		let _localctx: Opt_validatorContext = new Opt_validatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 334, PostgreSQLParser.RULE_opt_validator);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3840;
			this.validator_clause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_procedural(): Opt_proceduralContext {
		let _localctx: Opt_proceduralContext = new Opt_proceduralContext(this._ctx, this.state);
		this.enterRule(_localctx, 336, PostgreSQLParser.RULE_opt_procedural);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3842;
			this.match(PostgreSQLParser.KW_PROCEDURAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createtablespacestmt(): CreatetablespacestmtContext {
		let _localctx: CreatetablespacestmtContext = new CreatetablespacestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 338, PostgreSQLParser.RULE_createtablespacestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3844;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3845;
			this.match(PostgreSQLParser.KW_TABLESPACE);
			this.state = 3846;
			this.tablespace_name();
			this.state = 3848;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OWNER) {
				{
				this.state = 3847;
				this.opttablespaceowner();
				}
			}

			this.state = 3850;
			this.match(PostgreSQLParser.KW_LOCATION);
			this.state = 3851;
			this.sconst();
			this.state = 3853;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 294, this._ctx) ) {
			case 1:
				{
				this.state = 3852;
				this.opt_reloptions();
				}
				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 opttablespaceowner(): OpttablespaceownerContext {
		let _localctx: OpttablespaceownerContext = new OpttablespaceownerContext(this._ctx, this.state);
		this.enterRule(_localctx, 340, PostgreSQLParser.RULE_opttablespaceowner);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3855;
			this.match(PostgreSQLParser.KW_OWNER);
			this.state = 3856;
			this.rolespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createextensionstmt(): CreateextensionstmtContext {
		let _localctx: CreateextensionstmtContext = new CreateextensionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 342, PostgreSQLParser.RULE_createextensionstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3858;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 3859;
			this.match(PostgreSQLParser.KW_EXTENSION);
			this.state = 3861;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 295, this._ctx) ) {
			case 1:
				{
				this.state = 3860;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 3863;
			this.name();
			this.state = 3865;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 296, this._ctx) ) {
			case 1:
				{
				this.state = 3864;
				this.opt_with();
				}
				break;
			}
			this.state = 3867;
			this.create_extension_opt_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public create_extension_opt_list(): Create_extension_opt_listContext {
		let _localctx: Create_extension_opt_listContext = new Create_extension_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 344, PostgreSQLParser.RULE_create_extension_opt_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3872;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 297, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 3869;
					this.create_extension_opt_item();
					}
					}
				}
				this.state = 3874;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 297, 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 create_extension_opt_item(): Create_extension_opt_itemContext {
		let _localctx: Create_extension_opt_itemContext = new Create_extension_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 346, PostgreSQLParser.RULE_create_extension_opt_item);
		try {
			this.state = 3882;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SCHEMA:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3875;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 3876;
				this.schema_name();
				}
				break;
			case PostgreSQLParser.KW_VERSION:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3877;
				this.match(PostgreSQLParser.KW_VERSION);
				this.state = 3878;
				this.nonreservedword_or_sconst();
				}
				break;
			case PostgreSQLParser.KW_FROM:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3879;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 3880;
				this.nonreservedword_or_sconst();
				}
				break;
			case PostgreSQLParser.KW_CASCADE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3881;
				this.match(PostgreSQLParser.KW_CASCADE);
				}
				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 alterextensionstmt(): AlterextensionstmtContext {
		let _localctx: AlterextensionstmtContext = new AlterextensionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 348, PostgreSQLParser.RULE_alterextensionstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3884;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 3885;
			this.match(PostgreSQLParser.KW_EXTENSION);
			this.state = 3886;
			this.name();
			this.state = 3887;
			this.match(PostgreSQLParser.KW_UPDATE);
			this.state = 3888;
			this.alter_extension_opt_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_extension_opt_list(): Alter_extension_opt_listContext {
		let _localctx: Alter_extension_opt_listContext = new Alter_extension_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 350, PostgreSQLParser.RULE_alter_extension_opt_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3893;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_TO) {
				{
				{
				this.state = 3890;
				this.alter_extension_opt_item();
				}
				}
				this.state = 3895;
				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 alter_extension_opt_item(): Alter_extension_opt_itemContext {
		let _localctx: Alter_extension_opt_itemContext = new Alter_extension_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 352, PostgreSQLParser.RULE_alter_extension_opt_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 3896;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 3897;
			this.nonreservedword_or_sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext {
		let _localctx: AlterextensioncontentsstmtContext = new AlterextensioncontentsstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 354, PostgreSQLParser.RULE_alterextensioncontentsstmt);
		try {
			this.state = 4001;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 300, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 3899;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3900;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3901;
				this.name();
				this.state = 3902;
				this.add_drop();
				this.state = 3903;
				this.object_type_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 3905;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3906;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3907;
				this.name();
				this.state = 3908;
				this.add_drop();
				this.state = 3909;
				this.object_type_any_name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 3911;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3912;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3913;
				this.name();
				this.state = 3914;
				this.add_drop();
				this.state = 3915;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 3916;
				this.aggregate_with_argtypes();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 3918;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3919;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3920;
				this.name();
				this.state = 3921;
				this.add_drop();
				this.state = 3922;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 3923;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 3924;
				this.typename();
				this.state = 3925;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 3926;
				this.typename();
				this.state = 3927;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 3929;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3930;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3931;
				this.name();
				this.state = 3932;
				this.add_drop();
				this.state = 3933;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 3934;
				this.typename();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 3936;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3937;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3938;
				this.name();
				this.state = 3939;
				this.add_drop();
				this.state = 3940;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 3941;
				this.function_with_argtypes();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 3943;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3944;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3945;
				this.name();
				this.state = 3946;
				this.add_drop();
				this.state = 3947;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 3948;
				this.operator_with_argtypes();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 3950;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3951;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3952;
				this.name();
				this.state = 3953;
				this.add_drop();
				this.state = 3954;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 3955;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 3956;
				this.any_name();
				this.state = 3957;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 3958;
				this.name();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 3960;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3961;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3962;
				this.name();
				this.state = 3963;
				this.add_drop();
				this.state = 3964;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 3965;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 3966;
				this.any_name();
				this.state = 3967;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 3968;
				this.name();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 3970;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3971;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3972;
				this.name();
				this.state = 3973;
				this.add_drop();
				this.state = 3974;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 3975;
				this.procedure_with_argtypes();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 3977;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3978;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3979;
				this.name();
				this.state = 3980;
				this.add_drop();
				this.state = 3981;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 3982;
				this.routine_with_argtypes();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 3984;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3985;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3986;
				this.name();
				this.state = 3987;
				this.add_drop();
				this.state = 3988;
				this.match(PostgreSQLParser.KW_TRANSFORM);
				this.state = 3989;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 3990;
				this.typename();
				this.state = 3991;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 3992;
				this.name();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 3994;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 3995;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 3996;
				this.name();
				this.state = 3997;
				this.add_drop();
				this.state = 3998;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 3999;
				this.typename();
				}
				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 createfdwstmt(): CreatefdwstmtContext {
		let _localctx: CreatefdwstmtContext = new CreatefdwstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 356, PostgreSQLParser.RULE_createfdwstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4003;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4004;
			this.match(PostgreSQLParser.KW_FOREIGN);
			this.state = 4005;
			this.match(PostgreSQLParser.KW_DATA);
			this.state = 4006;
			this.match(PostgreSQLParser.KW_WRAPPER);
			this.state = 4007;
			this.name();
			this.state = 4009;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 301, this._ctx) ) {
			case 1:
				{
				this.state = 4008;
				this.opt_fdw_options();
				}
				break;
			}
			this.state = 4012;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 302, this._ctx) ) {
			case 1:
				{
				this.state = 4011;
				this.create_generic_options();
				}
				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 fdw_option(): Fdw_optionContext {
		let _localctx: Fdw_optionContext = new Fdw_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 358, PostgreSQLParser.RULE_fdw_option);
		try {
			this.state = 4022;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 303, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4014;
				this.match(PostgreSQLParser.KW_HANDLER);
				this.state = 4015;
				this.handler_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4016;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 4017;
				this.match(PostgreSQLParser.KW_HANDLER);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4018;
				this.match(PostgreSQLParser.KW_VALIDATOR);
				this.state = 4019;
				this.handler_name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4020;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 4021;
				this.match(PostgreSQLParser.KW_VALIDATOR);
				}
				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 fdw_options(): Fdw_optionsContext {
		let _localctx: Fdw_optionsContext = new Fdw_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 360, PostgreSQLParser.RULE_fdw_options);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4025;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 4024;
					this.fdw_option();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 4027;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 304, 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 opt_fdw_options(): Opt_fdw_optionsContext {
		let _localctx: Opt_fdw_optionsContext = new Opt_fdw_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 362, PostgreSQLParser.RULE_opt_fdw_options);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4029;
			this.fdw_options();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterfdwstmt(): AlterfdwstmtContext {
		let _localctx: AlterfdwstmtContext = new AlterfdwstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 364, PostgreSQLParser.RULE_alterfdwstmt);
		let _la: number;
		try {
			this.state = 4048;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 306, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4031;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4032;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 4033;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 4034;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 4035;
				this.name();
				this.state = 4037;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_HANDLER || _la === PostgreSQLParser.KW_NO || _la === PostgreSQLParser.KW_VALIDATOR) {
					{
					this.state = 4036;
					this.opt_fdw_options();
					}
				}

				this.state = 4039;
				this.alter_generic_options();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4041;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4042;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 4043;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 4044;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 4045;
				this.name();
				this.state = 4046;
				this.fdw_options();
				}
				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 create_generic_options(): Create_generic_optionsContext {
		let _localctx: Create_generic_optionsContext = new Create_generic_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 366, PostgreSQLParser.RULE_create_generic_options);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4050;
			this.match(PostgreSQLParser.KW_OPTIONS);
			this.state = 4051;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4052;
			this.generic_option_list();
			this.state = 4053;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public generic_option_list(): Generic_option_listContext {
		let _localctx: Generic_option_listContext = new Generic_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 368, PostgreSQLParser.RULE_generic_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4055;
			this.generic_option_elem();
			this.state = 4060;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4056;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4057;
				this.generic_option_elem();
				}
				}
				this.state = 4062;
				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 alter_generic_options(): Alter_generic_optionsContext {
		let _localctx: Alter_generic_optionsContext = new Alter_generic_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 370, PostgreSQLParser.RULE_alter_generic_options);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4063;
			this.match(PostgreSQLParser.KW_OPTIONS);
			this.state = 4064;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4065;
			this.alter_generic_option_list();
			this.state = 4066;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alter_generic_option_list(): Alter_generic_option_listContext {
		let _localctx: Alter_generic_option_listContext = new Alter_generic_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 372, PostgreSQLParser.RULE_alter_generic_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4068;
			this.alter_generic_option_elem();
			this.state = 4073;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4069;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4070;
				this.alter_generic_option_elem();
				}
				}
				this.state = 4075;
				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 alter_generic_option_elem(): Alter_generic_option_elemContext {
		let _localctx: Alter_generic_option_elemContext = new Alter_generic_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 374, PostgreSQLParser.RULE_alter_generic_option_elem);
		try {
			this.state = 4083;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 309, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4076;
				this.generic_option_elem();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4077;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 4078;
				this.generic_option_elem();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4079;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 4080;
				this.generic_option_elem();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4081;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4082;
				this.generic_option_elem();
				}
				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 generic_option_elem(): Generic_option_elemContext {
		let _localctx: Generic_option_elemContext = new Generic_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 376, PostgreSQLParser.RULE_generic_option_elem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4085;
			this.generic_option_name();
			this.state = 4086;
			this.generic_option_arg();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public generic_option_name(): Generic_option_nameContext {
		let _localctx: Generic_option_nameContext = new Generic_option_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 378, PostgreSQLParser.RULE_generic_option_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4088;
			this.collabel();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public generic_option_arg(): Generic_option_argContext {
		let _localctx: Generic_option_argContext = new Generic_option_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 380, PostgreSQLParser.RULE_generic_option_arg);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4090;
			this.sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createforeignserverstmt(): CreateforeignserverstmtContext {
		let _localctx: CreateforeignserverstmtContext = new CreateforeignserverstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 382, PostgreSQLParser.RULE_createforeignserverstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4092;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4093;
			this.match(PostgreSQLParser.KW_SERVER);
			this.state = 4095;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 310, this._ctx) ) {
			case 1:
				{
				this.state = 4094;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 4097;
			this.name();
			this.state = 4099;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TYPE) {
				{
				this.state = 4098;
				this.opt_type();
				}
			}

			this.state = 4102;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_VERSION) {
				{
				this.state = 4101;
				this.opt_foreign_server_version();
				}
			}

			this.state = 4104;
			this.match(PostgreSQLParser.KW_FOREIGN);
			this.state = 4105;
			this.match(PostgreSQLParser.KW_DATA);
			this.state = 4106;
			this.match(PostgreSQLParser.KW_WRAPPER);
			this.state = 4107;
			this.name();
			this.state = 4109;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 313, this._ctx) ) {
			case 1:
				{
				this.state = 4108;
				this.create_generic_options();
				}
				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 opt_type(): Opt_typeContext {
		let _localctx: Opt_typeContext = new Opt_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 384, PostgreSQLParser.RULE_opt_type);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4111;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 4112;
			this.sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public foreign_server_version(): Foreign_server_versionContext {
		let _localctx: Foreign_server_versionContext = new Foreign_server_versionContext(this._ctx, this.state);
		this.enterRule(_localctx, 386, PostgreSQLParser.RULE_foreign_server_version);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4114;
			this.match(PostgreSQLParser.KW_VERSION);
			this.state = 4117;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 4115;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_NULL:
				{
				this.state = 4116;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 opt_foreign_server_version(): Opt_foreign_server_versionContext {
		let _localctx: Opt_foreign_server_versionContext = new Opt_foreign_server_versionContext(this._ctx, this.state);
		this.enterRule(_localctx, 388, PostgreSQLParser.RULE_opt_foreign_server_version);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4119;
			this.foreign_server_version();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterforeignserverstmt(): AlterforeignserverstmtContext {
		let _localctx: AlterforeignserverstmtContext = new AlterforeignserverstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 390, PostgreSQLParser.RULE_alterforeignserverstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4121;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 4122;
			this.match(PostgreSQLParser.KW_SERVER);
			this.state = 4123;
			this.name();
			this.state = 4129;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_OPTIONS:
				{
				this.state = 4124;
				this.alter_generic_options();
				}
				break;
			case PostgreSQLParser.KW_VERSION:
				{
				this.state = 4125;
				this.foreign_server_version();
				this.state = 4127;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 315, this._ctx) ) {
				case 1:
					{
					this.state = 4126;
					this.alter_generic_options();
					}
					break;
				}
				}
				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 createforeigntablestmt(): CreateforeigntablestmtContext {
		let _localctx: CreateforeigntablestmtContext = new CreateforeigntablestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 392, PostgreSQLParser.RULE_createforeigntablestmt);
		let _la: number;
		try {
			this.state = 4170;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 324, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4131;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4132;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 4133;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 4135;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 317, this._ctx) ) {
				case 1:
					{
					this.state = 4134;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 4137;
				this.table_name_create();
				this.state = 4138;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4140;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CHECK - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)) | (1 << (PostgreSQLParser.KW_FOREIGN - 33)))) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & ((1 << (PostgreSQLParser.KW_PRIMARY - 85)) | (1 << (PostgreSQLParser.KW_TABLE - 85)) | (1 << (PostgreSQLParser.KW_UNIQUE - 85)) | (1 << (PostgreSQLParser.KW_IS - 85)))) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & ((1 << (PostgreSQLParser.KW_LIKE - 120)) | (1 << (PostgreSQLParser.KW_OUTER - 120)) | (1 << (PostgreSQLParser.KW_OVER - 120)) | (1 << (PostgreSQLParser.KW_ABORT - 120)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 120)) | (1 << (PostgreSQLParser.KW_ACCESS - 120)) | (1 << (PostgreSQLParser.KW_ACTION - 120)) | (1 << (PostgreSQLParser.KW_ADD - 120)) | (1 << (PostgreSQLParser.KW_ADMIN - 120)) | (1 << (PostgreSQLParser.KW_AFTER - 120)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 120)) | (1 << (PostgreSQLParser.KW_ALSO - 120)) | (1 << (PostgreSQLParser.KW_ALTER - 120)) | (1 << (PostgreSQLParser.KW_ALWAYS - 120)) | (1 << (PostgreSQLParser.KW_ASSERTION - 120)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 120)) | (1 << (PostgreSQLParser.KW_AT - 120)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 120)) | (1 << (PostgreSQLParser.KW_BACKWARD - 120)) | (1 << (PostgreSQLParser.KW_BEFORE - 120)) | (1 << (PostgreSQLParser.KW_BEGIN - 120)) | (1 << (PostgreSQLParser.KW_BY - 120)) | (1 << (PostgreSQLParser.KW_CACHE - 120)) | (1 << (PostgreSQLParser.KW_CALLED - 120)) | (1 << (PostgreSQLParser.KW_CASCADE - 120)) | (1 << (PostgreSQLParser.KW_CASCADED - 120)))) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & ((1 << (PostgreSQLParser.KW_CATALOG - 152)) | (1 << (PostgreSQLParser.KW_CHAIN - 152)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 152)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 152)) | (1 << (PostgreSQLParser.KW_CLASS - 152)) | (1 << (PostgreSQLParser.KW_CLOSE - 152)) | (1 << (PostgreSQLParser.KW_CLUSTER - 152)) | (1 << (PostgreSQLParser.KW_COMMENT - 152)) | (1 << (PostgreSQLParser.KW_COMMENTS - 152)) | (1 << (PostgreSQLParser.KW_COMMIT - 152)) | (1 << (PostgreSQLParser.KW_COMMITTED - 152)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 152)) | (1 << (PostgreSQLParser.KW_CONNECTION - 152)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 152)) | (1 << (PostgreSQLParser.KW_CONTENT - 152)) | (1 << (PostgreSQLParser.KW_CONTINUE - 152)) | (1 << (PostgreSQLParser.KW_CONVERSION - 152)) | (1 << (PostgreSQLParser.KW_COPY - 152)) | (1 << (PostgreSQLParser.KW_COST - 152)) | (1 << (PostgreSQLParser.KW_CSV - 152)) | (1 << (PostgreSQLParser.KW_CURSOR - 152)) | (1 << (PostgreSQLParser.KW_CYCLE - 152)) | (1 << (PostgreSQLParser.KW_DATA - 152)) | (1 << (PostgreSQLParser.KW_DATABASE - 152)) | (1 << (PostgreSQLParser.KW_DAY - 152)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 152)) | (1 << (PostgreSQLParser.KW_DECLARE - 152)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 152)) | (1 << (PostgreSQLParser.KW_DEFERRED - 152)) | (1 << (PostgreSQLParser.KW_DEFINER - 152)) | (1 << (PostgreSQLParser.KW_DELETE - 152)) | (1 << (PostgreSQLParser.KW_DELIMITER - 152)))) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & ((1 << (PostgreSQLParser.KW_DELIMITERS - 184)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 184)) | (1 << (PostgreSQLParser.KW_DISABLE - 184)) | (1 << (PostgreSQLParser.KW_DISCARD - 184)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 184)) | (1 << (PostgreSQLParser.KW_DOMAIN - 184)) | (1 << (PostgreSQLParser.KW_DOUBLE - 184)) | (1 << (PostgreSQLParser.KW_DROP - 184)) | (1 << (PostgreSQLParser.KW_EACH - 184)) | (1 << (PostgreSQLParser.KW_ENABLE - 184)) | (1 << (PostgreSQLParser.KW_ENCODING - 184)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 184)) | (1 << (PostgreSQLParser.KW_ENUM - 184)) | (1 << (PostgreSQLParser.KW_ESCAPE - 184)) | (1 << (PostgreSQLParser.KW_EVENT - 184)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 184)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 184)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 184)) | (1 << (PostgreSQLParser.KW_EXECUTE - 184)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 184)) | (1 << (PostgreSQLParser.KW_EXTENSION - 184)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 184)) | (1 << (PostgreSQLParser.KW_FAMILY - 184)) | (1 << (PostgreSQLParser.KW_FIRST - 184)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 184)) | (1 << (PostgreSQLParser.KW_FORCE - 184)) | (1 << (PostgreSQLParser.KW_FORWARD - 184)) | (1 << (PostgreSQLParser.KW_FUNCTION - 184)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 184)) | (1 << (PostgreSQLParser.KW_GLOBAL - 184)) | (1 << (PostgreSQLParser.KW_GRANTED - 184)) | (1 << (PostgreSQLParser.KW_HANDLER - 184)))) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & ((1 << (PostgreSQLParser.KW_HEADER - 216)) | (1 << (PostgreSQLParser.KW_HOLD - 216)) | (1 << (PostgreSQLParser.KW_HOUR - 216)) | (1 << (PostgreSQLParser.KW_IDENTITY - 216)) | (1 << (PostgreSQLParser.KW_IF - 216)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 216)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 216)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 216)) | (1 << (PostgreSQLParser.KW_INCLUDING - 216)) | (1 << (PostgreSQLParser.KW_INCREMENT - 216)) | (1 << (PostgreSQLParser.KW_INDEX - 216)) | (1 << (PostgreSQLParser.KW_INDEXES - 216)) | (1 << (PostgreSQLParser.KW_INHERIT - 216)) | (1 << (PostgreSQLParser.KW_INHERITS - 216)) | (1 << (PostgreSQLParser.KW_INLINE - 216)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 216)) | (1 << (PostgreSQLParser.KW_INSERT - 216)) | (1 << (PostgreSQLParser.KW_INSTEAD - 216)) | (1 << (PostgreSQLParser.KW_INVOKER - 216)) | (1 << (PostgreSQLParser.KW_ISOLATION - 216)) | (1 << (PostgreSQLParser.KW_KEY - 216)) | (1 << (PostgreSQLParser.KW_LABEL - 216)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 216)))) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & ((1 << (PostgreSQLParser.KW_LARGE - 248)) | (1 << (PostgreSQLParser.KW_LAST - 248)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 248)) | (1 << (PostgreSQLParser.KW_LEVEL - 248)) | (1 << (PostgreSQLParser.KW_LISTEN - 248)) | (1 << (PostgreSQLParser.KW_LOAD - 248)) | (1 << (PostgreSQLParser.KW_LOCAL - 248)) | (1 << (PostgreSQLParser.KW_LOCATION - 248)) | (1 << (PostgreSQLParser.KW_LOCK - 248)) | (1 << (PostgreSQLParser.KW_MAPPING - 248)) | (1 << (PostgreSQLParser.KW_MATCH - 248)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 248)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 248)) | (1 << (PostgreSQLParser.KW_MINUTE - 248)) | (1 << (PostgreSQLParser.KW_MINVALUE - 248)) | (1 << (PostgreSQLParser.KW_MODE - 248)) | (1 << (PostgreSQLParser.KW_MONTH - 248)) | (1 << (PostgreSQLParser.KW_MOVE - 248)) | (1 << (PostgreSQLParser.KW_NAME - 248)) | (1 << (PostgreSQLParser.KW_NAMES - 248)) | (1 << (PostgreSQLParser.KW_NEXT - 248)) | (1 << (PostgreSQLParser.KW_NO - 248)) | (1 << (PostgreSQLParser.KW_NOTHING - 248)) | (1 << (PostgreSQLParser.KW_NOTIFY - 248)) | (1 << (PostgreSQLParser.KW_NOWAIT - 248)) | (1 << (PostgreSQLParser.KW_NULLS - 248)) | (1 << (PostgreSQLParser.KW_OBJECT - 248)) | (1 << (PostgreSQLParser.KW_OF - 248)) | (1 << (PostgreSQLParser.KW_OFF - 248)) | (1 << (PostgreSQLParser.KW_OIDS - 248)) | (1 << (PostgreSQLParser.KW_OPERATOR - 248)) | (1 << (PostgreSQLParser.KW_OPTION - 248)))) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & ((1 << (PostgreSQLParser.KW_OPTIONS - 280)) | (1 << (PostgreSQLParser.KW_OWNED - 280)) | (1 << (PostgreSQLParser.KW_OWNER - 280)) | (1 << (PostgreSQLParser.KW_PARSER - 280)) | (1 << (PostgreSQLParser.KW_PARTIAL - 280)) | (1 << (PostgreSQLParser.KW_PARTITION - 280)) | (1 << (PostgreSQLParser.KW_PASSING - 280)) | (1 << (PostgreSQLParser.KW_PASSWORD - 280)) | (1 << (PostgreSQLParser.KW_PLANS - 280)) | (1 << (PostgreSQLParser.KW_PRECEDING - 280)) | (1 << (PostgreSQLParser.KW_PREPARE - 280)) | (1 << (PostgreSQLParser.KW_PREPARED - 280)) | (1 << (PostgreSQLParser.KW_PRESERVE - 280)) | (1 << (PostgreSQLParser.KW_PRIOR - 280)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 280)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 280)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 280)) | (1 << (PostgreSQLParser.KW_PROGRAM - 280)) | (1 << (PostgreSQLParser.KW_QUOTE - 280)) | (1 << (PostgreSQLParser.KW_RANGE - 280)) | (1 << (PostgreSQLParser.KW_READ - 280)) | (1 << (PostgreSQLParser.KW_REASSIGN - 280)) | (1 << (PostgreSQLParser.KW_RECHECK - 280)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 280)) | (1 << (PostgreSQLParser.KW_REF - 280)) | (1 << (PostgreSQLParser.KW_REFRESH - 280)) | (1 << (PostgreSQLParser.KW_REINDEX - 280)) | (1 << (PostgreSQLParser.KW_RELATIVE - 280)) | (1 << (PostgreSQLParser.KW_RELEASE - 280)) | (1 << (PostgreSQLParser.KW_RENAME - 280)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 280)) | (1 << (PostgreSQLParser.KW_REPLACE - 280)))) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & ((1 << (PostgreSQLParser.KW_REPLICA - 312)) | (1 << (PostgreSQLParser.KW_RESET - 312)) | (1 << (PostgreSQLParser.KW_RESTART - 312)) | (1 << (PostgreSQLParser.KW_RESTRICT - 312)) | (1 << (PostgreSQLParser.KW_RETURNS - 312)) | (1 << (PostgreSQLParser.KW_REVOKE - 312)) | (1 << (PostgreSQLParser.KW_ROLE - 312)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 312)) | (1 << (PostgreSQLParser.KW_ROWS - 312)) | (1 << (PostgreSQLParser.KW_RULE - 312)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 312)) | (1 << (PostgreSQLParser.KW_SCHEMA - 312)) | (1 << (PostgreSQLParser.KW_SCROLL - 312)) | (1 << (PostgreSQLParser.KW_SEARCH - 312)) | (1 << (PostgreSQLParser.KW_SECOND - 312)) | (1 << (PostgreSQLParser.KW_SECURITY - 312)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 312)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 312)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 312)) | (1 << (PostgreSQLParser.KW_SERVER - 312)) | (1 << (PostgreSQLParser.KW_SESSION - 312)) | (1 << (PostgreSQLParser.KW_SET - 312)) | (1 << (PostgreSQLParser.KW_SHARE - 312)) | (1 << (PostgreSQLParser.KW_SHOW - 312)) | (1 << (PostgreSQLParser.KW_SIMPLE - 312)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 312)) | (1 << (PostgreSQLParser.KW_STABLE - 312)) | (1 << (PostgreSQLParser.KW_STANDALONE - 312)) | (1 << (PostgreSQLParser.KW_START - 312)) | (1 << (PostgreSQLParser.KW_STATEMENT - 312)) | (1 << (PostgreSQLParser.KW_STATISTICS - 312)) | (1 << (PostgreSQLParser.KW_STDIN - 312)))) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & ((1 << (PostgreSQLParser.KW_STDOUT - 344)) | (1 << (PostgreSQLParser.KW_STORAGE - 344)) | (1 << (PostgreSQLParser.KW_STRICT - 344)) | (1 << (PostgreSQLParser.KW_STRIP - 344)) | (1 << (PostgreSQLParser.KW_SYSID - 344)) | (1 << (PostgreSQLParser.KW_SYSTEM - 344)) | (1 << (PostgreSQLParser.KW_TABLES - 344)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 344)) | (1 << (PostgreSQLParser.KW_TEMP - 344)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 344)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 344)) | (1 << (PostgreSQLParser.KW_TEXT - 344)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 344)) | (1 << (PostgreSQLParser.KW_TRIGGER - 344)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 344)) | (1 << (PostgreSQLParser.KW_TRUSTED - 344)) | (1 << (PostgreSQLParser.KW_TYPE - 344)) | (1 << (PostgreSQLParser.KW_TYPES - 344)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 344)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 344)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 344)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 344)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 344)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 344)) | (1 << (PostgreSQLParser.KW_UNTIL - 344)) | (1 << (PostgreSQLParser.KW_UPDATE - 344)) | (1 << (PostgreSQLParser.KW_VACUUM - 344)) | (1 << (PostgreSQLParser.KW_VALID - 344)) | (1 << (PostgreSQLParser.KW_VALIDATE - 344)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 344)) | (1 << (PostgreSQLParser.KW_VARYING - 344)) | (1 << (PostgreSQLParser.KW_VERSION - 344)))) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & ((1 << (PostgreSQLParser.KW_VIEW - 376)) | (1 << (PostgreSQLParser.KW_VOLATILE - 376)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 376)) | (1 << (PostgreSQLParser.KW_WITHOUT - 376)) | (1 << (PostgreSQLParser.KW_WORK - 376)) | (1 << (PostgreSQLParser.KW_WRAPPER - 376)) | (1 << (PostgreSQLParser.KW_WRITE - 376)) | (1 << (PostgreSQLParser.KW_XML - 376)) | (1 << (PostgreSQLParser.KW_YEAR - 376)) | (1 << (PostgreSQLParser.KW_YES - 376)) | (1 << (PostgreSQLParser.KW_ZONE - 376)) | (1 << (PostgreSQLParser.KW_BETWEEN - 376)) | (1 << (PostgreSQLParser.KW_BIGINT - 376)) | (1 << (PostgreSQLParser.KW_BIT - 376)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 376)) | (1 << (PostgreSQLParser.KW_CHAR - 376)) | (1 << (PostgreSQLParser.KW_CHARACTER - 376)) | (1 << (PostgreSQLParser.KW_COALESCE - 376)) | (1 << (PostgreSQLParser.KW_DEC - 376)) | (1 << (PostgreSQLParser.KW_DECIMAL - 376)) | (1 << (PostgreSQLParser.KW_EXISTS - 376)) | (1 << (PostgreSQLParser.KW_EXTRACT - 376)) | (1 << (PostgreSQLParser.KW_FLOAT - 376)) | (1 << (PostgreSQLParser.KW_GREATEST - 376)) | (1 << (PostgreSQLParser.KW_INOUT - 376)) | (1 << (PostgreSQLParser.KW_INT - 376)) | (1 << (PostgreSQLParser.KW_INTEGER - 376)) | (1 << (PostgreSQLParser.KW_INTERVAL - 376)) | (1 << (PostgreSQLParser.KW_LEAST - 376)) | (1 << (PostgreSQLParser.KW_NATIONAL - 376)) | (1 << (PostgreSQLParser.KW_NCHAR - 376)) | (1 << (PostgreSQLParser.KW_NONE - 376)))) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & ((1 << (PostgreSQLParser.KW_NULLIF - 408)) | (1 << (PostgreSQLParser.KW_NUMERIC - 408)) | (1 << (PostgreSQLParser.KW_OVERLAY - 408)) | (1 << (PostgreSQLParser.KW_POSITION - 408)) | (1 << (PostgreSQLParser.KW_PRECISION - 408)) | (1 << (PostgreSQLParser.KW_REAL - 408)) | (1 << (PostgreSQLParser.KW_ROW - 408)) | (1 << (PostgreSQLParser.KW_SETOF - 408)) | (1 << (PostgreSQLParser.KW_SMALLINT - 408)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 408)) | (1 << (PostgreSQLParser.KW_TIME - 408)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 408)) | (1 << (PostgreSQLParser.KW_TREAT - 408)) | (1 << (PostgreSQLParser.KW_TRIM - 408)) | (1 << (PostgreSQLParser.KW_VALUES - 408)) | (1 << (PostgreSQLParser.KW_VARCHAR - 408)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 408)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 408)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 408)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 408)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 408)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 408)) | (1 << (PostgreSQLParser.KW_XMLPI - 408)) | (1 << (PostgreSQLParser.KW_XMLROOT - 408)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 408)) | (1 << (PostgreSQLParser.KW_CALL - 408)) | (1 << (PostgreSQLParser.KW_CURRENT - 408)) | (1 << (PostgreSQLParser.KW_ATTACH - 408)) | (1 << (PostgreSQLParser.KW_DETACH - 408)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 408)) | (1 << (PostgreSQLParser.KW_GENERATED - 408)) | (1 << (PostgreSQLParser.KW_LOGGED - 408)))) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & ((1 << (PostgreSQLParser.KW_STORED - 440)) | (1 << (PostgreSQLParser.KW_INCLUDE - 440)) | (1 << (PostgreSQLParser.KW_ROUTINE - 440)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 440)) | (1 << (PostgreSQLParser.KW_IMPORT - 440)) | (1 << (PostgreSQLParser.KW_POLICY - 440)) | (1 << (PostgreSQLParser.KW_METHOD - 440)) | (1 << (PostgreSQLParser.KW_REFERENCING - 440)) | (1 << (PostgreSQLParser.KW_NEW - 440)) | (1 << (PostgreSQLParser.KW_OLD - 440)) | (1 << (PostgreSQLParser.KW_VALUE - 440)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 440)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 440)) | (1 << (PostgreSQLParser.KW_OUT - 440)) | (1 << (PostgreSQLParser.KW_ROUTINES - 440)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 440)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 440)) | (1 << (PostgreSQLParser.KW_INPUT - 440)) | (1 << (PostgreSQLParser.KW_SUPPORT - 440)) | (1 << (PostgreSQLParser.KW_PARALLEL - 440)) | (1 << (PostgreSQLParser.KW_SQL - 440)) | (1 << (PostgreSQLParser.KW_DEPENDS - 440)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 440)) | (1 << (PostgreSQLParser.KW_CONFLICT - 440)) | (1 << (PostgreSQLParser.KW_SKIP - 440)) | (1 << (PostgreSQLParser.KW_LOCKED - 440)) | (1 << (PostgreSQLParser.KW_TIES - 440)) | (1 << (PostgreSQLParser.KW_ROLLUP - 440)) | (1 << (PostgreSQLParser.KW_CUBE - 440)) | (1 << (PostgreSQLParser.KW_GROUPING - 440)) | (1 << (PostgreSQLParser.KW_SETS - 440)))) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & ((1 << (PostgreSQLParser.KW_ORDINALITY - 473)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 473)) | (1 << (PostgreSQLParser.KW_COLUMNS - 473)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 473)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 473)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 473)) | (1 << (PostgreSQLParser.KW_WITHIN - 473)) | (1 << (PostgreSQLParser.KW_FILTER - 473)) | (1 << (PostgreSQLParser.KW_GROUPS - 473)) | (1 << (PostgreSQLParser.KW_OTHERS - 473)) | (1 << (PostgreSQLParser.KW_NFC - 473)) | (1 << (PostgreSQLParser.KW_NFD - 473)) | (1 << (PostgreSQLParser.KW_NFKC - 473)) | (1 << (PostgreSQLParser.KW_NFKD - 473)) | (1 << (PostgreSQLParser.KW_UESCAPE - 473)) | (1 << (PostgreSQLParser.KW_VIEWS - 473)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 473)) | (1 << (PostgreSQLParser.KW_DUMP - 473)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 473)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 473)) | (1 << (PostgreSQLParser.KW_ERROR - 473)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 473)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 473)) | (1 << (PostgreSQLParser.KW_ALIAS - 473)) | (1 << (PostgreSQLParser.KW_CONSTANT - 473)) | (1 << (PostgreSQLParser.KW_PERFORM - 473)) | (1 << (PostgreSQLParser.KW_GET - 473)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 473)) | (1 << (PostgreSQLParser.KW_STACKED - 473)) | (1 << (PostgreSQLParser.KW_ELSIF - 473)) | (1 << (PostgreSQLParser.KW_REVERSE - 473)))) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & ((1 << (PostgreSQLParser.KW_SLICE - 506)) | (1 << (PostgreSQLParser.KW_EXIT - 506)) | (1 << (PostgreSQLParser.KW_RETURN - 506)) | (1 << (PostgreSQLParser.KW_QUERY - 506)) | (1 << (PostgreSQLParser.KW_RAISE - 506)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 506)) | (1 << (PostgreSQLParser.KW_DEBUG - 506)) | (1 << (PostgreSQLParser.KW_LOG - 506)) | (1 << (PostgreSQLParser.KW_INFO - 506)) | (1 << (PostgreSQLParser.KW_NOTICE - 506)) | (1 << (PostgreSQLParser.KW_WARNING - 506)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 506)) | (1 << (PostgreSQLParser.KW_ASSERT - 506)) | (1 << (PostgreSQLParser.KW_OPEN - 506)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 4139;
					this.opttableelementlist();
					}
				}

				this.state = 4142;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 4144;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_INHERITS) {
					{
					this.state = 4143;
					this.optinherit();
					}
				}

				this.state = 4146;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 4147;
				this.name();
				this.state = 4149;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 320, this._ctx) ) {
				case 1:
					{
					this.state = 4148;
					this.create_generic_options();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4151;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4152;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 4153;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 4155;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 321, this._ctx) ) {
				case 1:
					{
					this.state = 4154;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 4157;
				this.table_name_create();
				this.state = 4158;
				this.match(PostgreSQLParser.KW_PARTITION);
				this.state = 4159;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 4160;
				this.table_name();
				this.state = 4162;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 4161;
					this.opttypedtableelementlist();
					}
				}

				this.state = 4164;
				this.partitionboundspec();
				this.state = 4165;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 4166;
				this.name();
				this.state = 4168;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 323, this._ctx) ) {
				case 1:
					{
					this.state = 4167;
					this.create_generic_options();
					}
					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 importforeignschemastmt(): ImportforeignschemastmtContext {
		let _localctx: ImportforeignschemastmtContext = new ImportforeignschemastmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 394, PostgreSQLParser.RULE_importforeignschemastmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4172;
			this.match(PostgreSQLParser.KW_IMPORT);
			this.state = 4173;
			this.match(PostgreSQLParser.KW_FOREIGN);
			this.state = 4174;
			this.match(PostgreSQLParser.KW_SCHEMA);
			this.state = 4175;
			this.schema_name();
			this.state = 4177;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_EXCEPT || _la === PostgreSQLParser.KW_LIMIT) {
				{
				this.state = 4176;
				this.import_qualification();
				}
			}

			this.state = 4179;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 4180;
			this.match(PostgreSQLParser.KW_SERVER);
			this.state = 4181;
			this.name();
			this.state = 4182;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 4183;
			this.name();
			this.state = 4185;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 326, this._ctx) ) {
			case 1:
				{
				this.state = 4184;
				this.create_generic_options();
				}
				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 import_qualification_type(): Import_qualification_typeContext {
		let _localctx: Import_qualification_typeContext = new Import_qualification_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 396, PostgreSQLParser.RULE_import_qualification_type);
		try {
			this.state = 4190;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_LIMIT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4187;
				this.match(PostgreSQLParser.KW_LIMIT);
				this.state = 4188;
				this.match(PostgreSQLParser.KW_TO);
				}
				break;
			case PostgreSQLParser.KW_EXCEPT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4189;
				this.match(PostgreSQLParser.KW_EXCEPT);
				}
				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 import_qualification(): Import_qualificationContext {
		let _localctx: Import_qualificationContext = new Import_qualificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 398, PostgreSQLParser.RULE_import_qualification);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4192;
			this.import_qualification_type();
			this.state = 4193;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4194;
			this.relation_expr_list();
			this.state = 4195;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createusermappingstmt(): CreateusermappingstmtContext {
		let _localctx: CreateusermappingstmtContext = new CreateusermappingstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 400, PostgreSQLParser.RULE_createusermappingstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4197;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4198;
			this.match(PostgreSQLParser.KW_USER);
			this.state = 4199;
			this.match(PostgreSQLParser.KW_MAPPING);
			this.state = 4201;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_IF) {
				{
				this.state = 4200;
				this.opt_if_not_exists();
				}
			}

			this.state = 4203;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4204;
			this.auth_ident();
			this.state = 4205;
			this.match(PostgreSQLParser.KW_SERVER);
			this.state = 4206;
			this.name();
			this.state = 4208;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 329, this._ctx) ) {
			case 1:
				{
				this.state = 4207;
				this.create_generic_options();
				}
				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 auth_ident(): Auth_identContext {
		let _localctx: Auth_identContext = new Auth_identContext(this._ctx, this.state);
		this.enterRule(_localctx, 402, PostgreSQLParser.RULE_auth_ident);
		try {
			this.state = 4212;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_PUBLIC:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4210;
				this.rolespec();
				}
				break;
			case PostgreSQLParser.KW_USER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4211;
				this.match(PostgreSQLParser.KW_USER);
				}
				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 alterusermappingstmt(): AlterusermappingstmtContext {
		let _localctx: AlterusermappingstmtContext = new AlterusermappingstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 404, PostgreSQLParser.RULE_alterusermappingstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4214;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 4215;
			this.match(PostgreSQLParser.KW_USER);
			this.state = 4216;
			this.match(PostgreSQLParser.KW_MAPPING);
			this.state = 4217;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4218;
			this.auth_ident();
			this.state = 4219;
			this.match(PostgreSQLParser.KW_SERVER);
			this.state = 4220;
			this.name();
			this.state = 4221;
			this.alter_generic_options();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createpolicystmt(): CreatepolicystmtContext {
		let _localctx: CreatepolicystmtContext = new CreatepolicystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 406, PostgreSQLParser.RULE_createpolicystmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4223;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4224;
			this.match(PostgreSQLParser.KW_POLICY);
			this.state = 4225;
			this.name();
			this.state = 4226;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 4227;
			this.qualified_name();
			this.state = 4229;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 331, this._ctx) ) {
			case 1:
				{
				this.state = 4228;
				this.rowsecuritydefaultpermissive();
				}
				break;
			}
			this.state = 4232;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FOR) {
				{
				this.state = 4231;
				this.rowsecuritydefaultforcmd();
				}
			}

			this.state = 4235;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TO) {
				{
				this.state = 4234;
				this.rowsecuritydefaulttorole();
				}
			}

			this.state = 4238;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 4237;
				this.rowsecurityoptionalexpr();
				}
			}

			this.state = 4241;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 335, this._ctx) ) {
			case 1:
				{
				this.state = 4240;
				this.rowsecurityoptionalwithcheck();
				}
				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 alterpolicystmt(): AlterpolicystmtContext {
		let _localctx: AlterpolicystmtContext = new AlterpolicystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 408, PostgreSQLParser.RULE_alterpolicystmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4243;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 4244;
			this.match(PostgreSQLParser.KW_POLICY);
			this.state = 4245;
			this.name();
			this.state = 4246;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 4247;
			this.qualified_name();
			this.state = 4249;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TO) {
				{
				this.state = 4248;
				this.rowsecurityoptionaltorole();
				}
			}

			this.state = 4252;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 4251;
				this.rowsecurityoptionalexpr();
				}
			}

			this.state = 4255;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 338, this._ctx) ) {
			case 1:
				{
				this.state = 4254;
				this.rowsecurityoptionalwithcheck();
				}
				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 alterprocedurestmt(): AlterprocedurestmtContext {
		let _localctx: AlterprocedurestmtContext = new AlterprocedurestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 410, PostgreSQLParser.RULE_alterprocedurestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4257;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 4258;
			this.match(PostgreSQLParser.KW_PROCEDURE);
			this.state = 4259;
			this.procedure_name();
			this.state = 4261;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 4260;
				this.func_args();
				}
			}

			this.state = 4263;
			this.procedure_cluase();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public procedure_cluase(): Procedure_cluaseContext {
		let _localctx: Procedure_cluaseContext = new Procedure_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 412, PostgreSQLParser.RULE_procedure_cluase);
		let _la: number;
		try {
			let _alt: number;
			this.state = 4291;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 343, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4265;
				this.procedure_action();
				this.state = 4269;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 340, this._ctx);
				while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
					if (_alt === 1) {
						{
						{
						this.state = 4266;
						this.procedure_action();
						}
						}
					}
					this.state = 4271;
					this._errHandler.sync(this);
					_alt = this.interpreter.adaptivePredict(this._input, 340, this._ctx);
				}
				this.state = 4273;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 341, this._ctx) ) {
				case 1:
					{
					this.state = 4272;
					this.match(PostgreSQLParser.KW_RESTRICT);
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4275;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 4276;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 4277;
				this.procedure_name_create();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4278;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 4279;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 4280;
				this.rolespec();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4281;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 4282;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 4283;
				this.schema_name_create();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4285;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 4284;
					this.match(PostgreSQLParser.KW_NO);
					}
				}

				this.state = 4287;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 4288;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 4289;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 4290;
				this.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 procedure_action(): Procedure_actionContext {
		let _localctx: Procedure_actionContext = new Procedure_actionContext(this._ctx, this.state);
		this.enterRule(_localctx, 414, PostgreSQLParser.RULE_procedure_action);
		let _la: number;
		try {
			this.state = 4321;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 348, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4303;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 346, this._ctx) ) {
				case 1:
					{
					this.state = 4294;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_EXTERNAL) {
						{
						this.state = 4293;
						this.match(PostgreSQLParser.KW_EXTERNAL);
						}
					}

					this.state = 4296;
					this.match(PostgreSQLParser.KW_SECURITY);
					this.state = 4297;
					this.match(PostgreSQLParser.KW_INVOKER);
					}
					break;

				case 2:
					{
					this.state = 4299;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_EXTERNAL) {
						{
						this.state = 4298;
						this.match(PostgreSQLParser.KW_EXTERNAL);
						}
					}

					this.state = 4301;
					this.match(PostgreSQLParser.KW_SECURITY);
					this.state = 4302;
					this.match(PostgreSQLParser.KW_DEFINER);
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4305;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 4306;
				this.name();
				this.state = 4307;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.STAR || _la === PostgreSQLParser.KW_TO)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 4310;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 347, this._ctx) ) {
				case 1:
					{
					this.state = 4308;
					this.name();
					}
					break;

				case 2:
					{
					this.state = 4309;
					this.match(PostgreSQLParser.KW_DEFAULT);
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4312;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 4313;
				this.name();
				this.state = 4314;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 4315;
				this.match(PostgreSQLParser.KW_CURRENT);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4317;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 4318;
				this.name();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4319;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 4320;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 rowsecurityoptionalexpr(): RowsecurityoptionalexprContext {
		let _localctx: RowsecurityoptionalexprContext = new RowsecurityoptionalexprContext(this._ctx, this.state);
		this.enterRule(_localctx, 416, PostgreSQLParser.RULE_rowsecurityoptionalexpr);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4323;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 4324;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4325;
			this.a_expr();
			this.state = 4326;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext {
		let _localctx: RowsecurityoptionalwithcheckContext = new RowsecurityoptionalwithcheckContext(this._ctx, this.state);
		this.enterRule(_localctx, 418, PostgreSQLParser.RULE_rowsecurityoptionalwithcheck);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4328;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 4329;
			this.match(PostgreSQLParser.KW_CHECK);
			this.state = 4330;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4331;
			this.a_expr();
			this.state = 4332;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowsecuritydefaulttorole(): RowsecuritydefaulttoroleContext {
		let _localctx: RowsecuritydefaulttoroleContext = new RowsecuritydefaulttoroleContext(this._ctx, this.state);
		this.enterRule(_localctx, 420, PostgreSQLParser.RULE_rowsecuritydefaulttorole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4334;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 4335;
			this.role_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowsecurityoptionaltorole(): RowsecurityoptionaltoroleContext {
		let _localctx: RowsecurityoptionaltoroleContext = new RowsecurityoptionaltoroleContext(this._ctx, this.state);
		this.enterRule(_localctx, 422, PostgreSQLParser.RULE_rowsecurityoptionaltorole);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4337;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 4338;
			this.role_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowsecuritydefaultpermissive(): RowsecuritydefaultpermissiveContext {
		let _localctx: RowsecuritydefaultpermissiveContext = new RowsecuritydefaultpermissiveContext(this._ctx, this.state);
		this.enterRule(_localctx, 424, PostgreSQLParser.RULE_rowsecuritydefaultpermissive);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4340;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 4344;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_PERMISSIVE:
				{
				this.state = 4341;
				this.match(PostgreSQLParser.KW_PERMISSIVE);
				}
				break;
			case PostgreSQLParser.KW_RESTRICTIVE:
				{
				this.state = 4342;
				this.match(PostgreSQLParser.KW_RESTRICTIVE);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 4343;
				this.identifier();
				}
				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 rowsecuritydefaultforcmd(): RowsecuritydefaultforcmdContext {
		let _localctx: RowsecuritydefaultforcmdContext = new RowsecuritydefaultforcmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 426, PostgreSQLParser.RULE_rowsecuritydefaultforcmd);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4346;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4347;
			this.row_security_cmd();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public row_security_cmd(): Row_security_cmdContext {
		let _localctx: Row_security_cmdContext = new Row_security_cmdContext(this._ctx, this.state);
		this.enterRule(_localctx, 428, PostgreSQLParser.RULE_row_security_cmd);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4349;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_SELECT || _la === PostgreSQLParser.KW_DELETE || _la === PostgreSQLParser.KW_INSERT || _la === PostgreSQLParser.KW_UPDATE)) {
			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 createamstmt(): CreateamstmtContext {
		let _localctx: CreateamstmtContext = new CreateamstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 430, PostgreSQLParser.RULE_createamstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4351;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4352;
			this.match(PostgreSQLParser.KW_ACCESS);
			this.state = 4353;
			this.match(PostgreSQLParser.KW_METHOD);
			this.state = 4354;
			this.name();
			this.state = 4355;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 4356;
			this.am_type();
			this.state = 4357;
			this.match(PostgreSQLParser.KW_HANDLER);
			this.state = 4358;
			this.handler_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public am_type(): Am_typeContext {
		let _localctx: Am_typeContext = new Am_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 432, PostgreSQLParser.RULE_am_type);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4360;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_TABLE || _la === PostgreSQLParser.KW_INDEX)) {
			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 createtrigstmt(): CreatetrigstmtContext {
		let _localctx: CreatetrigstmtContext = new CreatetrigstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 434, PostgreSQLParser.RULE_createtrigstmt);
		let _la: number;
		try {
			this.state = 4416;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 359, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4362;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4364;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OR) {
					{
					this.state = 4363;
					this.opt_or_replace();
					}
				}

				this.state = 4366;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 4367;
				this.name();
				this.state = 4368;
				this.triggeractiontime();
				this.state = 4369;
				this.triggerevents();
				this.state = 4370;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 4371;
				this.table_name();
				this.state = 4373;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_REFERENCING) {
					{
					this.state = 4372;
					this.triggerreferencing();
					}
				}

				this.state = 4376;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 4375;
					this.triggerforspec();
					}
				}

				this.state = 4379;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHEN) {
					{
					this.state = 4378;
					this.triggerwhen();
					}
				}

				this.state = 4381;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 4382;
				this.function_or_procedure();
				this.state = 4383;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4384;
				this.triggerfuncargs();
				this.state = 4385;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4387;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4389;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OR) {
					{
					this.state = 4388;
					this.opt_or_replace();
					}
				}

				this.state = 4392;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONSTRAINT) {
					{
					this.state = 4391;
					this.match(PostgreSQLParser.KW_CONSTRAINT);
					}
				}

				this.state = 4394;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 4395;
				this.name();
				this.state = 4396;
				this.triggeractiontime();
				this.state = 4397;
				this.triggerevents();
				this.state = 4398;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 4399;
				this.table_name();
				this.state = 4401;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM) {
					{
					this.state = 4400;
					this.optconstrfromtable();
					}
				}

				this.state = 4403;
				this.constraintattributespec();
				this.state = 4405;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 4404;
					this.foreachrow();
					}
				}

				this.state = 4408;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHEN) {
					{
					this.state = 4407;
					this.triggerwhen();
					}
				}

				this.state = 4410;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 4411;
				this.function_or_procedure();
				this.state = 4412;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4413;
				this.triggerfuncargs();
				this.state = 4414;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 triggeractiontime(): TriggeractiontimeContext {
		let _localctx: TriggeractiontimeContext = new TriggeractiontimeContext(this._ctx, this.state);
		this.enterRule(_localctx, 436, PostgreSQLParser.RULE_triggeractiontime);
		try {
			this.state = 4422;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_BEFORE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4418;
				this.match(PostgreSQLParser.KW_BEFORE);
				}
				break;
			case PostgreSQLParser.KW_AFTER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4419;
				this.match(PostgreSQLParser.KW_AFTER);
				}
				break;
			case PostgreSQLParser.KW_INSTEAD:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4420;
				this.match(PostgreSQLParser.KW_INSTEAD);
				this.state = 4421;
				this.match(PostgreSQLParser.KW_OF);
				}
				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 foreachrow(): ForeachrowContext {
		let _localctx: ForeachrowContext = new ForeachrowContext(this._ctx, this.state);
		this.enterRule(_localctx, 438, PostgreSQLParser.RULE_foreachrow);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4424;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4426;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_EACH) {
				{
				this.state = 4425;
				this.match(PostgreSQLParser.KW_EACH);
				}
			}

			this.state = 4428;
			this.roworstatment();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public roworstatment(): RoworstatmentContext {
		let _localctx: RoworstatmentContext = new RoworstatmentContext(this._ctx, this.state);
		this.enterRule(_localctx, 440, PostgreSQLParser.RULE_roworstatment);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4430;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_STATEMENT || _la === PostgreSQLParser.KW_ROW)) {
			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 triggerevents(): TriggereventsContext {
		let _localctx: TriggereventsContext = new TriggereventsContext(this._ctx, this.state);
		this.enterRule(_localctx, 442, PostgreSQLParser.RULE_triggerevents);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4432;
			this.triggeroneevent();
			this.state = 4437;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_OR) {
				{
				{
				this.state = 4433;
				this.match(PostgreSQLParser.KW_OR);
				this.state = 4434;
				this.triggeroneevent();
				}
				}
				this.state = 4439;
				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 triggeroneevent(): TriggeroneeventContext {
		let _localctx: TriggeroneeventContext = new TriggeroneeventContext(this._ctx, this.state);
		this.enterRule(_localctx, 444, PostgreSQLParser.RULE_triggeroneevent);
		try {
			this.state = 4447;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 363, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4440;
				this.match(PostgreSQLParser.KW_INSERT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4441;
				this.match(PostgreSQLParser.KW_DELETE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4442;
				this.match(PostgreSQLParser.KW_UPDATE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4443;
				this.match(PostgreSQLParser.KW_UPDATE);
				this.state = 4444;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 4445;
				this.columnlist();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4446;
				this.match(PostgreSQLParser.KW_TRUNCATE);
				}
				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 triggerreferencing(): TriggerreferencingContext {
		let _localctx: TriggerreferencingContext = new TriggerreferencingContext(this._ctx, this.state);
		this.enterRule(_localctx, 446, PostgreSQLParser.RULE_triggerreferencing);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4449;
			this.match(PostgreSQLParser.KW_REFERENCING);
			this.state = 4450;
			this.triggertransitions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggertransitions(): TriggertransitionsContext {
		let _localctx: TriggertransitionsContext = new TriggertransitionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 448, PostgreSQLParser.RULE_triggertransitions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4453;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 4452;
				this.triggertransition();
				}
				}
				this.state = 4455;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_NEW || _la === PostgreSQLParser.KW_OLD);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggertransition(): TriggertransitionContext {
		let _localctx: TriggertransitionContext = new TriggertransitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 450, PostgreSQLParser.RULE_triggertransition);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4457;
			this.transitionoldornew();
			this.state = 4458;
			this.transitionrowortable();
			this.state = 4460;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 4459;
				this.opt_as();
				}
			}

			this.state = 4462;
			this.transitionrelname();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transitionoldornew(): TransitionoldornewContext {
		let _localctx: TransitionoldornewContext = new TransitionoldornewContext(this._ctx, this.state);
		this.enterRule(_localctx, 452, PostgreSQLParser.RULE_transitionoldornew);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4464;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_NEW || _la === PostgreSQLParser.KW_OLD)) {
			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 transitionrowortable(): TransitionrowortableContext {
		let _localctx: TransitionrowortableContext = new TransitionrowortableContext(this._ctx, this.state);
		this.enterRule(_localctx, 454, PostgreSQLParser.RULE_transitionrowortable);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4466;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_TABLE || _la === PostgreSQLParser.KW_ROW)) {
			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 transitionrelname(): TransitionrelnameContext {
		let _localctx: TransitionrelnameContext = new TransitionrelnameContext(this._ctx, this.state);
		this.enterRule(_localctx, 456, PostgreSQLParser.RULE_transitionrelname);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4468;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerforspec(): TriggerforspecContext {
		let _localctx: TriggerforspecContext = new TriggerforspecContext(this._ctx, this.state);
		this.enterRule(_localctx, 458, PostgreSQLParser.RULE_triggerforspec);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4470;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4472;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_EACH) {
				{
				this.state = 4471;
				this.triggerforopteach();
				}
			}

			this.state = 4474;
			this.triggerfortype();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerforopteach(): TriggerforopteachContext {
		let _localctx: TriggerforopteachContext = new TriggerforopteachContext(this._ctx, this.state);
		this.enterRule(_localctx, 460, PostgreSQLParser.RULE_triggerforopteach);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4476;
			this.match(PostgreSQLParser.KW_EACH);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public triggerfortype(): TriggerfortypeContext {
		let _localctx: TriggerfortypeContext = new TriggerfortypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 462, PostgreSQLParser.RULE_triggerfortype);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4478;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_STATEMENT || _la === PostgreSQLParser.KW_ROW)) {
			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 triggerwhen(): TriggerwhenContext {
		let _localctx: TriggerwhenContext = new TriggerwhenContext(this._ctx, this.state);
		this.enterRule(_localctx, 464, PostgreSQLParser.RULE_triggerwhen);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4480;
			this.match(PostgreSQLParser.KW_WHEN);
			this.state = 4481;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4482;
			this.a_expr();
			this.state = 4483;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public function_or_procedure(): Function_or_procedureContext {
		let _localctx: Function_or_procedureContext = new Function_or_procedureContext(this._ctx, this.state);
		this.enterRule(_localctx, 466, PostgreSQLParser.RULE_function_or_procedure);
		try {
			this.state = 4489;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FUNCTION:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4485;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 4486;
				this.function_name();
				}
				break;
			case PostgreSQLParser.KW_PROCEDURE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4487;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 4488;
				this.procedure_name();
				}
				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 triggerfuncargs(): TriggerfuncargsContext {
		let _localctx: TriggerfuncargsContext = new TriggerfuncargsContext(this._ctx, this.state);
		this.enterRule(_localctx, 468, PostgreSQLParser.RULE_triggerfuncargs);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4493;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ALL:
			case PostgreSQLParser.KW_ANALYSE:
			case PostgreSQLParser.KW_ANALYZE:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ANY:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_AS:
			case PostgreSQLParser.KW_ASC:
			case PostgreSQLParser.KW_ASYMMETRIC:
			case PostgreSQLParser.KW_BOTH:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_CHECK:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CREATE:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DEFERRABLE:
			case PostgreSQLParser.KW_DESC:
			case PostgreSQLParser.KW_DISTINCT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_ELSE:
			case PostgreSQLParser.KW_EXCEPT:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_FOR:
			case PostgreSQLParser.KW_FOREIGN:
			case PostgreSQLParser.KW_FROM:
			case PostgreSQLParser.KW_GRANT:
			case PostgreSQLParser.KW_GROUP:
			case PostgreSQLParser.KW_HAVING:
			case PostgreSQLParser.KW_IN:
			case PostgreSQLParser.KW_INITIALLY:
			case PostgreSQLParser.KW_INTERSECT:
			case PostgreSQLParser.KW_LATERAL:
			case PostgreSQLParser.KW_LEADING:
			case PostgreSQLParser.KW_LIMIT:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_OFFSET:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_ONLY:
			case PostgreSQLParser.KW_OR:
			case PostgreSQLParser.KW_ORDER:
			case PostgreSQLParser.KW_PLACING:
			case PostgreSQLParser.KW_PRIMARY:
			case PostgreSQLParser.KW_REFERENCES:
			case PostgreSQLParser.KW_RETURNING:
			case PostgreSQLParser.KW_SELECT:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_SOME:
			case PostgreSQLParser.KW_SYMMETRIC:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_THEN:
			case PostgreSQLParser.KW_TO:
			case PostgreSQLParser.KW_TRAILING:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNION:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_USING:
			case PostgreSQLParser.KW_VARIADIC:
			case PostgreSQLParser.KW_WHEN:
			case PostgreSQLParser.KW_WHERE:
			case PostgreSQLParser.KW_WINDOW:
			case PostgreSQLParser.KW_WITH:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_END:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 4491;
				this.triggerfuncarg();
				}
				break;
			case PostgreSQLParser.CLOSE_PAREN:
			case PostgreSQLParser.COMMA:
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 4499;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4495;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4496;
				this.triggerfuncarg();
				}
				}
				this.state = 4501;
				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 triggerfuncarg(): TriggerfuncargContext {
		let _localctx: TriggerfuncargContext = new TriggerfuncargContext(this._ctx, this.state);
		this.enterRule(_localctx, 470, PostgreSQLParser.RULE_triggerfuncarg);
		try {
			this.state = 4506;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 370, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4502;
				this.iconst();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4505;
				this.collabel();
				}
				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 optconstrfromtable(): OptconstrfromtableContext {
		let _localctx: OptconstrfromtableContext = new OptconstrfromtableContext(this._ctx, this.state);
		this.enterRule(_localctx, 472, PostgreSQLParser.RULE_optconstrfromtable);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4508;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 4509;
			this.qualified_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constraintattributespec(): ConstraintattributespecContext {
		let _localctx: ConstraintattributespecContext = new ConstraintattributespecContext(this._ctx, this.state);
		this.enterRule(_localctx, 474, PostgreSQLParser.RULE_constraintattributespec);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4514;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 371, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 4511;
					this.constraintattributeElem();
					}
					}
				}
				this.state = 4516;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 371, 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 constraintattributeElem(): ConstraintattributeElemContext {
		let _localctx: ConstraintattributeElemContext = new ConstraintattributeElemContext(this._ctx, this.state);
		this.enterRule(_localctx, 476, PostgreSQLParser.RULE_constraintattributeElem);
		try {
			this.state = 4528;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 372, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4517;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 4518;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4519;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4520;
				this.match(PostgreSQLParser.KW_INITIALLY);
				this.state = 4521;
				this.match(PostgreSQLParser.KW_IMMEDIATE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4522;
				this.match(PostgreSQLParser.KW_INITIALLY);
				this.state = 4523;
				this.match(PostgreSQLParser.KW_DEFERRED);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4524;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 4525;
				this.match(PostgreSQLParser.KW_VALID);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4526;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 4527;
				this.match(PostgreSQLParser.KW_INHERIT);
				}
				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 createeventtrigstmt(): CreateeventtrigstmtContext {
		let _localctx: CreateeventtrigstmtContext = new CreateeventtrigstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 478, PostgreSQLParser.RULE_createeventtrigstmt);
		try {
			this.state = 4554;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 373, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4530;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4531;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 4532;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 4533;
				this.name();
				this.state = 4534;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 4535;
				this.collabel();
				this.state = 4536;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 4537;
				this.function_or_procedure();
				this.state = 4538;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4539;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4541;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4542;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 4543;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 4544;
				this.name();
				this.state = 4545;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 4546;
				this.collabel();
				this.state = 4547;
				this.match(PostgreSQLParser.KW_WHEN);
				this.state = 4548;
				this.event_trigger_when_list();
				this.state = 4549;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 4550;
				this.function_or_procedure();
				this.state = 4551;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4552;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 event_trigger_when_list(): Event_trigger_when_listContext {
		let _localctx: Event_trigger_when_listContext = new Event_trigger_when_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 480, PostgreSQLParser.RULE_event_trigger_when_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4556;
			this.event_trigger_when_item();
			this.state = 4561;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_AND) {
				{
				{
				this.state = 4557;
				this.match(PostgreSQLParser.KW_AND);
				this.state = 4558;
				this.event_trigger_when_item();
				}
				}
				this.state = 4563;
				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 event_trigger_when_item(): Event_trigger_when_itemContext {
		let _localctx: Event_trigger_when_itemContext = new Event_trigger_when_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 482, PostgreSQLParser.RULE_event_trigger_when_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4564;
			this.colid();
			this.state = 4565;
			this.match(PostgreSQLParser.KW_IN);
			this.state = 4566;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4567;
			this.event_trigger_value_list();
			this.state = 4568;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public event_trigger_value_list(): Event_trigger_value_listContext {
		let _localctx: Event_trigger_value_listContext = new Event_trigger_value_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 484, PostgreSQLParser.RULE_event_trigger_value_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4570;
			this.sconst();
			this.state = 4575;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4571;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4572;
				this.sconst();
				}
				}
				this.state = 4577;
				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 altereventtrigstmt(): AltereventtrigstmtContext {
		let _localctx: AltereventtrigstmtContext = new AltereventtrigstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 486, PostgreSQLParser.RULE_altereventtrigstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4578;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 4579;
			this.match(PostgreSQLParser.KW_EVENT);
			this.state = 4580;
			this.match(PostgreSQLParser.KW_TRIGGER);
			this.state = 4581;
			this.name();
			this.state = 4582;
			this.enable_trigger();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enable_trigger(): Enable_triggerContext {
		let _localctx: Enable_triggerContext = new Enable_triggerContext(this._ctx, this.state);
		this.enterRule(_localctx, 488, PostgreSQLParser.RULE_enable_trigger);
		try {
			this.state = 4590;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 376, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4584;
				this.match(PostgreSQLParser.KW_ENABLE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4585;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 4586;
				this.match(PostgreSQLParser.KW_REPLICA);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4587;
				this.match(PostgreSQLParser.KW_ENABLE);
				this.state = 4588;
				this.match(PostgreSQLParser.KW_ALWAYS);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4589;
				this.match(PostgreSQLParser.KW_DISABLE);
				}
				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 createassertionstmt(): CreateassertionstmtContext {
		let _localctx: CreateassertionstmtContext = new CreateassertionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 490, PostgreSQLParser.RULE_createassertionstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4592;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4593;
			this.match(PostgreSQLParser.KW_ASSERTION);
			this.state = 4594;
			this.any_name();
			this.state = 4595;
			this.match(PostgreSQLParser.KW_CHECK);
			this.state = 4596;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4597;
			this.a_expr();
			this.state = 4598;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			this.state = 4599;
			this.constraintattributespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public definestmt(): DefinestmtContext {
		let _localctx: DefinestmtContext = new DefinestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 492, PostgreSQLParser.RULE_definestmt);
		let _la: number;
		try {
			this.state = 4704;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 383, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4601;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4603;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OR) {
					{
					this.state = 4602;
					this.opt_or_replace();
					}
				}

				this.state = 4605;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 4606;
				this.function_name();
				this.state = 4607;
				this.aggr_args();
				this.state = 4608;
				this.definition();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4610;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4612;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OR) {
					{
					this.state = 4611;
					this.opt_or_replace();
					}
				}

				this.state = 4614;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 4615;
				this.function_name();
				this.state = 4616;
				this.old_aggr_definition();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4618;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4619;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4620;
				this.any_operator();
				this.state = 4621;
				this.definition();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4623;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4624;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4625;
				this.any_name();
				this.state = 4626;
				this.definition();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4628;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4629;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4630;
				this.any_name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4631;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4632;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4633;
				this.any_name();
				this.state = 4634;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 4635;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4637;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 4636;
					this.opttablefuncelementlist();
					}
				}

				this.state = 4639;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4641;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4642;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4643;
				this.any_name();
				this.state = 4644;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 4645;
				this.match(PostgreSQLParser.KW_ENUM);
				this.state = 4646;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4648;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & ((1 << (PostgreSQLParser.StringConstant - 558)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 558)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 558)) | (1 << (PostgreSQLParser.EscapeStringConstant - 558)))) !== 0)) {
					{
					this.state = 4647;
					this.opt_enum_val_list();
					}
				}

				this.state = 4650;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 4652;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4653;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4654;
				this.any_name();
				this.state = 4655;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 4656;
				this.match(PostgreSQLParser.KW_RANGE);
				this.state = 4657;
				this.definition();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 4659;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4660;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 4661;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 4662;
				this.match(PostgreSQLParser.KW_PARSER);
				this.state = 4663;
				this.any_name();
				this.state = 4664;
				this.definition();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 4666;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4667;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 4668;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 4669;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 4670;
				this.any_name();
				this.state = 4671;
				this.definition();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 4673;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4674;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 4675;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 4676;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				this.state = 4677;
				this.any_name();
				this.state = 4678;
				this.definition();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 4680;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4681;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 4682;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 4683;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 4684;
				this.any_name();
				this.state = 4685;
				this.definition();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 4687;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4688;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 4690;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 381, this._ctx) ) {
				case 1:
					{
					this.state = 4689;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 4692;
				this.any_name();
				this.state = 4693;
				this.definition();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 4695;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 4696;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 4698;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 382, this._ctx) ) {
				case 1:
					{
					this.state = 4697;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 4700;
				this.any_name();
				this.state = 4701;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 4702;
				this.any_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 definition(): DefinitionContext {
		let _localctx: DefinitionContext = new DefinitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 494, PostgreSQLParser.RULE_definition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4706;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4707;
			this.def_list();
			this.state = 4708;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public def_list(): Def_listContext {
		let _localctx: Def_listContext = new Def_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 496, PostgreSQLParser.RULE_def_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4710;
			this.def_elem();
			this.state = 4715;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4711;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4712;
				this.def_elem();
				}
				}
				this.state = 4717;
				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 def_elem(): Def_elemContext {
		let _localctx: Def_elemContext = new Def_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 498, PostgreSQLParser.RULE_def_elem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4718;
			this.collabel();
			this.state = 4721;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.EQUAL) {
				{
				this.state = 4719;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 4720;
				this.def_arg();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public def_arg(): Def_argContext {
		let _localctx: Def_argContext = new Def_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 500, PostgreSQLParser.RULE_def_arg);
		try {
			this.state = 4729;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 386, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4723;
				this.func_type();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4728;
				this.match(PostgreSQLParser.KW_NONE);
				}
				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 old_aggr_definition(): Old_aggr_definitionContext {
		let _localctx: Old_aggr_definitionContext = new Old_aggr_definitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 502, PostgreSQLParser.RULE_old_aggr_definition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4731;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 4732;
			this.old_aggr_list();
			this.state = 4733;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public old_aggr_list(): Old_aggr_listContext {
		let _localctx: Old_aggr_listContext = new Old_aggr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 504, PostgreSQLParser.RULE_old_aggr_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4735;
			this.old_aggr_elem();
			this.state = 4740;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4736;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4737;
				this.old_aggr_elem();
				}
				}
				this.state = 4742;
				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 old_aggr_elem(): Old_aggr_elemContext {
		let _localctx: Old_aggr_elemContext = new Old_aggr_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 506, PostgreSQLParser.RULE_old_aggr_elem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4743;
			this.identifier();
			this.state = 4744;
			this.match(PostgreSQLParser.EQUAL);
			this.state = 4745;
			this.def_arg();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_enum_val_list(): Opt_enum_val_listContext {
		let _localctx: Opt_enum_val_listContext = new Opt_enum_val_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 508, PostgreSQLParser.RULE_opt_enum_val_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4747;
			this.enum_val_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public enum_val_list(): Enum_val_listContext {
		let _localctx: Enum_val_listContext = new Enum_val_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 510, PostgreSQLParser.RULE_enum_val_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4749;
			this.sconst();
			this.state = 4754;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4750;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4751;
				this.sconst();
				}
				}
				this.state = 4756;
				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 alterenumstmt(): AlterenumstmtContext {
		let _localctx: AlterenumstmtContext = new AlterenumstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 512, PostgreSQLParser.RULE_alterenumstmt);
		let _la: number;
		try {
			this.state = 4800;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 392, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4757;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4758;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4759;
				this.any_name();
				this.state = 4760;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 4761;
				this.match(PostgreSQLParser.KW_VALUE);
				this.state = 4763;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 4762;
					this.opt_if_not_exists();
					}
				}

				this.state = 4765;
				this.sconst();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4767;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4768;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4769;
				this.any_name();
				this.state = 4770;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 4771;
				this.match(PostgreSQLParser.KW_VALUE);
				this.state = 4773;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 4772;
					this.opt_if_not_exists();
					}
				}

				this.state = 4775;
				this.sconst();
				this.state = 4776;
				this.match(PostgreSQLParser.KW_BEFORE);
				this.state = 4777;
				this.sconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4779;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4780;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4781;
				this.any_name();
				this.state = 4782;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 4783;
				this.match(PostgreSQLParser.KW_VALUE);
				this.state = 4785;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 4784;
					this.opt_if_not_exists();
					}
				}

				this.state = 4787;
				this.sconst();
				this.state = 4788;
				this.match(PostgreSQLParser.KW_AFTER);
				this.state = 4789;
				this.sconst();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4791;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4792;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 4793;
				this.any_name();
				this.state = 4794;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 4795;
				this.match(PostgreSQLParser.KW_VALUE);
				this.state = 4796;
				this.sconst();
				this.state = 4797;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 4798;
				this.sconst();
				}
				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 opt_if_not_exists(): Opt_if_not_existsContext {
		let _localctx: Opt_if_not_existsContext = new Opt_if_not_existsContext(this._ctx, this.state);
		this.enterRule(_localctx, 514, PostgreSQLParser.RULE_opt_if_not_exists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4802;
			this.match(PostgreSQLParser.KW_IF);
			this.state = 4803;
			this.match(PostgreSQLParser.KW_NOT);
			this.state = 4804;
			this.match(PostgreSQLParser.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 createopclassstmt(): CreateopclassstmtContext {
		let _localctx: CreateopclassstmtContext = new CreateopclassstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 516, PostgreSQLParser.RULE_createopclassstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4806;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4807;
			this.match(PostgreSQLParser.KW_OPERATOR);
			this.state = 4808;
			this.match(PostgreSQLParser.KW_CLASS);
			this.state = 4809;
			this.any_name();
			this.state = 4811;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_DEFAULT) {
				{
				this.state = 4810;
				this.opt_default();
				}
			}

			this.state = 4813;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 4814;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 4815;
			this.typename();
			this.state = 4816;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 4817;
			this.name();
			this.state = 4819;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FAMILY) {
				{
				this.state = 4818;
				this.opt_opfamily();
				}
			}

			this.state = 4821;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 4822;
			this.opclass_item_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opclass_item_list(): Opclass_item_listContext {
		let _localctx: Opclass_item_listContext = new Opclass_item_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 518, PostgreSQLParser.RULE_opclass_item_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4824;
			this.opclass_item();
			this.state = 4829;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4825;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4826;
				this.opclass_item();
				}
				}
				this.state = 4831;
				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 opclass_item(): Opclass_itemContext {
		let _localctx: Opclass_itemContext = new Opclass_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 520, PostgreSQLParser.RULE_opclass_item);
		let _la: number;
		try {
			this.state = 4863;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 400, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4832;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4833;
				this.iconst();
				this.state = 4834;
				this.any_operator();
				this.state = 4836;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 4835;
					this.opclass_purpose();
					}
				}

				this.state = 4839;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 397, this._ctx) ) {
				case 1:
					{
					this.state = 4838;
					this.opt_recheck();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4841;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4842;
				this.iconst();
				this.state = 4843;
				this.operator_with_argtypes();
				this.state = 4845;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 4844;
					this.opclass_purpose();
					}
				}

				this.state = 4848;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 399, this._ctx) ) {
				case 1:
					{
					this.state = 4847;
					this.opt_recheck();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4850;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 4851;
				this.iconst();
				this.state = 4852;
				this.function_with_argtypes();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4854;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 4855;
				this.iconst();
				this.state = 4856;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4857;
				this.type_list();
				this.state = 4858;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 4859;
				this.function_with_argtypes();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4861;
				this.match(PostgreSQLParser.KW_STORAGE);
				this.state = 4862;
				this.typename();
				}
				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 opt_default(): Opt_defaultContext {
		let _localctx: Opt_defaultContext = new Opt_defaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 522, PostgreSQLParser.RULE_opt_default);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4865;
			this.match(PostgreSQLParser.KW_DEFAULT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_opfamily(): Opt_opfamilyContext {
		let _localctx: Opt_opfamilyContext = new Opt_opfamilyContext(this._ctx, this.state);
		this.enterRule(_localctx, 524, PostgreSQLParser.RULE_opt_opfamily);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4867;
			this.match(PostgreSQLParser.KW_FAMILY);
			this.state = 4868;
			this.any_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opclass_purpose(): Opclass_purposeContext {
		let _localctx: Opclass_purposeContext = new Opclass_purposeContext(this._ctx, this.state);
		this.enterRule(_localctx, 526, PostgreSQLParser.RULE_opclass_purpose);
		try {
			this.state = 4876;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 401, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4870;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 4871;
				this.match(PostgreSQLParser.KW_SEARCH);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4872;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 4873;
				this.match(PostgreSQLParser.KW_ORDER);
				this.state = 4874;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 4875;
				this.any_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 opt_recheck(): Opt_recheckContext {
		let _localctx: Opt_recheckContext = new Opt_recheckContext(this._ctx, this.state);
		this.enterRule(_localctx, 528, PostgreSQLParser.RULE_opt_recheck);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4878;
			this.match(PostgreSQLParser.KW_RECHECK);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createopfamilystmt(): CreateopfamilystmtContext {
		let _localctx: CreateopfamilystmtContext = new CreateopfamilystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 530, PostgreSQLParser.RULE_createopfamilystmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4880;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 4881;
			this.match(PostgreSQLParser.KW_OPERATOR);
			this.state = 4882;
			this.match(PostgreSQLParser.KW_FAMILY);
			this.state = 4883;
			this.any_name();
			this.state = 4884;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 4885;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alteropfamilystmt(): AlteropfamilystmtContext {
		let _localctx: AlteropfamilystmtContext = new AlteropfamilystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 532, PostgreSQLParser.RULE_alteropfamilystmt);
		try {
			this.state = 4905;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 402, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4887;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4888;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4889;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 4890;
				this.any_name();
				this.state = 4891;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 4892;
				this.name();
				this.state = 4893;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 4894;
				this.opclass_item_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4896;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 4897;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4898;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 4899;
				this.any_name();
				this.state = 4900;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 4901;
				this.name();
				this.state = 4902;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4903;
				this.opclass_drop_list();
				}
				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 opclass_drop_list(): Opclass_drop_listContext {
		let _localctx: Opclass_drop_listContext = new Opclass_drop_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 534, PostgreSQLParser.RULE_opclass_drop_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4907;
			this.opclass_drop();
			this.state = 4912;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 4908;
				this.match(PostgreSQLParser.COMMA);
				this.state = 4909;
				this.opclass_drop();
				}
				}
				this.state = 4914;
				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 opclass_drop(): Opclass_dropContext {
		let _localctx: Opclass_dropContext = new Opclass_dropContext(this._ctx, this.state);
		this.enterRule(_localctx, 536, PostgreSQLParser.RULE_opclass_drop);
		try {
			this.state = 4927;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_OPERATOR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4915;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 4916;
				this.iconst();
				this.state = 4917;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4918;
				this.type_list();
				this.state = 4919;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_FUNCTION:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4921;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 4922;
				this.iconst();
				this.state = 4923;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 4924;
				this.type_list();
				this.state = 4925;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 reassignownedstmt(): ReassignownedstmtContext {
		let _localctx: ReassignownedstmtContext = new ReassignownedstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 538, PostgreSQLParser.RULE_reassignownedstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 4929;
			this.match(PostgreSQLParser.KW_REASSIGN);
			this.state = 4930;
			this.match(PostgreSQLParser.KW_OWNED);
			this.state = 4931;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 4932;
			this.role_list();
			this.state = 4933;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 4934;
			this.rolespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dropstmt(): DropstmtContext {
		let _localctx: DropstmtContext = new DropstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 540, PostgreSQLParser.RULE_dropstmt);
		let _la: number;
		try {
			this.state = 5315;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 479, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 4936;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4937;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 4939;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 405, this._ctx) ) {
				case 1:
					{
					this.state = 4938;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4941;
				this.table_name_list();
				this.state = 4943;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 406, this._ctx) ) {
				case 1:
					{
					this.state = 4942;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 4945;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4946;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 4948;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 407, this._ctx) ) {
				case 1:
					{
					this.state = 4947;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4950;
				this.name_list();
				this.state = 4952;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 408, this._ctx) ) {
				case 1:
					{
					this.state = 4951;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 4954;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4955;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 4957;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 409, this._ctx) ) {
				case 1:
					{
					this.state = 4956;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4959;
				this.view_nameList();
				this.state = 4961;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 410, this._ctx) ) {
				case 1:
					{
					this.state = 4960;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 4963;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4964;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 4965;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 4967;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 411, this._ctx) ) {
				case 1:
					{
					this.state = 4966;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4969;
				this.view_nameList();
				this.state = 4971;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 412, this._ctx) ) {
				case 1:
					{
					this.state = 4970;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 4973;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4974;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 4976;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 413, this._ctx) ) {
				case 1:
					{
					this.state = 4975;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4978;
				this.name_list();
				this.state = 4980;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 414, this._ctx) ) {
				case 1:
					{
					this.state = 4979;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 4982;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4983;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 4984;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 4986;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 415, this._ctx) ) {
				case 1:
					{
					this.state = 4985;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4988;
				this.table_name_list();
				this.state = 4990;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 416, this._ctx) ) {
				case 1:
					{
					this.state = 4989;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 4992;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 4993;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 4995;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 417, this._ctx) ) {
				case 1:
					{
					this.state = 4994;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 4997;
				this.name_list();
				this.state = 4999;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 418, this._ctx) ) {
				case 1:
					{
					this.state = 4998;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5001;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5002;
				this.match(PostgreSQLParser.KW_CONVERSION);
				this.state = 5004;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 419, this._ctx) ) {
				case 1:
					{
					this.state = 5003;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5006;
				this.name_list();
				this.state = 5008;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 420, this._ctx) ) {
				case 1:
					{
					this.state = 5007;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5010;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5011;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 5013;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 421, this._ctx) ) {
				case 1:
					{
					this.state = 5012;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5015;
				this.name_list();
				this.state = 5017;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 422, this._ctx) ) {
				case 1:
					{
					this.state = 5016;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5019;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5020;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5021;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5022;
				this.match(PostgreSQLParser.KW_PARSER);
				this.state = 5024;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 423, this._ctx) ) {
				case 1:
					{
					this.state = 5023;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5026;
				this.name_list();
				this.state = 5028;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 424, this._ctx) ) {
				case 1:
					{
					this.state = 5027;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5030;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5031;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5032;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5033;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 5035;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 425, this._ctx) ) {
				case 1:
					{
					this.state = 5034;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5037;
				this.name_list();
				this.state = 5039;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 426, this._ctx) ) {
				case 1:
					{
					this.state = 5038;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5041;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5042;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5043;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5044;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				this.state = 5046;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 427, this._ctx) ) {
				case 1:
					{
					this.state = 5045;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5048;
				this.name_list();
				this.state = 5050;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 428, this._ctx) ) {
				case 1:
					{
					this.state = 5049;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5052;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5053;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5054;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5055;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 5057;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 429, this._ctx) ) {
				case 1:
					{
					this.state = 5056;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5059;
				this.name_list();
				this.state = 5061;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 430, this._ctx) ) {
				case 1:
					{
					this.state = 5060;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5063;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5064;
				this.match(PostgreSQLParser.KW_ACCESS);
				this.state = 5065;
				this.match(PostgreSQLParser.KW_METHOD);
				this.state = 5067;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 431, this._ctx) ) {
				case 1:
					{
					this.state = 5066;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5069;
				this.name_list();
				this.state = 5071;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 432, this._ctx) ) {
				case 1:
					{
					this.state = 5070;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 5073;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5074;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 5075;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 5077;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 433, this._ctx) ) {
				case 1:
					{
					this.state = 5076;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5079;
				this.name_list();
				this.state = 5081;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 434, this._ctx) ) {
				case 1:
					{
					this.state = 5080;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 5083;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5084;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 5086;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 435, this._ctx) ) {
				case 1:
					{
					this.state = 5085;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5088;
				this.name_list();
				this.state = 5090;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 436, this._ctx) ) {
				case 1:
					{
					this.state = 5089;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 5092;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5093;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 5094;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 5095;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 5097;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 437, this._ctx) ) {
				case 1:
					{
					this.state = 5096;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5099;
				this.name_list();
				this.state = 5101;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 438, this._ctx) ) {
				case 1:
					{
					this.state = 5100;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 5103;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5105;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROCEDURAL) {
					{
					this.state = 5104;
					this.opt_procedural();
					}
				}

				this.state = 5107;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 5109;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 440, this._ctx) ) {
				case 1:
					{
					this.state = 5108;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5111;
				this.name_list();
				this.state = 5113;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 441, this._ctx) ) {
				case 1:
					{
					this.state = 5112;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 5115;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5116;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 5118;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 442, this._ctx) ) {
				case 1:
					{
					this.state = 5117;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5120;
				this.name_list();
				this.state = 5122;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 443, this._ctx) ) {
				case 1:
					{
					this.state = 5121;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 5124;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5125;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 5127;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 444, this._ctx) ) {
				case 1:
					{
					this.state = 5126;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5129;
				this.name_list();
				this.state = 5131;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 445, this._ctx) ) {
				case 1:
					{
					this.state = 5130;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 5133;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5134;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5136;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 446, this._ctx) ) {
				case 1:
					{
					this.state = 5135;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5138;
				this.schema_name_list();
				this.state = 5140;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 447, this._ctx) ) {
				case 1:
					{
					this.state = 5139;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 5142;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5143;
				this.match(PostgreSQLParser.KW_POLICY);
				this.state = 5145;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 448, this._ctx) ) {
				case 1:
					{
					this.state = 5144;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5147;
				this.name();
				this.state = 5148;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5149;
				this.any_name();
				this.state = 5151;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 449, this._ctx) ) {
				case 1:
					{
					this.state = 5150;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 5153;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5154;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 5156;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 450, this._ctx) ) {
				case 1:
					{
					this.state = 5155;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5158;
				this.name();
				this.state = 5159;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5160;
				this.any_name();
				this.state = 5162;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 451, this._ctx) ) {
				case 1:
					{
					this.state = 5161;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 5164;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5165;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 5167;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 452, this._ctx) ) {
				case 1:
					{
					this.state = 5166;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5169;
				this.name();
				this.state = 5170;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5171;
				this.any_name();
				this.state = 5173;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 453, this._ctx) ) {
				case 1:
					{
					this.state = 5172;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 5175;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5176;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 5178;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 454, this._ctx) ) {
				case 1:
					{
					this.state = 5177;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5180;
				this.type_name_list();
				this.state = 5182;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 455, this._ctx) ) {
				case 1:
					{
					this.state = 5181;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 5184;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5185;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 5187;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 456, this._ctx) ) {
				case 1:
					{
					this.state = 5186;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5189;
				this.type_name_list();
				this.state = 5191;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 457, this._ctx) ) {
				case 1:
					{
					this.state = 5190;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 5193;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5194;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 5195;
				this.match(PostgreSQLParser.KW_CONCURRENTLY);
				this.state = 5197;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 458, this._ctx) ) {
				case 1:
					{
					this.state = 5196;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5199;
				this.any_name_list();
				this.state = 5201;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 459, this._ctx) ) {
				case 1:
					{
					this.state = 5200;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 5203;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5204;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 5206;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 5205;
					this.opt_if_exists();
					}
				}

				this.state = 5208;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 5209;
				this.typename();
				this.state = 5210;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 5211;
				this.typename();
				this.state = 5212;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 5214;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 461, this._ctx) ) {
				case 1:
					{
					this.state = 5213;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 5216;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5217;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 5218;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 5220;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 462, this._ctx) ) {
				case 1:
					{
					this.state = 5219;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5222;
				this.any_name();
				this.state = 5223;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 5224;
				this.name();
				this.state = 5226;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 463, this._ctx) ) {
				case 1:
					{
					this.state = 5225;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 5228;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5229;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 5230;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 5232;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 464, this._ctx) ) {
				case 1:
					{
					this.state = 5231;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5234;
				this.any_name();
				this.state = 5235;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 5236;
				this.name();
				this.state = 5238;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 465, this._ctx) ) {
				case 1:
					{
					this.state = 5237;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 5240;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5241;
				this.match(PostgreSQLParser.KW_OWNED);
				this.state = 5242;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 5243;
				this.role_list();
				this.state = 5245;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 466, this._ctx) ) {
				case 1:
					{
					this.state = 5244;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 5247;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5248;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 5250;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 467, this._ctx) ) {
				case 1:
					{
					this.state = 5249;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5252;
				this.view_nameList();
				this.state = 5254;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 468, this._ctx) ) {
				case 1:
					{
					this.state = 5253;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 5256;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5257;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 5259;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 469, this._ctx) ) {
				case 1:
					{
					this.state = 5258;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5261;
				this.name();
				this.state = 5263;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 470, this._ctx) ) {
				case 1:
					{
					this.state = 5262;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 5265;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5266;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 5268;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 471, this._ctx) ) {
				case 1:
					{
					this.state = 5267;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5270;
				this.tablespace_name();
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 5271;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5272;
				this.match(PostgreSQLParser.KW_TRANSFORM);
				this.state = 5274;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 5273;
					this.opt_if_exists();
					}
				}

				this.state = 5276;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 5277;
				this.typename();
				this.state = 5278;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 5279;
				this.name();
				this.state = 5281;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 473, this._ctx) ) {
				case 1:
					{
					this.state = 5280;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 5283;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5284;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_GROUP || _la === PostgreSQLParser.KW_USER || _la === PostgreSQLParser.KW_ROLE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 5286;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 474, this._ctx) ) {
				case 1:
					{
					this.state = 5285;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5288;
				this.role_list();
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 5289;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5290;
				this.match(PostgreSQLParser.KW_USER);
				this.state = 5291;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 5293;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 5292;
					this.opt_if_exists();
					}
				}

				this.state = 5295;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 5296;
				this.auth_ident();
				this.state = 5297;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 5298;
				this.name();
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 5300;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 5301;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 5303;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 476, this._ctx) ) {
				case 1:
					{
					this.state = 5302;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 5305;
				this.database_name();
				this.state = 5313;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 478, this._ctx) ) {
				case 1:
					{
					this.state = 5307;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_WITH) {
						{
						this.state = 5306;
						this.opt_with();
						}
					}

					this.state = 5309;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 5310;
					this.drop_option_list();
					this.state = 5311;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					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 view_nameList(): View_nameListContext {
		let _localctx: View_nameListContext = new View_nameListContext(this._ctx, this.state);
		this.enterRule(_localctx, 542, PostgreSQLParser.RULE_view_nameList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5317;
			this.view_name();
			this.state = 5322;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5318;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5319;
				this.view_name();
				}
				}
				this.state = 5324;
				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 object_type_any_name(): Object_type_any_nameContext {
		let _localctx: Object_type_any_nameContext = new Object_type_any_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 544, PostgreSQLParser.RULE_object_type_any_name);
		try {
			this.state = 5361;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 481, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5325;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 5326;
				this.table_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5327;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 5328;
				this.any_name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5329;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 5330;
				this.view_name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5331;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 5332;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 5333;
				this.view_name();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5334;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 5335;
				this.any_name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5336;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 5337;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 5338;
				this.table_name();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5339;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 5340;
				this.any_name();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5341;
				this.match(PostgreSQLParser.KW_CONVERSION);
				this.state = 5342;
				this.any_name();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5343;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 5344;
				this.any_name();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5345;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5346;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5347;
				this.match(PostgreSQLParser.KW_PARSER);
				this.state = 5348;
				this.any_name();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5349;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5350;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5351;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 5352;
				this.any_name();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5353;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5354;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5355;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				this.state = 5356;
				this.any_name();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5357;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 5358;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 5359;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 5360;
				this.any_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 object_type_name(): Object_type_nameContext {
		let _localctx: Object_type_nameContext = new Object_type_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 546, PostgreSQLParser.RULE_object_type_name);
		let _la: number;
		try {
			this.state = 5394;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ACCESS:
				this.enterOuterAlt(_localctx, 1);
				{
				{
				this.state = 5363;
				this.match(PostgreSQLParser.KW_ACCESS);
				this.state = 5364;
				this.match(PostgreSQLParser.KW_METHOD);
				this.state = 5365;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_EVENT:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 5366;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 5367;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 5368;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_EXTENSION:
				this.enterOuterAlt(_localctx, 3);
				{
				{
				this.state = 5369;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 5370;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_FOREIGN:
				this.enterOuterAlt(_localctx, 4);
				{
				{
				this.state = 5371;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 5372;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 5373;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 5374;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_PROCEDURAL:
				this.enterOuterAlt(_localctx, 5);
				{
				{
				this.state = 5376;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROCEDURAL) {
					{
					this.state = 5375;
					this.opt_procedural();
					}
				}

				this.state = 5378;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 5379;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_PUBLICATION:
				this.enterOuterAlt(_localctx, 6);
				{
				{
				this.state = 5380;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 5381;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_SCHEMA:
				this.enterOuterAlt(_localctx, 7);
				{
				{
				this.state = 5382;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5383;
				this.schema_name();
				}
				}
				break;
			case PostgreSQLParser.KW_SERVER:
				this.enterOuterAlt(_localctx, 8);
				{
				{
				this.state = 5384;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 5385;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_DATABASE:
				this.enterOuterAlt(_localctx, 9);
				{
				{
				this.state = 5386;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 5387;
				this.database_name();
				}
				}
				break;
			case PostgreSQLParser.KW_ROLE:
				this.enterOuterAlt(_localctx, 10);
				{
				{
				this.state = 5388;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 5389;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_SUBSCRIPTION:
				this.enterOuterAlt(_localctx, 11);
				{
				{
				this.state = 5390;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 5391;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_TABLESPACE:
				this.enterOuterAlt(_localctx, 12);
				{
				{
				this.state = 5392;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 5393;
				this.tablespace_name();
				}
				}
				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 object_type_name_on_any_name(): Object_type_name_on_any_nameContext {
		let _localctx: Object_type_name_on_any_nameContext = new Object_type_name_on_any_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 548, PostgreSQLParser.RULE_object_type_name_on_any_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5396;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_RULE || _la === PostgreSQLParser.KW_TRIGGER || _la === PostgreSQLParser.KW_POLICY)) {
			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 any_name_list(): Any_name_listContext {
		let _localctx: Any_name_listContext = new Any_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 550, PostgreSQLParser.RULE_any_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5398;
			this.any_name();
			this.state = 5403;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5399;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5400;
				this.any_name();
				}
				}
				this.state = 5405;
				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 table_column_name(): Table_column_nameContext {
		let _localctx: Table_column_nameContext = new Table_column_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 552, PostgreSQLParser.RULE_table_column_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5406;
			this.table_name();
			this.state = 5407;
			this.match(PostgreSQLParser.DOT);
			this.state = 5408;
			this.column_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public relation_column_name(): Relation_column_nameContext {
		let _localctx: Relation_column_nameContext = new Relation_column_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 554, PostgreSQLParser.RULE_relation_column_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5410;
			this.relation_name();
			this.state = 5411;
			this.match(PostgreSQLParser.DOT);
			this.state = 5412;
			this.column_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public relation_name(): Relation_nameContext {
		let _localctx: Relation_nameContext = new Relation_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 556, PostgreSQLParser.RULE_relation_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5414;
			this.colid();
			this.state = 5416;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 485, this._ctx) ) {
			case 1:
				{
				this.state = 5415;
				this.attrs();
				}
				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 any_name(): Any_nameContext {
		let _localctx: Any_nameContext = new Any_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 558, PostgreSQLParser.RULE_any_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5418;
			this.colid();
			this.state = 5420;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 5419;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public attrs(): AttrsContext {
		let _localctx: AttrsContext = new AttrsContext(this._ctx, this.state);
		this.enterRule(_localctx, 560, PostgreSQLParser.RULE_attrs);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5424;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 5422;
					this.match(PostgreSQLParser.DOT);
					this.state = 5423;
					this.attr_name();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 5426;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 487, 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 type_name_list(): Type_name_listContext {
		let _localctx: Type_name_listContext = new Type_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 562, PostgreSQLParser.RULE_type_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5428;
			this.typename();
			this.state = 5433;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5429;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5430;
				this.typename();
				}
				}
				this.state = 5435;
				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 truncatestmt(): TruncatestmtContext {
		let _localctx: TruncatestmtContext = new TruncatestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 564, PostgreSQLParser.RULE_truncatestmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5436;
			this.match(PostgreSQLParser.KW_TRUNCATE);
			this.state = 5438;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 489, this._ctx) ) {
			case 1:
				{
				this.state = 5437;
				this.opt_table();
				}
				break;
			}
			this.state = 5440;
			this.relation_expr_list();
			this.state = 5442;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 490, this._ctx) ) {
			case 1:
				{
				this.state = 5441;
				this.opt_restart_seqs();
				}
				break;
			}
			this.state = 5445;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 491, this._ctx) ) {
			case 1:
				{
				this.state = 5444;
				this.opt_drop_behavior();
				}
				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 opt_restart_seqs(): Opt_restart_seqsContext {
		let _localctx: Opt_restart_seqsContext = new Opt_restart_seqsContext(this._ctx, this.state);
		this.enterRule(_localctx, 566, PostgreSQLParser.RULE_opt_restart_seqs);
		try {
			this.state = 5451;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CONTINUE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5447;
				this.match(PostgreSQLParser.KW_CONTINUE);
				this.state = 5448;
				this.match(PostgreSQLParser.KW_IDENTITY);
				}
				break;
			case PostgreSQLParser.KW_RESTART:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5449;
				this.match(PostgreSQLParser.KW_RESTART);
				this.state = 5450;
				this.match(PostgreSQLParser.KW_IDENTITY);
				}
				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 commentstmt(): CommentstmtContext {
		let _localctx: CommentstmtContext = new CommentstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 568, PostgreSQLParser.RULE_commentstmt);
		try {
			this.state = 5618;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 494, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5453;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5454;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5455;
				this.object_type_any_name();
				this.state = 5456;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5457;
				this.comment_text();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5459;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5460;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5461;
				this.match(PostgreSQLParser.KW_COLUMN);
				this.state = 5462;
				this.relation_column_name();
				this.state = 5463;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5464;
				this.comment_text();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5466;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5467;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5468;
				this.object_type_name();
				this.state = 5469;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5470;
				this.comment_text();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5472;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5473;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5474;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 5475;
				this.typename();
				this.state = 5476;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5477;
				this.comment_text();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5479;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5480;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5481;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 5482;
				this.typename();
				this.state = 5483;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5484;
				this.comment_text();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5486;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5487;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5488;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 5489;
				this.aggregate_with_argtypes();
				this.state = 5490;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5491;
				this.comment_text();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5493;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5494;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5495;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 5496;
				this.function_with_argtypes();
				this.state = 5497;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5498;
				this.comment_text();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5500;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5501;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5502;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 5503;
				this.operator_with_argtypes();
				this.state = 5504;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5505;
				this.comment_text();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5507;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5508;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5509;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 5510;
				this.name();
				this.state = 5511;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5512;
				this.table_name();
				this.state = 5513;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5514;
				this.comment_text();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5516;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5517;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5518;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 5519;
				this.name();
				this.state = 5520;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5522;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 493, this._ctx) ) {
				case 1:
					{
					this.state = 5521;
					this.match(PostgreSQLParser.KW_DOMAIN);
					}
					break;
				}
				this.state = 5524;
				this.any_name();
				this.state = 5525;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5526;
				this.comment_text();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5528;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5529;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5530;
				this.match(PostgreSQLParser.KW_POLICY);
				this.state = 5531;
				this.name();
				this.state = 5532;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5533;
				this.any_name();
				this.state = 5534;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5535;
				this.comment_text();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5537;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5538;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5539;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 5540;
				this.name();
				this.state = 5541;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5542;
				this.any_name();
				this.state = 5543;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5544;
				this.comment_text();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5546;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5547;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5548;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 5549;
				this.name();
				this.state = 5550;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5551;
				this.any_name();
				this.state = 5552;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5553;
				this.comment_text();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5555;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5556;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5557;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 5558;
				this.procedure_with_argtypes();
				this.state = 5559;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5560;
				this.comment_text();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 5562;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5563;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5564;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 5565;
				this.routine_with_argtypes();
				this.state = 5566;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5567;
				this.comment_text();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 5569;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5570;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5571;
				this.match(PostgreSQLParser.KW_TRANSFORM);
				this.state = 5572;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 5573;
				this.typename();
				this.state = 5574;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 5575;
				this.name();
				this.state = 5576;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5577;
				this.comment_text();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 5579;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5580;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5581;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 5582;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 5583;
				this.any_name();
				this.state = 5584;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 5585;
				this.name();
				this.state = 5586;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5587;
				this.comment_text();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 5589;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5590;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5591;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 5592;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 5593;
				this.any_name();
				this.state = 5594;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 5595;
				this.name();
				this.state = 5596;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5597;
				this.comment_text();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 5599;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5600;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5601;
				this.match(PostgreSQLParser.KW_LARGE);
				this.state = 5602;
				this.match(PostgreSQLParser.KW_OBJECT);
				this.state = 5603;
				this.numericonly();
				this.state = 5604;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5605;
				this.comment_text();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 5607;
				this.match(PostgreSQLParser.KW_COMMENT);
				this.state = 5608;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5609;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 5610;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 5611;
				this.typename();
				this.state = 5612;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 5613;
				this.typename();
				this.state = 5614;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 5615;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5616;
				this.comment_text();
				}
				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 comment_text(): Comment_textContext {
		let _localctx: Comment_textContext = new Comment_textContext(this._ctx, this.state);
		this.enterRule(_localctx, 570, PostgreSQLParser.RULE_comment_text);
		try {
			this.state = 5622;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5620;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_NULL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5621;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 seclabelstmt(): SeclabelstmtContext {
		let _localctx: SeclabelstmtContext = new SeclabelstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 572, PostgreSQLParser.RULE_seclabelstmt);
		let _la: number;
		try {
			this.state = 5733;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 506, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5624;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5625;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5627;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5626;
					this.opt_provider();
					}
				}

				this.state = 5629;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5630;
				this.object_type_any_name();
				this.state = 5631;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5632;
				this.security_label();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5634;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5635;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5637;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5636;
					this.opt_provider();
					}
				}

				this.state = 5639;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5640;
				this.match(PostgreSQLParser.KW_COLUMN);
				this.state = 5641;
				this.table_column_name();
				this.state = 5642;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5643;
				this.security_label();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5645;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5646;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5648;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5647;
					this.opt_provider();
					}
				}

				this.state = 5650;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5651;
				this.object_type_name();
				this.state = 5652;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5653;
				this.security_label();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5655;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5656;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5658;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5657;
					this.opt_provider();
					}
				}

				this.state = 5660;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5661;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 5662;
				this.typename();
				this.state = 5663;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5664;
				this.security_label();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5666;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5667;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5669;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5668;
					this.opt_provider();
					}
				}

				this.state = 5671;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5672;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 5673;
				this.typename();
				this.state = 5674;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5675;
				this.security_label();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5677;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5678;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5680;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5679;
					this.opt_provider();
					}
				}

				this.state = 5682;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5683;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 5684;
				this.aggregate_with_argtypes();
				this.state = 5685;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5686;
				this.security_label();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5688;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5689;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5691;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5690;
					this.opt_provider();
					}
				}

				this.state = 5693;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5694;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 5695;
				this.function_with_argtypes();
				this.state = 5696;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5697;
				this.security_label();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5699;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5700;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5702;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5701;
					this.opt_provider();
					}
				}

				this.state = 5704;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5705;
				this.match(PostgreSQLParser.KW_LARGE);
				this.state = 5706;
				this.match(PostgreSQLParser.KW_OBJECT);
				this.state = 5707;
				this.numericonly();
				this.state = 5708;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5709;
				this.security_label();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5711;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5712;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5714;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5713;
					this.opt_provider();
					}
				}

				this.state = 5716;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5717;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 5718;
				this.procedure_with_argtypes();
				this.state = 5719;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5720;
				this.security_label();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5722;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 5723;
				this.match(PostgreSQLParser.KW_LABEL);
				this.state = 5725;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FOR) {
					{
					this.state = 5724;
					this.opt_provider();
					}
				}

				this.state = 5727;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5728;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 5729;
				this.routine_with_argtypes();
				this.state = 5730;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 5731;
				this.security_label();
				}
				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 opt_provider(): Opt_providerContext {
		let _localctx: Opt_providerContext = new Opt_providerContext(this._ctx, this.state);
		this.enterRule(_localctx, 574, PostgreSQLParser.RULE_opt_provider);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5735;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 5736;
			this.nonreservedword_or_sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public security_label(): Security_labelContext {
		let _localctx: Security_labelContext = new Security_labelContext(this._ctx, this.state);
		this.enterRule(_localctx, 576, PostgreSQLParser.RULE_security_label);
		try {
			this.state = 5740;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5738;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_NULL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5739;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 fetchstmt(): FetchstmtContext {
		let _localctx: FetchstmtContext = new FetchstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 578, PostgreSQLParser.RULE_fetchstmt);
		try {
			this.state = 5746;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FETCH:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5742;
				this.match(PostgreSQLParser.KW_FETCH);
				this.state = 5743;
				this.fetch_args();
				}
				break;
			case PostgreSQLParser.KW_MOVE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5744;
				this.match(PostgreSQLParser.KW_MOVE);
				this.state = 5745;
				this.fetch_args();
				}
				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 fetch_args(): Fetch_argsContext {
		let _localctx: Fetch_argsContext = new Fetch_argsContext(this._ctx, this.state);
		this.enterRule(_localctx, 580, PostgreSQLParser.RULE_fetch_args);
		let _la: number;
		try {
			this.state = 5833;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 523, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5748;
				this.cursor_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5749;
				this.from_in();
				this.state = 5750;
				this.cursor_name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5752;
				this.match(PostgreSQLParser.KW_NEXT);
				this.state = 5754;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5753;
					this.opt_from_in();
					}
				}

				this.state = 5756;
				this.cursor_name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5757;
				this.match(PostgreSQLParser.KW_PRIOR);
				this.state = 5759;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5758;
					this.opt_from_in();
					}
				}

				this.state = 5761;
				this.cursor_name();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5762;
				this.match(PostgreSQLParser.KW_FIRST);
				this.state = 5764;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5763;
					this.opt_from_in();
					}
				}

				this.state = 5766;
				this.cursor_name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5767;
				this.match(PostgreSQLParser.KW_LAST);
				this.state = 5769;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5768;
					this.opt_from_in();
					}
				}

				this.state = 5771;
				this.cursor_name();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5772;
				this.match(PostgreSQLParser.KW_ABSOLUTE);
				this.state = 5773;
				this.signediconst();
				this.state = 5775;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5774;
					this.opt_from_in();
					}
				}

				this.state = 5777;
				this.cursor_name();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5779;
				this.match(PostgreSQLParser.KW_RELATIVE);
				this.state = 5780;
				this.signediconst();
				this.state = 5782;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5781;
					this.opt_from_in();
					}
				}

				this.state = 5784;
				this.cursor_name();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5786;
				this.signediconst();
				this.state = 5788;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5787;
					this.opt_from_in();
					}
				}

				this.state = 5790;
				this.cursor_name();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5792;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5794;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5793;
					this.opt_from_in();
					}
				}

				this.state = 5796;
				this.cursor_name();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5797;
				this.match(PostgreSQLParser.KW_FORWARD);
				this.state = 5799;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5798;
					this.opt_from_in();
					}
				}

				this.state = 5801;
				this.cursor_name();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5802;
				this.match(PostgreSQLParser.KW_FORWARD);
				this.state = 5803;
				this.signediconst();
				this.state = 5805;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5804;
					this.opt_from_in();
					}
				}

				this.state = 5807;
				this.cursor_name();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5809;
				this.match(PostgreSQLParser.KW_FORWARD);
				this.state = 5810;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5812;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5811;
					this.opt_from_in();
					}
				}

				this.state = 5814;
				this.cursor_name();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5815;
				this.match(PostgreSQLParser.KW_BACKWARD);
				this.state = 5817;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5816;
					this.opt_from_in();
					}
				}

				this.state = 5819;
				this.cursor_name();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 5820;
				this.match(PostgreSQLParser.KW_BACKWARD);
				this.state = 5821;
				this.signediconst();
				this.state = 5823;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5822;
					this.opt_from_in();
					}
				}

				this.state = 5825;
				this.cursor_name();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 5827;
				this.match(PostgreSQLParser.KW_BACKWARD);
				this.state = 5828;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5830;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN) {
					{
					this.state = 5829;
					this.opt_from_in();
					}
				}

				this.state = 5832;
				this.cursor_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 from_in(): From_inContext {
		let _localctx: From_inContext = new From_inContext(this._ctx, this.state);
		this.enterRule(_localctx, 582, PostgreSQLParser.RULE_from_in);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5835;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FROM || _la === PostgreSQLParser.KW_IN)) {
			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 opt_from_in(): Opt_from_inContext {
		let _localctx: Opt_from_inContext = new Opt_from_inContext(this._ctx, this.state);
		this.enterRule(_localctx, 584, PostgreSQLParser.RULE_opt_from_in);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5837;
			this.from_in();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantstmt(): GrantstmtContext {
		let _localctx: GrantstmtContext = new GrantstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 586, PostgreSQLParser.RULE_grantstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5839;
			this.match(PostgreSQLParser.KW_GRANT);
			this.state = 5840;
			this.privileges();
			this.state = 5841;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 5842;
			this.privilege_target();
			this.state = 5843;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 5844;
			this.grantee_list();
			this.state = 5846;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 524, this._ctx) ) {
			case 1:
				{
				this.state = 5845;
				this.opt_grant_grant_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 revokestmt(): RevokestmtContext {
		let _localctx: RevokestmtContext = new RevokestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 588, PostgreSQLParser.RULE_revokestmt);
		try {
			this.state = 5869;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 527, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5848;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 5849;
				this.privileges();
				this.state = 5850;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5851;
				this.privilege_target();
				this.state = 5852;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 5853;
				this.grantee_list();
				this.state = 5855;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 525, this._ctx) ) {
				case 1:
					{
					this.state = 5854;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5857;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 5858;
				this.match(PostgreSQLParser.KW_GRANT);
				this.state = 5859;
				this.match(PostgreSQLParser.KW_OPTION);
				this.state = 5860;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 5861;
				this.privileges();
				this.state = 5862;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 5863;
				this.privilege_target();
				this.state = 5864;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 5865;
				this.grantee_list();
				this.state = 5867;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 526, this._ctx) ) {
				case 1:
					{
					this.state = 5866;
					this.opt_drop_behavior();
					}
					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 privileges(): PrivilegesContext {
		let _localctx: PrivilegesContext = new PrivilegesContext(this._ctx, this.state);
		this.enterRule(_localctx, 590, PostgreSQLParser.RULE_privileges);
		try {
			this.state = 5887;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 528, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5871;
				this.privilege_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5872;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5873;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5874;
				this.match(PostgreSQLParser.KW_PRIVILEGES);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5875;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5876;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 5877;
				this.columnlist();
				this.state = 5878;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5880;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5881;
				this.match(PostgreSQLParser.KW_PRIVILEGES);
				this.state = 5882;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 5883;
				this.columnlist();
				this.state = 5884;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5886;
				this.beforeprivilegeselectlist();
				}
				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 beforeprivilegeselectlist(): BeforeprivilegeselectlistContext {
		let _localctx: BeforeprivilegeselectlistContext = new BeforeprivilegeselectlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 592, PostgreSQLParser.RULE_beforeprivilegeselectlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5889;
			this.beforeprivilegeselect();
			this.state = 5894;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5890;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5891;
				this.beforeprivilegeselect();
				}
				}
				this.state = 5896;
				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 beforeprivilegeselect(): BeforeprivilegeselectContext {
		let _localctx: BeforeprivilegeselectContext = new BeforeprivilegeselectContext(this._ctx, this.state);
		this.enterRule(_localctx, 594, PostgreSQLParser.RULE_beforeprivilegeselect);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5897;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_CREATE || _la === PostgreSQLParser.KW_SELECT || _la === PostgreSQLParser.KW_DELETE || _la === PostgreSQLParser.KW_EXECUTE || _la === PostgreSQLParser.KW_INSERT || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_TRIGGER - 352)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 352)) | (1 << (PostgreSQLParser.KW_UPDATE - 352)))) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & ((1 << (PostgreSQLParser.KW_PEFERENCES - 521)) | (1 << (PostgreSQLParser.KW_USAGE - 521)) | (1 << (PostgreSQLParser.KW_CONNECT - 521)))) !== 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 privilege_list(): Privilege_listContext {
		let _localctx: Privilege_listContext = new Privilege_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 596, PostgreSQLParser.RULE_privilege_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5899;
			this.privilege();
			this.state = 5904;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5900;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5901;
				this.privilege();
				}
				}
				this.state = 5906;
				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 privilege(): PrivilegeContext {
		let _localctx: PrivilegeContext = new PrivilegeContext(this._ctx, this.state);
		this.enterRule(_localctx, 598, PostgreSQLParser.RULE_privilege);
		let _la: number;
		try {
			this.state = 5923;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SELECT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5907;
				this.match(PostgreSQLParser.KW_SELECT);
				this.state = 5909;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 5908;
					this.opt_column_list();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_REFERENCES:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5911;
				this.match(PostgreSQLParser.KW_REFERENCES);
				this.state = 5913;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 5912;
					this.opt_column_list();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_CREATE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5915;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 5917;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 5916;
					this.opt_column_list();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5919;
				this.colid();
				this.state = 5921;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 5920;
					this.opt_column_list();
					}
				}

				}
				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 privilege_target(): Privilege_targetContext {
		let _localctx: Privilege_targetContext = new Privilege_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 600, PostgreSQLParser.RULE_privilege_target);
		try {
			this.state = 5983;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 536, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5925;
				this.qualified_name_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5926;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 5927;
				this.table_name_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 5928;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 5929;
				this.qualified_name_list();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 5930;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 5931;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 5932;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 5933;
				this.name_list();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 5934;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 5935;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 5936;
				this.name_list();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 5937;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 5938;
				this.function_with_argtypes_list();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 5939;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 5940;
				this.procedure_with_argtypes_list();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 5941;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 5942;
				this.routine_with_argtypes_list();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 5943;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 5944;
				this.database_nameList();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 5945;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 5946;
				this.any_name_list();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 5947;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 5948;
				this.name_list();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 5949;
				this.match(PostgreSQLParser.KW_LARGE);
				this.state = 5950;
				this.match(PostgreSQLParser.KW_OBJECT);
				this.state = 5951;
				this.numericonly_list();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 5952;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5953;
				this.schema_name_list();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 5954;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 5955;
				this.tablespace_name_list();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 5956;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 5957;
				this.any_name_list();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 5958;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5959;
				this.match(PostgreSQLParser.KW_TABLES);
				this.state = 5960;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 5961;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5962;
				this.schema_name_list();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 5963;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5964;
				this.match(PostgreSQLParser.KW_SEQUENCES);
				this.state = 5965;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 5966;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5967;
				this.schema_name_list();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 5968;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5969;
				this.match(PostgreSQLParser.KW_FUNCTIONS);
				this.state = 5970;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 5971;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5972;
				this.schema_name_list();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 5973;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5974;
				this.match(PostgreSQLParser.KW_PROCEDURES);
				this.state = 5975;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 5976;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5977;
				this.schema_name_list();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 5978;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 5979;
				this.match(PostgreSQLParser.KW_ROUTINES);
				this.state = 5980;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 5981;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 5982;
				this.schema_name_list();
				}
				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 grantee_list(): Grantee_listContext {
		let _localctx: Grantee_listContext = new Grantee_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 602, PostgreSQLParser.RULE_grantee_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5985;
			this.grantee();
			this.state = 5990;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 5986;
				this.match(PostgreSQLParser.COMMA);
				this.state = 5987;
				this.grantee();
				}
				}
				this.state = 5992;
				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 grantee(): GranteeContext {
		let _localctx: GranteeContext = new GranteeContext(this._ctx, this.state);
		this.enterRule(_localctx, 604, PostgreSQLParser.RULE_grantee);
		try {
			this.state = 5996;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_PUBLIC:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 5993;
				this.rolespec();
				}
				break;
			case PostgreSQLParser.KW_GROUP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 5994;
				this.match(PostgreSQLParser.KW_GROUP);
				this.state = 5995;
				this.rolespec();
				}
				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 opt_grant_grant_option(): Opt_grant_grant_optionContext {
		let _localctx: Opt_grant_grant_optionContext = new Opt_grant_grant_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 606, PostgreSQLParser.RULE_opt_grant_grant_option);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 5998;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 5999;
			this.match(PostgreSQLParser.KW_GRANT);
			this.state = 6000;
			this.match(PostgreSQLParser.KW_OPTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grantrolestmt(): GrantrolestmtContext {
		let _localctx: GrantrolestmtContext = new GrantrolestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 608, PostgreSQLParser.RULE_grantrolestmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6002;
			this.match(PostgreSQLParser.KW_GRANT);
			this.state = 6003;
			this.privilege_list();
			this.state = 6004;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 6005;
			this.role_list();
			this.state = 6007;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 539, this._ctx) ) {
			case 1:
				{
				this.state = 6006;
				this.opt_grant_admin_option();
				}
				break;
			}
			this.state = 6010;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 540, this._ctx) ) {
			case 1:
				{
				this.state = 6009;
				this.opt_granted_by();
				}
				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 revokerolestmt(): RevokerolestmtContext {
		let _localctx: RevokerolestmtContext = new RevokerolestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 610, PostgreSQLParser.RULE_revokerolestmt);
		try {
			this.state = 6035;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 545, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6012;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 6013;
				this.privilege_list();
				this.state = 6014;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6015;
				this.role_list();
				this.state = 6017;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 541, this._ctx) ) {
				case 1:
					{
					this.state = 6016;
					this.opt_granted_by();
					}
					break;
				}
				this.state = 6020;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 542, this._ctx) ) {
				case 1:
					{
					this.state = 6019;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6022;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 6023;
				this.match(PostgreSQLParser.KW_ADMIN);
				this.state = 6024;
				this.match(PostgreSQLParser.KW_OPTION);
				this.state = 6025;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 6026;
				this.privilege_list();
				this.state = 6027;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6028;
				this.role_list();
				this.state = 6030;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 543, this._ctx) ) {
				case 1:
					{
					this.state = 6029;
					this.opt_granted_by();
					}
					break;
				}
				this.state = 6033;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 544, this._ctx) ) {
				case 1:
					{
					this.state = 6032;
					this.opt_drop_behavior();
					}
					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 opt_grant_admin_option(): Opt_grant_admin_optionContext {
		let _localctx: Opt_grant_admin_optionContext = new Opt_grant_admin_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 612, PostgreSQLParser.RULE_opt_grant_admin_option);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6037;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 6038;
			this.match(PostgreSQLParser.KW_ADMIN);
			this.state = 6039;
			this.match(PostgreSQLParser.KW_OPTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_granted_by(): Opt_granted_byContext {
		let _localctx: Opt_granted_byContext = new Opt_granted_byContext(this._ctx, this.state);
		this.enterRule(_localctx, 614, PostgreSQLParser.RULE_opt_granted_by);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6041;
			this.match(PostgreSQLParser.KW_GRANTED);
			this.state = 6042;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 6043;
			this.rolespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext {
		let _localctx: AlterdefaultprivilegesstmtContext = new AlterdefaultprivilegesstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 616, PostgreSQLParser.RULE_alterdefaultprivilegesstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6045;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 6046;
			this.match(PostgreSQLParser.KW_DEFAULT);
			this.state = 6047;
			this.match(PostgreSQLParser.KW_PRIVILEGES);
			this.state = 6048;
			this.defacloptionlist();
			this.state = 6049;
			this.defaclaction();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public defacloptionlist(): DefacloptionlistContext {
		let _localctx: DefacloptionlistContext = new DefacloptionlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 618, PostgreSQLParser.RULE_defacloptionlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6054;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_FOR || _la === PostgreSQLParser.KW_IN) {
				{
				{
				this.state = 6051;
				this.defacloption();
				}
				}
				this.state = 6056;
				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 defacloption(): DefacloptionContext {
		let _localctx: DefacloptionContext = new DefacloptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 620, PostgreSQLParser.RULE_defacloption);
		try {
			this.state = 6066;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 547, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6057;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 6058;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 6059;
				this.schema_name_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6060;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 6061;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 6062;
				this.role_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6063;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 6064;
				this.match(PostgreSQLParser.KW_USER);
				this.state = 6065;
				this.role_list();
				}
				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 defaclaction(): DefaclactionContext {
		let _localctx: DefaclactionContext = new DefaclactionContext(this._ctx, this.state);
		this.enterRule(_localctx, 622, PostgreSQLParser.RULE_defaclaction);
		try {
			this.state = 6098;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 551, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6068;
				this.match(PostgreSQLParser.KW_GRANT);
				this.state = 6069;
				this.privileges();
				this.state = 6070;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6071;
				this.defacl_privilege_target();
				this.state = 6072;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6073;
				this.grantee_list();
				this.state = 6075;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 548, this._ctx) ) {
				case 1:
					{
					this.state = 6074;
					this.opt_grant_grant_option();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6077;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 6078;
				this.privileges();
				this.state = 6079;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6080;
				this.defacl_privilege_target();
				this.state = 6081;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6082;
				this.grantee_list();
				this.state = 6084;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 549, this._ctx) ) {
				case 1:
					{
					this.state = 6083;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6086;
				this.match(PostgreSQLParser.KW_REVOKE);
				this.state = 6087;
				this.match(PostgreSQLParser.KW_GRANT);
				this.state = 6088;
				this.match(PostgreSQLParser.KW_OPTION);
				this.state = 6089;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 6090;
				this.privileges();
				this.state = 6091;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6092;
				this.defacl_privilege_target();
				this.state = 6093;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6094;
				this.grantee_list();
				this.state = 6096;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 550, this._ctx) ) {
				case 1:
					{
					this.state = 6095;
					this.opt_drop_behavior();
					}
					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 defacl_privilege_target(): Defacl_privilege_targetContext {
		let _localctx: Defacl_privilege_targetContext = new Defacl_privilege_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 624, PostgreSQLParser.RULE_defacl_privilege_target);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6100;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FUNCTIONS || _la === PostgreSQLParser.KW_SEQUENCES || _la === PostgreSQLParser.KW_TABLES || _la === PostgreSQLParser.KW_TYPES || _la === PostgreSQLParser.KW_ROUTINES || _la === PostgreSQLParser.KW_SCHEMAS)) {
			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 indexstmt(): IndexstmtContext {
		let _localctx: IndexstmtContext = new IndexstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 626, PostgreSQLParser.RULE_indexstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6102;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 6104;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_UNIQUE) {
				{
				this.state = 6103;
				this.opt_unique();
				}
			}

			this.state = 6106;
			this.match(PostgreSQLParser.KW_INDEX);
			this.state = 6108;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
				{
				this.state = 6107;
				this.opt_concurrently();
				}
			}

			this.state = 6111;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 554, this._ctx) ) {
			case 1:
				{
				this.state = 6110;
				this.opt_if_not_exists();
				}
				break;
			}
			this.state = 6114;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 6113;
				this.opt_index_name();
				}
			}

			this.state = 6116;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 6117;
			this.relation_expr();
			this.state = 6119;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 6118;
				this.access_method_clause();
				}
			}

			this.state = 6121;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6122;
			this.index_params();
			this.state = 6123;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			this.state = 6125;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 557, this._ctx) ) {
			case 1:
				{
				this.state = 6124;
				this.opt_include();
				}
				break;
			}
			this.state = 6128;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 558, this._ctx) ) {
			case 1:
				{
				this.state = 6127;
				this.nulls_distinct();
				}
				break;
			}
			this.state = 6131;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 559, this._ctx) ) {
			case 1:
				{
				this.state = 6130;
				this.opt_reloptions();
				}
				break;
			}
			this.state = 6134;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 560, this._ctx) ) {
			case 1:
				{
				this.state = 6133;
				this.opttablespace();
				}
				break;
			}
			this.state = 6137;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHERE) {
				{
				this.state = 6136;
				this.where_clause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_unique(): Opt_uniqueContext {
		let _localctx: Opt_uniqueContext = new Opt_uniqueContext(this._ctx, this.state);
		this.enterRule(_localctx, 628, PostgreSQLParser.RULE_opt_unique);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6139;
			this.match(PostgreSQLParser.KW_UNIQUE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_concurrently(): Opt_concurrentlyContext {
		let _localctx: Opt_concurrentlyContext = new Opt_concurrentlyContext(this._ctx, this.state);
		this.enterRule(_localctx, 630, PostgreSQLParser.RULE_opt_concurrently);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6141;
			this.match(PostgreSQLParser.KW_CONCURRENTLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_index_name(): Opt_index_nameContext {
		let _localctx: Opt_index_nameContext = new Opt_index_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 632, PostgreSQLParser.RULE_opt_index_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6143;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public access_method_clause(): Access_method_clauseContext {
		let _localctx: Access_method_clauseContext = new Access_method_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 634, PostgreSQLParser.RULE_access_method_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6145;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 6146;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public index_params(): Index_paramsContext {
		let _localctx: Index_paramsContext = new Index_paramsContext(this._ctx, this.state);
		this.enterRule(_localctx, 636, PostgreSQLParser.RULE_index_params);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6148;
			this.index_elem();
			this.state = 6153;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6149;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6150;
				this.index_elem();
				}
				}
				this.state = 6155;
				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 index_elem_options(): Index_elem_optionsContext {
		let _localctx: Index_elem_optionsContext = new Index_elem_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 638, PostgreSQLParser.RULE_index_elem_options);
		let _la: number;
		try {
			this.state = 6179;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 570, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6157;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 563, this._ctx) ) {
				case 1:
					{
					this.state = 6156;
					this.opt_collate();
					}
					break;
				}
				this.state = 6160;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 564, this._ctx) ) {
				case 1:
					{
					this.state = 6159;
					this.opt_class();
					}
					break;
				}
				this.state = 6163;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ASC || _la === PostgreSQLParser.KW_DESC) {
					{
					this.state = 6162;
					this.opt_asc_desc();
					}
				}

				this.state = 6166;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NULLS) {
					{
					this.state = 6165;
					this.opt_nulls_order();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6169;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 567, this._ctx) ) {
				case 1:
					{
					this.state = 6168;
					this.opt_collate();
					}
					break;
				}
				this.state = 6171;
				this.any_name();
				this.state = 6172;
				this.reloptions();
				this.state = 6174;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ASC || _la === PostgreSQLParser.KW_DESC) {
					{
					this.state = 6173;
					this.opt_asc_desc();
					}
				}

				this.state = 6177;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NULLS) {
					{
					this.state = 6176;
					this.opt_nulls_order();
					}
				}

				}
				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 index_elem(): Index_elemContext {
		let _localctx: Index_elemContext = new Index_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 640, PostgreSQLParser.RULE_index_elem);
		try {
			this.state = 6192;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 571, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6181;
				this.column_name();
				this.state = 6182;
				this.index_elem_options();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6184;
				this.func_expr_windowless();
				this.state = 6185;
				this.index_elem_options();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6187;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6188;
				this.a_expr();
				this.state = 6189;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6190;
				this.index_elem_options();
				}
				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 opt_include(): Opt_includeContext {
		let _localctx: Opt_includeContext = new Opt_includeContext(this._ctx, this.state);
		this.enterRule(_localctx, 642, PostgreSQLParser.RULE_opt_include);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6194;
			this.match(PostgreSQLParser.KW_INCLUDE);
			this.state = 6195;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6196;
			this.index_including_params();
			this.state = 6197;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public index_including_params(): Index_including_paramsContext {
		let _localctx: Index_including_paramsContext = new Index_including_paramsContext(this._ctx, this.state);
		this.enterRule(_localctx, 644, PostgreSQLParser.RULE_index_including_params);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6199;
			this.index_elem();
			this.state = 6204;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6200;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6201;
				this.index_elem();
				}
				}
				this.state = 6206;
				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 opt_collate(): Opt_collateContext {
		let _localctx: Opt_collateContext = new Opt_collateContext(this._ctx, this.state);
		this.enterRule(_localctx, 646, PostgreSQLParser.RULE_opt_collate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6207;
			this.match(PostgreSQLParser.KW_COLLATE);
			this.state = 6208;
			this.any_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_class(): Opt_classContext {
		let _localctx: Opt_classContext = new Opt_classContext(this._ctx, this.state);
		this.enterRule(_localctx, 648, PostgreSQLParser.RULE_opt_class);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6210;
			this.any_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_asc_desc(): Opt_asc_descContext {
		let _localctx: Opt_asc_descContext = new Opt_asc_descContext(this._ctx, this.state);
		this.enterRule(_localctx, 650, PostgreSQLParser.RULE_opt_asc_desc);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6212;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ASC || _la === PostgreSQLParser.KW_DESC)) {
			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 opt_nulls_order(): Opt_nulls_orderContext {
		let _localctx: Opt_nulls_orderContext = new Opt_nulls_orderContext(this._ctx, this.state);
		this.enterRule(_localctx, 652, PostgreSQLParser.RULE_opt_nulls_order);
		try {
			this.state = 6218;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 573, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6214;
				this.match(PostgreSQLParser.KW_NULLS);
				this.state = 6215;
				this.match(PostgreSQLParser.KW_FIRST);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6216;
				this.match(PostgreSQLParser.KW_NULLS);
				this.state = 6217;
				this.match(PostgreSQLParser.KW_LAST);
				}
				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 createfunctionstmt(): CreatefunctionstmtContext {
		let _localctx: CreatefunctionstmtContext = new CreatefunctionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 654, PostgreSQLParser.RULE_createfunctionstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6220;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 6222;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OR) {
				{
				this.state = 6221;
				this.opt_or_replace();
				}
			}

			this.state = 6228;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FUNCTION:
				{
				this.state = 6224;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6225;
				this.function_name_create();
				}
				break;
			case PostgreSQLParser.KW_PROCEDURE:
				{
				this.state = 6226;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 6227;
				this.procedure_name_create();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 6230;
			this.func_args_with_defaults();
			this.state = 6240;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 577, this._ctx) ) {
			case 1:
				{
				this.state = 6231;
				this.match(PostgreSQLParser.KW_RETURNS);
				this.state = 6238;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 576, this._ctx) ) {
				case 1:
					{
					this.state = 6232;
					this.func_return();
					}
					break;

				case 2:
					{
					this.state = 6233;
					this.match(PostgreSQLParser.KW_TABLE);
					this.state = 6234;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 6235;
					this.table_func_column_list();
					this.state = 6236;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				break;
			}
			this.state = 6242;
			this.createfunc_opt_list();
			this.state = 6245;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 578, this._ctx) ) {
			case 1:
				{
				this.state = 6243;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6244;
				this.attrilist();
				}
				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 attrilist(): AttrilistContext {
		let _localctx: AttrilistContext = new AttrilistContext(this._ctx, this.state);
		this.enterRule(_localctx, 656, PostgreSQLParser.RULE_attrilist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6247;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6248;
			this.colid();
			this.state = 6253;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6249;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6250;
				this.colid();
				}
				}
				this.state = 6255;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 6256;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_or_replace(): Opt_or_replaceContext {
		let _localctx: Opt_or_replaceContext = new Opt_or_replaceContext(this._ctx, this.state);
		this.enterRule(_localctx, 658, PostgreSQLParser.RULE_opt_or_replace);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6258;
			this.match(PostgreSQLParser.KW_OR);
			this.state = 6259;
			this.match(PostgreSQLParser.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 func_args(): Func_argsContext {
		let _localctx: Func_argsContext = new Func_argsContext(this._ctx, this.state);
		this.enterRule(_localctx, 660, PostgreSQLParser.RULE_func_args);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6261;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6263;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || _la === PostgreSQLParser.KW_IN || _la === PostgreSQLParser.KW_TABLE || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (PostgreSQLParser.KW_VARIADIC - 101)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 101)) | (1 << (PostgreSQLParser.KW_BINARY - 101)) | (1 << (PostgreSQLParser.KW_COLLATION - 101)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 101)) | (1 << (PostgreSQLParser.KW_CROSS - 101)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 101)) | (1 << (PostgreSQLParser.KW_FREEZE - 101)) | (1 << (PostgreSQLParser.KW_FULL - 101)) | (1 << (PostgreSQLParser.KW_ILIKE - 101)) | (1 << (PostgreSQLParser.KW_INNER - 101)) | (1 << (PostgreSQLParser.KW_IS - 101)) | (1 << (PostgreSQLParser.KW_ISNULL - 101)) | (1 << (PostgreSQLParser.KW_JOIN - 101)) | (1 << (PostgreSQLParser.KW_LEFT - 101)) | (1 << (PostgreSQLParser.KW_LIKE - 101)) | (1 << (PostgreSQLParser.KW_NATURAL - 101)) | (1 << (PostgreSQLParser.KW_NOTNULL - 101)) | (1 << (PostgreSQLParser.KW_OUTER - 101)) | (1 << (PostgreSQLParser.KW_OVER - 101)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 101)) | (1 << (PostgreSQLParser.KW_RIGHT - 101)) | (1 << (PostgreSQLParser.KW_SIMILAR - 101)) | (1 << (PostgreSQLParser.KW_VERBOSE - 101)) | (1 << (PostgreSQLParser.KW_ABORT - 101)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 101)) | (1 << (PostgreSQLParser.KW_ACCESS - 101)) | (1 << (PostgreSQLParser.KW_ACTION - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (PostgreSQLParser.KW_ADD - 133)) | (1 << (PostgreSQLParser.KW_ADMIN - 133)) | (1 << (PostgreSQLParser.KW_AFTER - 133)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 133)) | (1 << (PostgreSQLParser.KW_ALSO - 133)) | (1 << (PostgreSQLParser.KW_ALTER - 133)) | (1 << (PostgreSQLParser.KW_ALWAYS - 133)) | (1 << (PostgreSQLParser.KW_ASSERTION - 133)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 133)) | (1 << (PostgreSQLParser.KW_AT - 133)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 133)) | (1 << (PostgreSQLParser.KW_BACKWARD - 133)) | (1 << (PostgreSQLParser.KW_BEFORE - 133)) | (1 << (PostgreSQLParser.KW_BEGIN - 133)) | (1 << (PostgreSQLParser.KW_BY - 133)) | (1 << (PostgreSQLParser.KW_CACHE - 133)) | (1 << (PostgreSQLParser.KW_CALLED - 133)) | (1 << (PostgreSQLParser.KW_CASCADE - 133)) | (1 << (PostgreSQLParser.KW_CASCADED - 133)) | (1 << (PostgreSQLParser.KW_CATALOG - 133)) | (1 << (PostgreSQLParser.KW_CHAIN - 133)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 133)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 133)) | (1 << (PostgreSQLParser.KW_CLASS - 133)) | (1 << (PostgreSQLParser.KW_CLOSE - 133)) | (1 << (PostgreSQLParser.KW_CLUSTER - 133)) | (1 << (PostgreSQLParser.KW_COMMENT - 133)) | (1 << (PostgreSQLParser.KW_COMMENTS - 133)) | (1 << (PostgreSQLParser.KW_COMMIT - 133)) | (1 << (PostgreSQLParser.KW_COMMITTED - 133)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 133)) | (1 << (PostgreSQLParser.KW_CONNECTION - 133)))) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & ((1 << (PostgreSQLParser.KW_CONSTRAINTS - 165)) | (1 << (PostgreSQLParser.KW_CONTENT - 165)) | (1 << (PostgreSQLParser.KW_CONTINUE - 165)) | (1 << (PostgreSQLParser.KW_CONVERSION - 165)) | (1 << (PostgreSQLParser.KW_COPY - 165)) | (1 << (PostgreSQLParser.KW_COST - 165)) | (1 << (PostgreSQLParser.KW_CSV - 165)) | (1 << (PostgreSQLParser.KW_CURSOR - 165)) | (1 << (PostgreSQLParser.KW_CYCLE - 165)) | (1 << (PostgreSQLParser.KW_DATA - 165)) | (1 << (PostgreSQLParser.KW_DATABASE - 165)) | (1 << (PostgreSQLParser.KW_DAY - 165)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 165)) | (1 << (PostgreSQLParser.KW_DECLARE - 165)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 165)) | (1 << (PostgreSQLParser.KW_DEFERRED - 165)) | (1 << (PostgreSQLParser.KW_DEFINER - 165)) | (1 << (PostgreSQLParser.KW_DELETE - 165)) | (1 << (PostgreSQLParser.KW_DELIMITER - 165)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 165)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 165)) | (1 << (PostgreSQLParser.KW_DISABLE - 165)) | (1 << (PostgreSQLParser.KW_DISCARD - 165)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 165)) | (1 << (PostgreSQLParser.KW_DOMAIN - 165)) | (1 << (PostgreSQLParser.KW_DOUBLE - 165)) | (1 << (PostgreSQLParser.KW_DROP - 165)) | (1 << (PostgreSQLParser.KW_EACH - 165)) | (1 << (PostgreSQLParser.KW_ENABLE - 165)) | (1 << (PostgreSQLParser.KW_ENCODING - 165)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 165)) | (1 << (PostgreSQLParser.KW_ENUM - 165)))) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & ((1 << (PostgreSQLParser.KW_ESCAPE - 197)) | (1 << (PostgreSQLParser.KW_EVENT - 197)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 197)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 197)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 197)) | (1 << (PostgreSQLParser.KW_EXECUTE - 197)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 197)) | (1 << (PostgreSQLParser.KW_EXTENSION - 197)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 197)) | (1 << (PostgreSQLParser.KW_FAMILY - 197)) | (1 << (PostgreSQLParser.KW_FIRST - 197)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 197)) | (1 << (PostgreSQLParser.KW_FORCE - 197)) | (1 << (PostgreSQLParser.KW_FORWARD - 197)) | (1 << (PostgreSQLParser.KW_FUNCTION - 197)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 197)) | (1 << (PostgreSQLParser.KW_GLOBAL - 197)) | (1 << (PostgreSQLParser.KW_GRANTED - 197)) | (1 << (PostgreSQLParser.KW_HANDLER - 197)) | (1 << (PostgreSQLParser.KW_HEADER - 197)) | (1 << (PostgreSQLParser.KW_HOLD - 197)) | (1 << (PostgreSQLParser.KW_HOUR - 197)) | (1 << (PostgreSQLParser.KW_IDENTITY - 197)) | (1 << (PostgreSQLParser.KW_IF - 197)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 197)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 197)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 197)) | (1 << (PostgreSQLParser.KW_INCLUDING - 197)) | (1 << (PostgreSQLParser.KW_INCREMENT - 197)) | (1 << (PostgreSQLParser.KW_INDEX - 197)) | (1 << (PostgreSQLParser.KW_INDEXES - 197)) | (1 << (PostgreSQLParser.KW_INHERIT - 197)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 6262;
				this.func_args_list();
				}
			}

			this.state = 6265;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_args_list(): Func_args_listContext {
		let _localctx: Func_args_listContext = new Func_args_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 662, PostgreSQLParser.RULE_func_args_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6267;
			this.func_arg();
			this.state = 6272;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6268;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6269;
				this.func_arg();
				}
				}
				this.state = 6274;
				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 routine_with_argtypes_list(): Routine_with_argtypes_listContext {
		let _localctx: Routine_with_argtypes_listContext = new Routine_with_argtypes_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 664, PostgreSQLParser.RULE_routine_with_argtypes_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6275;
			this.routine_with_argtypes();
			this.state = 6280;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6276;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6277;
				this.routine_with_argtypes();
				}
				}
				this.state = 6282;
				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 routine_with_argtypes(): Routine_with_argtypesContext {
		let _localctx: Routine_with_argtypesContext = new Routine_with_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 666, PostgreSQLParser.RULE_routine_with_argtypes);
		let _la: number;
		try {
			this.state = 6291;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 584, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6283;
				this.routine_name();
				this.state = 6284;
				this.func_args();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6287;
				this.colid();
				this.state = 6289;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
					{
					this.state = 6288;
					this.indirection();
					}
				}

				}
				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 procedure_with_argtypes_list(): Procedure_with_argtypes_listContext {
		let _localctx: Procedure_with_argtypes_listContext = new Procedure_with_argtypes_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 668, PostgreSQLParser.RULE_procedure_with_argtypes_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6293;
			this.procedure_with_argtypes();
			this.state = 6298;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6294;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6295;
				this.procedure_with_argtypes();
				}
				}
				this.state = 6300;
				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 procedure_with_argtypes(): Procedure_with_argtypesContext {
		let _localctx: Procedure_with_argtypesContext = new Procedure_with_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 670, PostgreSQLParser.RULE_procedure_with_argtypes);
		let _la: number;
		try {
			this.state = 6309;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 587, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6301;
				this.procedure_name();
				this.state = 6302;
				this.func_args();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6305;
				this.colid();
				this.state = 6307;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
					{
					this.state = 6306;
					this.indirection();
					}
				}

				}
				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 function_with_argtypes_list(): Function_with_argtypes_listContext {
		let _localctx: Function_with_argtypes_listContext = new Function_with_argtypes_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 672, PostgreSQLParser.RULE_function_with_argtypes_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6311;
			this.function_with_argtypes();
			this.state = 6316;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6312;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6313;
				this.function_with_argtypes();
				}
				}
				this.state = 6318;
				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 function_with_argtypes(): Function_with_argtypesContext {
		let _localctx: Function_with_argtypesContext = new Function_with_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 674, PostgreSQLParser.RULE_function_with_argtypes);
		let _la: number;
		try {
			this.state = 6327;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 590, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6319;
				this.function_name();
				this.state = 6320;
				this.func_args();
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6323;
				this.colid();
				this.state = 6325;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
					{
					this.state = 6324;
					this.indirection();
					}
				}

				}
				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 func_args_with_defaults(): Func_args_with_defaultsContext {
		let _localctx: Func_args_with_defaultsContext = new Func_args_with_defaultsContext(this._ctx, this.state);
		this.enterRule(_localctx, 676, PostgreSQLParser.RULE_func_args_with_defaults);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6329;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6331;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || _la === PostgreSQLParser.KW_IN || _la === PostgreSQLParser.KW_TABLE || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (PostgreSQLParser.KW_VARIADIC - 101)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 101)) | (1 << (PostgreSQLParser.KW_BINARY - 101)) | (1 << (PostgreSQLParser.KW_COLLATION - 101)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 101)) | (1 << (PostgreSQLParser.KW_CROSS - 101)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 101)) | (1 << (PostgreSQLParser.KW_FREEZE - 101)) | (1 << (PostgreSQLParser.KW_FULL - 101)) | (1 << (PostgreSQLParser.KW_ILIKE - 101)) | (1 << (PostgreSQLParser.KW_INNER - 101)) | (1 << (PostgreSQLParser.KW_IS - 101)) | (1 << (PostgreSQLParser.KW_ISNULL - 101)) | (1 << (PostgreSQLParser.KW_JOIN - 101)) | (1 << (PostgreSQLParser.KW_LEFT - 101)) | (1 << (PostgreSQLParser.KW_LIKE - 101)) | (1 << (PostgreSQLParser.KW_NATURAL - 101)) | (1 << (PostgreSQLParser.KW_NOTNULL - 101)) | (1 << (PostgreSQLParser.KW_OUTER - 101)) | (1 << (PostgreSQLParser.KW_OVER - 101)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 101)) | (1 << (PostgreSQLParser.KW_RIGHT - 101)) | (1 << (PostgreSQLParser.KW_SIMILAR - 101)) | (1 << (PostgreSQLParser.KW_VERBOSE - 101)) | (1 << (PostgreSQLParser.KW_ABORT - 101)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 101)) | (1 << (PostgreSQLParser.KW_ACCESS - 101)) | (1 << (PostgreSQLParser.KW_ACTION - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (PostgreSQLParser.KW_ADD - 133)) | (1 << (PostgreSQLParser.KW_ADMIN - 133)) | (1 << (PostgreSQLParser.KW_AFTER - 133)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 133)) | (1 << (PostgreSQLParser.KW_ALSO - 133)) | (1 << (PostgreSQLParser.KW_ALTER - 133)) | (1 << (PostgreSQLParser.KW_ALWAYS - 133)) | (1 << (PostgreSQLParser.KW_ASSERTION - 133)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 133)) | (1 << (PostgreSQLParser.KW_AT - 133)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 133)) | (1 << (PostgreSQLParser.KW_BACKWARD - 133)) | (1 << (PostgreSQLParser.KW_BEFORE - 133)) | (1 << (PostgreSQLParser.KW_BEGIN - 133)) | (1 << (PostgreSQLParser.KW_BY - 133)) | (1 << (PostgreSQLParser.KW_CACHE - 133)) | (1 << (PostgreSQLParser.KW_CALLED - 133)) | (1 << (PostgreSQLParser.KW_CASCADE - 133)) | (1 << (PostgreSQLParser.KW_CASCADED - 133)) | (1 << (PostgreSQLParser.KW_CATALOG - 133)) | (1 << (PostgreSQLParser.KW_CHAIN - 133)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 133)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 133)) | (1 << (PostgreSQLParser.KW_CLASS - 133)) | (1 << (PostgreSQLParser.KW_CLOSE - 133)) | (1 << (PostgreSQLParser.KW_CLUSTER - 133)) | (1 << (PostgreSQLParser.KW_COMMENT - 133)) | (1 << (PostgreSQLParser.KW_COMMENTS - 133)) | (1 << (PostgreSQLParser.KW_COMMIT - 133)) | (1 << (PostgreSQLParser.KW_COMMITTED - 133)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 133)) | (1 << (PostgreSQLParser.KW_CONNECTION - 133)))) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & ((1 << (PostgreSQLParser.KW_CONSTRAINTS - 165)) | (1 << (PostgreSQLParser.KW_CONTENT - 165)) | (1 << (PostgreSQLParser.KW_CONTINUE - 165)) | (1 << (PostgreSQLParser.KW_CONVERSION - 165)) | (1 << (PostgreSQLParser.KW_COPY - 165)) | (1 << (PostgreSQLParser.KW_COST - 165)) | (1 << (PostgreSQLParser.KW_CSV - 165)) | (1 << (PostgreSQLParser.KW_CURSOR - 165)) | (1 << (PostgreSQLParser.KW_CYCLE - 165)) | (1 << (PostgreSQLParser.KW_DATA - 165)) | (1 << (PostgreSQLParser.KW_DATABASE - 165)) | (1 << (PostgreSQLParser.KW_DAY - 165)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 165)) | (1 << (PostgreSQLParser.KW_DECLARE - 165)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 165)) | (1 << (PostgreSQLParser.KW_DEFERRED - 165)) | (1 << (PostgreSQLParser.KW_DEFINER - 165)) | (1 << (PostgreSQLParser.KW_DELETE - 165)) | (1 << (PostgreSQLParser.KW_DELIMITER - 165)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 165)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 165)) | (1 << (PostgreSQLParser.KW_DISABLE - 165)) | (1 << (PostgreSQLParser.KW_DISCARD - 165)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 165)) | (1 << (PostgreSQLParser.KW_DOMAIN - 165)) | (1 << (PostgreSQLParser.KW_DOUBLE - 165)) | (1 << (PostgreSQLParser.KW_DROP - 165)) | (1 << (PostgreSQLParser.KW_EACH - 165)) | (1 << (PostgreSQLParser.KW_ENABLE - 165)) | (1 << (PostgreSQLParser.KW_ENCODING - 165)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 165)) | (1 << (PostgreSQLParser.KW_ENUM - 165)))) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & ((1 << (PostgreSQLParser.KW_ESCAPE - 197)) | (1 << (PostgreSQLParser.KW_EVENT - 197)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 197)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 197)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 197)) | (1 << (PostgreSQLParser.KW_EXECUTE - 197)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 197)) | (1 << (PostgreSQLParser.KW_EXTENSION - 197)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 197)) | (1 << (PostgreSQLParser.KW_FAMILY - 197)) | (1 << (PostgreSQLParser.KW_FIRST - 197)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 197)) | (1 << (PostgreSQLParser.KW_FORCE - 197)) | (1 << (PostgreSQLParser.KW_FORWARD - 197)) | (1 << (PostgreSQLParser.KW_FUNCTION - 197)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 197)) | (1 << (PostgreSQLParser.KW_GLOBAL - 197)) | (1 << (PostgreSQLParser.KW_GRANTED - 197)) | (1 << (PostgreSQLParser.KW_HANDLER - 197)) | (1 << (PostgreSQLParser.KW_HEADER - 197)) | (1 << (PostgreSQLParser.KW_HOLD - 197)) | (1 << (PostgreSQLParser.KW_HOUR - 197)) | (1 << (PostgreSQLParser.KW_IDENTITY - 197)) | (1 << (PostgreSQLParser.KW_IF - 197)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 197)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 197)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 197)) | (1 << (PostgreSQLParser.KW_INCLUDING - 197)) | (1 << (PostgreSQLParser.KW_INCREMENT - 197)) | (1 << (PostgreSQLParser.KW_INDEX - 197)) | (1 << (PostgreSQLParser.KW_INDEXES - 197)) | (1 << (PostgreSQLParser.KW_INHERIT - 197)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 6330;
				this.func_args_with_defaults_list();
				}
			}

			this.state = 6333;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_args_with_defaults_list(): Func_args_with_defaults_listContext {
		let _localctx: Func_args_with_defaults_listContext = new Func_args_with_defaults_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 678, PostgreSQLParser.RULE_func_args_with_defaults_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6335;
			this.func_arg_with_default();
			this.state = 6340;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6336;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6337;
				this.func_arg_with_default();
				}
				}
				this.state = 6342;
				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 func_arg(): Func_argContext {
		let _localctx: Func_argContext = new Func_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 680, PostgreSQLParser.RULE_func_arg);
		try {
			this.state = 6356;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 595, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6343;
				this.arg_class();
				this.state = 6345;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 593, this._ctx) ) {
				case 1:
					{
					this.state = 6344;
					this.param_name();
					}
					break;
				}
				this.state = 6347;
				this.func_type();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6349;
				this.param_name();
				this.state = 6351;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 594, this._ctx) ) {
				case 1:
					{
					this.state = 6350;
					this.arg_class();
					}
					break;
				}
				this.state = 6353;
				this.func_type();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6355;
				this.func_type();
				}
				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 arg_class(): Arg_classContext {
		let _localctx: Arg_classContext = new Arg_classContext(this._ctx, this.state);
		this.enterRule(_localctx, 682, PostgreSQLParser.RULE_arg_class);
		try {
			this.state = 6365;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_IN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6358;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 6360;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 596, this._ctx) ) {
				case 1:
					{
					this.state = 6359;
					this.match(PostgreSQLParser.KW_OUT);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_OUT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6362;
				this.match(PostgreSQLParser.KW_OUT);
				}
				break;
			case PostgreSQLParser.KW_INOUT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6363;
				this.match(PostgreSQLParser.KW_INOUT);
				}
				break;
			case PostgreSQLParser.KW_VARIADIC:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6364;
				this.match(PostgreSQLParser.KW_VARIADIC);
				}
				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 param_name(): Param_nameContext {
		let _localctx: Param_nameContext = new Param_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 684, PostgreSQLParser.RULE_param_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6367;
			this.type_function_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_return(): Func_returnContext {
		let _localctx: Func_returnContext = new Func_returnContext(this._ctx, this.state);
		this.enterRule(_localctx, 686, PostgreSQLParser.RULE_func_return);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6369;
			this.func_type();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_type(): Func_typeContext {
		let _localctx: Func_typeContext = new Func_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 688, PostgreSQLParser.RULE_func_type);
		try {
			this.state = 6383;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 598, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6371;
				this.typename();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6372;
				this.type_function_name();
				this.state = 6373;
				this.attrs();
				this.state = 6374;
				this.match(PostgreSQLParser.PERCENT);
				this.state = 6375;
				this.match(PostgreSQLParser.KW_TYPE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6377;
				this.match(PostgreSQLParser.KW_SETOF);
				this.state = 6378;
				this.type_function_name();
				this.state = 6379;
				this.attrs();
				this.state = 6380;
				this.match(PostgreSQLParser.PERCENT);
				this.state = 6381;
				this.match(PostgreSQLParser.KW_TYPE);
				}
				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 func_arg_with_default(): Func_arg_with_defaultContext {
		let _localctx: Func_arg_with_defaultContext = new Func_arg_with_defaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 690, PostgreSQLParser.RULE_func_arg_with_default);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6385;
			this.func_arg();
			this.state = 6388;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.KW_DEFAULT) {
				{
				this.state = 6386;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.KW_DEFAULT)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 6387;
				this.a_expr();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aggr_arg(): Aggr_argContext {
		let _localctx: Aggr_argContext = new Aggr_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 692, PostgreSQLParser.RULE_aggr_arg);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6390;
			this.func_arg();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aggr_args(): Aggr_argsContext {
		let _localctx: Aggr_argsContext = new Aggr_argsContext(this._ctx, this.state);
		this.enterRule(_localctx, 694, PostgreSQLParser.RULE_aggr_args);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6392;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6403;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 600, this._ctx) ) {
			case 1:
				{
				this.state = 6393;
				this.match(PostgreSQLParser.STAR);
				}
				break;

			case 2:
				{
				this.state = 6394;
				this.aggr_args_list();
				}
				break;

			case 3:
				{
				this.state = 6395;
				this.match(PostgreSQLParser.KW_ORDER);
				this.state = 6396;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 6397;
				this.aggr_args_list();
				}
				break;

			case 4:
				{
				this.state = 6398;
				this.aggr_args_list();
				this.state = 6399;
				this.match(PostgreSQLParser.KW_ORDER);
				this.state = 6400;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 6401;
				this.aggr_args_list();
				}
				break;
			}
			this.state = 6405;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aggr_args_list(): Aggr_args_listContext {
		let _localctx: Aggr_args_listContext = new Aggr_args_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 696, PostgreSQLParser.RULE_aggr_args_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6407;
			this.aggr_arg();
			this.state = 6412;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6408;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6409;
				this.aggr_arg();
				}
				}
				this.state = 6414;
				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 aggregate_with_argtypes(): Aggregate_with_argtypesContext {
		let _localctx: Aggregate_with_argtypesContext = new Aggregate_with_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 698, PostgreSQLParser.RULE_aggregate_with_argtypes);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6415;
			this.function_name();
			this.state = 6416;
			this.aggr_args();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public aggregate_with_argtypes_list(): Aggregate_with_argtypes_listContext {
		let _localctx: Aggregate_with_argtypes_listContext = new Aggregate_with_argtypes_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 700, PostgreSQLParser.RULE_aggregate_with_argtypes_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6418;
			this.aggregate_with_argtypes();
			this.state = 6423;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6419;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6420;
				this.aggregate_with_argtypes();
				}
				}
				this.state = 6425;
				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 createfunc_opt_list(): Createfunc_opt_listContext {
		let _localctx: Createfunc_opt_listContext = new Createfunc_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 702, PostgreSQLParser.RULE_createfunc_opt_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6427;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 6426;
					this.createfunc_opt_item();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6429;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 603, 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 common_func_opt_item(): Common_func_opt_itemContext {
		let _localctx: Common_func_opt_itemContext = new Common_func_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 704, PostgreSQLParser.RULE_common_func_opt_item);
		try {
			this.state = 6466;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 604, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6431;
				this.match(PostgreSQLParser.KW_CALLED);
				this.state = 6432;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6433;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 6434;
				this.match(PostgreSQLParser.KW_INPUT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6435;
				this.match(PostgreSQLParser.KW_RETURNS);
				this.state = 6436;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 6437;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6438;
				this.match(PostgreSQLParser.KW_NULL);
				this.state = 6439;
				this.match(PostgreSQLParser.KW_INPUT);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6440;
				this.match(PostgreSQLParser.KW_STRICT);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6441;
				this.match(PostgreSQLParser.KW_IMMUTABLE);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6442;
				this.match(PostgreSQLParser.KW_STABLE);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6443;
				this.match(PostgreSQLParser.KW_VOLATILE);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6444;
				this.match(PostgreSQLParser.KW_EXTERNAL);
				this.state = 6445;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 6446;
				this.match(PostgreSQLParser.KW_DEFINER);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6447;
				this.match(PostgreSQLParser.KW_EXTERNAL);
				this.state = 6448;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 6449;
				this.match(PostgreSQLParser.KW_INVOKER);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6450;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 6451;
				this.match(PostgreSQLParser.KW_DEFINER);
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 6452;
				this.match(PostgreSQLParser.KW_SECURITY);
				this.state = 6453;
				this.match(PostgreSQLParser.KW_INVOKER);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 6454;
				this.match(PostgreSQLParser.KW_LEAKPROOF);
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 6455;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 6456;
				this.match(PostgreSQLParser.KW_LEAKPROOF);
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 6457;
				this.match(PostgreSQLParser.KW_COST);
				this.state = 6458;
				this.numericonly();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 6459;
				this.match(PostgreSQLParser.KW_ROWS);
				this.state = 6460;
				this.numericonly();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 6461;
				this.match(PostgreSQLParser.KW_SUPPORT);
				this.state = 6462;
				this.any_name();
				}
				break;

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

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 6464;
				this.match(PostgreSQLParser.KW_PARALLEL);
				this.state = 6465;
				this.colid();
				}
				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 createfunc_opt_item(): Createfunc_opt_itemContext {
		let _localctx: Createfunc_opt_itemContext = new Createfunc_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 706, PostgreSQLParser.RULE_createfunc_opt_item);
		try {
			this.state = 6493;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 606, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6468;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6469;
				this.sconst();
				this.state = 6470;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6471;
				this.sconst();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6473;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 6474;
				this.nonreservedword_or_sconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6475;
				this.match(PostgreSQLParser.KW_TRANSFORM);
				this.state = 6476;
				this.transform_type_list();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6477;
				this.match(PostgreSQLParser.KW_WINDOW);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6478;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 6479;
				this.colid();
				this.state = 6486;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_TO:
					{
					this.state = 6480;
					this.match(PostgreSQLParser.KW_TO);
					this.state = 6481;
					this.colid();
					}
					break;
				case PostgreSQLParser.EQUAL:
					{
					this.state = 6482;
					this.match(PostgreSQLParser.EQUAL);
					this.state = 6483;
					this.colid();
					}
					break;
				case PostgreSQLParser.KW_FROM:
					{
					this.state = 6484;
					this.match(PostgreSQLParser.KW_FROM);
					this.state = 6485;
					this.match(PostgreSQLParser.KW_CURRENT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6488;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6489;
				this.colid();
				}
				break;

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

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

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6492;
				this.colid();
				}
				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 transform_type_list(): Transform_type_listContext {
		let _localctx: Transform_type_listContext = new Transform_type_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 708, PostgreSQLParser.RULE_transform_type_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6495;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 6496;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 6497;
			this.typename();
			this.state = 6504;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6498;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6499;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 6500;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 6501;
				this.typename();
				}
				}
				this.state = 6506;
				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 opt_definition(): Opt_definitionContext {
		let _localctx: Opt_definitionContext = new Opt_definitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 710, PostgreSQLParser.RULE_opt_definition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6507;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 6508;
			this.definition();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public table_func_column(): Table_func_columnContext {
		let _localctx: Table_func_columnContext = new Table_func_columnContext(this._ctx, this.state);
		this.enterRule(_localctx, 712, PostgreSQLParser.RULE_table_func_column);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6510;
			this.column_name();
			this.state = 6511;
			this.func_type();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public table_func_column_list(): Table_func_column_listContext {
		let _localctx: Table_func_column_listContext = new Table_func_column_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 714, PostgreSQLParser.RULE_table_func_column_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6513;
			this.table_func_column();
			this.state = 6518;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6514;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6515;
				this.table_func_column();
				}
				}
				this.state = 6520;
				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 alterfunctionstmt(): AlterfunctionstmtContext {
		let _localctx: AlterfunctionstmtContext = new AlterfunctionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 716, PostgreSQLParser.RULE_alterfunctionstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6521;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 6522;
			this.alterFunctionTypeClause();
			this.state = 6523;
			this.alterfunc_opt_list();
			this.state = 6525;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 609, this._ctx) ) {
			case 1:
				{
				this.state = 6524;
				this.opt_restrict();
				}
				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 alterFunctionTypeClause(): AlterFunctionTypeClauseContext {
		let _localctx: AlterFunctionTypeClauseContext = new AlterFunctionTypeClauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 718, PostgreSQLParser.RULE_alterFunctionTypeClause);
		try {
			this.state = 6533;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FUNCTION:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6527;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6528;
				this.function_with_argtypes();
				}
				break;
			case PostgreSQLParser.KW_PROCEDURE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6529;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 6530;
				this.procedure_with_argtypes();
				}
				break;
			case PostgreSQLParser.KW_ROUTINE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6531;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 6532;
				this.routine_with_argtypes();
				}
				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 alterfunc_opt_list(): Alterfunc_opt_listContext {
		let _localctx: Alterfunc_opt_listContext = new Alterfunc_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 720, PostgreSQLParser.RULE_alterfunc_opt_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6536;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 6535;
					this.common_func_opt_item();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6538;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 611, 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 opt_restrict(): Opt_restrictContext {
		let _localctx: Opt_restrictContext = new Opt_restrictContext(this._ctx, this.state);
		this.enterRule(_localctx, 722, PostgreSQLParser.RULE_opt_restrict);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6540;
			this.match(PostgreSQLParser.KW_RESTRICT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public removefuncstmt(): RemovefuncstmtContext {
		let _localctx: RemovefuncstmtContext = new RemovefuncstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 724, PostgreSQLParser.RULE_removefuncstmt);
		try {
			this.state = 6569;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 618, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6542;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 6543;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6545;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 612, this._ctx) ) {
				case 1:
					{
					this.state = 6544;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6547;
				this.function_with_argtypes_list();
				this.state = 6549;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 613, this._ctx) ) {
				case 1:
					{
					this.state = 6548;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6551;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 6552;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 6554;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 614, this._ctx) ) {
				case 1:
					{
					this.state = 6553;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6556;
				this.procedure_with_argtypes_list();
				this.state = 6558;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 615, this._ctx) ) {
				case 1:
					{
					this.state = 6557;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6560;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 6561;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 6563;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 616, this._ctx) ) {
				case 1:
					{
					this.state = 6562;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6565;
				this.routine_with_argtypes_list();
				this.state = 6567;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 617, this._ctx) ) {
				case 1:
					{
					this.state = 6566;
					this.opt_drop_behavior();
					}
					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 removeaggrstmt(): RemoveaggrstmtContext {
		let _localctx: RemoveaggrstmtContext = new RemoveaggrstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 726, PostgreSQLParser.RULE_removeaggrstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6571;
			this.match(PostgreSQLParser.KW_DROP);
			this.state = 6572;
			this.match(PostgreSQLParser.KW_AGGREGATE);
			this.state = 6574;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 619, this._ctx) ) {
			case 1:
				{
				this.state = 6573;
				this.opt_if_exists();
				}
				break;
			}
			this.state = 6576;
			this.aggregate_with_argtypes_list();
			this.state = 6578;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 620, this._ctx) ) {
			case 1:
				{
				this.state = 6577;
				this.opt_drop_behavior();
				}
				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 removeoperstmt(): RemoveoperstmtContext {
		let _localctx: RemoveoperstmtContext = new RemoveoperstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 728, PostgreSQLParser.RULE_removeoperstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6580;
			this.match(PostgreSQLParser.KW_DROP);
			this.state = 6581;
			this.match(PostgreSQLParser.KW_OPERATOR);
			this.state = 6583;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 621, this._ctx) ) {
			case 1:
				{
				this.state = 6582;
				this.opt_if_exists();
				}
				break;
			}
			this.state = 6585;
			this.operator_with_argtypes_list();
			this.state = 6587;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 622, this._ctx) ) {
			case 1:
				{
				this.state = 6586;
				this.opt_drop_behavior();
				}
				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 oper_argtypes(): Oper_argtypesContext {
		let _localctx: Oper_argtypesContext = new Oper_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 730, PostgreSQLParser.RULE_oper_argtypes);
		try {
			this.state = 6611;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 623, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6589;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6590;
				this.typename();
				this.state = 6591;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6593;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6594;
				this.typename();
				this.state = 6595;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6596;
				this.typename();
				this.state = 6597;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6599;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6600;
				this.match(PostgreSQLParser.KW_NONE);
				this.state = 6601;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6602;
				this.typename();
				this.state = 6603;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6605;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6606;
				this.typename();
				this.state = 6607;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6608;
				this.match(PostgreSQLParser.KW_NONE);
				this.state = 6609;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 any_operator(): Any_operatorContext {
		let _localctx: Any_operatorContext = new Any_operatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 732, PostgreSQLParser.RULE_any_operator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6618;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				{
				this.state = 6613;
				this.colid();
				this.state = 6614;
				this.match(PostgreSQLParser.DOT);
				}
				}
				this.state = 6620;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 6621;
			this.all_op();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public operator_with_argtypes_list(): Operator_with_argtypes_listContext {
		let _localctx: Operator_with_argtypes_listContext = new Operator_with_argtypes_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 734, PostgreSQLParser.RULE_operator_with_argtypes_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6623;
			this.operator_with_argtypes();
			this.state = 6628;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6624;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6625;
				this.operator_with_argtypes();
				}
				}
				this.state = 6630;
				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 operator_with_argtypes(): Operator_with_argtypesContext {
		let _localctx: Operator_with_argtypesContext = new Operator_with_argtypesContext(this._ctx, this.state);
		this.enterRule(_localctx, 736, PostgreSQLParser.RULE_operator_with_argtypes);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6631;
			this.any_operator();
			this.state = 6632;
			this.oper_argtypes();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dostmt(): DostmtContext {
		let _localctx: DostmtContext = new DostmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 738, PostgreSQLParser.RULE_dostmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6634;
			this.match(PostgreSQLParser.KW_DO);
			this.state = 6635;
			this.dostmt_opt_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public dostmt_opt_list(): Dostmt_opt_listContext {
		let _localctx: Dostmt_opt_listContext = new Dostmt_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 740, PostgreSQLParser.RULE_dostmt_opt_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6638;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 6637;
					this.dostmt_opt_item();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 6640;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 626, 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 dostmt_opt_item(): Dostmt_opt_itemContext {
		let _localctx: Dostmt_opt_itemContext = new Dostmt_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 742, PostgreSQLParser.RULE_dostmt_opt_item);
		try {
			this.state = 6645;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6642;
				this.sconst();
				}
				break;
			case PostgreSQLParser.KW_LANGUAGE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6643;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 6644;
				this.nonreservedword_or_sconst();
				}
				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 createcaststmt(): CreatecaststmtContext {
		let _localctx: CreatecaststmtContext = new CreatecaststmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 744, PostgreSQLParser.RULE_createcaststmt);
		try {
			this.state = 6684;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 631, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6647;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 6648;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 6649;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6650;
				this.typename();
				this.state = 6651;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6652;
				this.typename();
				this.state = 6653;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6654;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6655;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6656;
				this.function_with_argtypes();
				this.state = 6658;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 628, this._ctx) ) {
				case 1:
					{
					this.state = 6657;
					this.cast_context();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6660;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 6661;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 6662;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6663;
				this.typename();
				this.state = 6664;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6665;
				this.typename();
				this.state = 6666;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6667;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 6668;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6670;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 629, this._ctx) ) {
				case 1:
					{
					this.state = 6669;
					this.cast_context();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6672;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 6673;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 6674;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6675;
				this.typename();
				this.state = 6676;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6677;
				this.typename();
				this.state = 6678;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6679;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6680;
				this.match(PostgreSQLParser.KW_INOUT);
				this.state = 6682;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 630, this._ctx) ) {
				case 1:
					{
					this.state = 6681;
					this.cast_context();
					}
					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 cast_context(): Cast_contextContext {
		let _localctx: Cast_contextContext = new Cast_contextContext(this._ctx, this.state);
		this.enterRule(_localctx, 746, PostgreSQLParser.RULE_cast_context);
		try {
			this.state = 6690;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 632, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6686;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6687;
				this.match(PostgreSQLParser.KW_IMPLICIT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6688;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 6689;
				this.match(PostgreSQLParser.KW_ASSIGNMENT);
				}
				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 opt_if_exists(): Opt_if_existsContext {
		let _localctx: Opt_if_existsContext = new Opt_if_existsContext(this._ctx, this.state);
		this.enterRule(_localctx, 748, PostgreSQLParser.RULE_opt_if_exists);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6692;
			this.match(PostgreSQLParser.KW_IF);
			this.state = 6693;
			this.match(PostgreSQLParser.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 createtransformstmt(): CreatetransformstmtContext {
		let _localctx: CreatetransformstmtContext = new CreatetransformstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 750, PostgreSQLParser.RULE_createtransformstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6695;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 6697;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OR) {
				{
				this.state = 6696;
				this.opt_or_replace();
				}
			}

			this.state = 6699;
			this.match(PostgreSQLParser.KW_TRANSFORM);
			this.state = 6700;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 6701;
			this.typename();
			this.state = 6702;
			this.match(PostgreSQLParser.KW_LANGUAGE);
			this.state = 6703;
			this.name();
			this.state = 6704;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 6705;
			this.transform_element_list();
			this.state = 6706;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public transform_element_list(): Transform_element_listContext {
		let _localctx: Transform_element_listContext = new Transform_element_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 752, PostgreSQLParser.RULE_transform_element_list);
		try {
			this.state = 6742;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 634, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6708;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6709;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6710;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6711;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6712;
				this.function_with_argtypes();
				this.state = 6713;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6714;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6715;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6716;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6717;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6718;
				this.function_with_argtypes();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6720;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6721;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6722;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6723;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6724;
				this.function_with_argtypes();
				this.state = 6725;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6726;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6727;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6728;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6729;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6730;
				this.function_with_argtypes();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6732;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 6733;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6734;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6735;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6736;
				this.function_with_argtypes();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6737;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6738;
				this.match(PostgreSQLParser.KW_SQL);
				this.state = 6739;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 6740;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6741;
				this.function_with_argtypes();
				}
				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 reindexstmt(): ReindexstmtContext {
		let _localctx: ReindexstmtContext = new ReindexstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 754, PostgreSQLParser.RULE_reindexstmt);
		try {
			this.state = 6760;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 635, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6744;
				this.match(PostgreSQLParser.KW_REINDEX);
				this.state = 6745;
				this.reindex_target_type();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6746;
				this.match(PostgreSQLParser.KW_REINDEX);
				this.state = 6747;
				this.reindex_target_multitable();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6748;
				this.match(PostgreSQLParser.KW_REINDEX);
				this.state = 6749;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6750;
				this.reindex_option_list();
				this.state = 6751;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6752;
				this.reindex_target_type();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6754;
				this.match(PostgreSQLParser.KW_REINDEX);
				this.state = 6755;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 6756;
				this.reindex_option_list();
				this.state = 6757;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 6758;
				this.reindex_target_multitable();
				}
				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 reindex_target_type(): Reindex_target_typeContext {
		let _localctx: Reindex_target_typeContext = new Reindex_target_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 756, PostgreSQLParser.RULE_reindex_target_type);
		let _la: number;
		try {
			this.state = 6772;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_INDEX:
				this.enterOuterAlt(_localctx, 1);
				{
				{
				this.state = 6762;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 6764;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
					{
					this.state = 6763;
					this.opt_concurrently();
					}
				}

				this.state = 6766;
				this.qualified_name();
				}
				}
				break;
			case PostgreSQLParser.KW_TABLE:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 6767;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 6769;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
					{
					this.state = 6768;
					this.opt_concurrently();
					}
				}

				this.state = 6771;
				this.table_name();
				}
				}
				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 reindex_target_multitable(): Reindex_target_multitableContext {
		let _localctx: Reindex_target_multitableContext = new Reindex_target_multitableContext(this._ctx, this.state);
		this.enterRule(_localctx, 758, PostgreSQLParser.RULE_reindex_target_multitable);
		let _la: number;
		try {
			this.state = 6789;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SCHEMA:
				this.enterOuterAlt(_localctx, 1);
				{
				{
				this.state = 6774;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 6776;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
					{
					this.state = 6775;
					this.opt_concurrently();
					}
				}

				this.state = 6778;
				this.schema_name();
				}
				}
				break;
			case PostgreSQLParser.KW_SYSTEM:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 6779;
				this.match(PostgreSQLParser.KW_SYSTEM);
				this.state = 6781;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
					{
					this.state = 6780;
					this.opt_concurrently();
					}
				}

				this.state = 6783;
				this.name();
				}
				}
				break;
			case PostgreSQLParser.KW_DATABASE:
				this.enterOuterAlt(_localctx, 3);
				{
				{
				this.state = 6784;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 6786;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_CONCURRENTLY) {
					{
					this.state = 6785;
					this.opt_concurrently();
					}
				}

				this.state = 6788;
				this.database_name();
				}
				}
				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 reindex_option_list(): Reindex_option_listContext {
		let _localctx: Reindex_option_listContext = new Reindex_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 760, PostgreSQLParser.RULE_reindex_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6791;
			this.reindex_option_elem();
			this.state = 6796;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 6792;
				this.match(PostgreSQLParser.COMMA);
				this.state = 6793;
				this.reindex_option_elem();
				}
				}
				this.state = 6798;
				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 reindex_option_elem(): Reindex_option_elemContext {
		let _localctx: Reindex_option_elemContext = new Reindex_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 762, PostgreSQLParser.RULE_reindex_option_elem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 6799;
			this.match(PostgreSQLParser.KW_VERBOSE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altertblspcstmt(): AltertblspcstmtContext {
		let _localctx: AltertblspcstmtContext = new AltertblspcstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 764, PostgreSQLParser.RULE_altertblspcstmt);
		try {
			this.state = 6813;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 644, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6801;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6802;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 6803;
				this.tablespace_name();
				this.state = 6804;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 6805;
				this.reloptions();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6807;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6808;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 6809;
				this.tablespace_name();
				this.state = 6810;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 6811;
				this.reloptions();
				}
				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 renamestmt(): RenamestmtContext {
		let _localctx: RenamestmtContext = new RenamestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 766, PostgreSQLParser.RULE_renamestmt);
		let _la: number;
		try {
			this.state = 7206;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 663, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 6815;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6816;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 6817;
				this.aggregate_with_argtypes();
				this.state = 6818;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6819;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6820;
				this.name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 6822;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6823;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 6824;
				this.any_name();
				this.state = 6825;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6826;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6827;
				this.name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 6829;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6830;
				this.match(PostgreSQLParser.KW_CONVERSION);
				this.state = 6831;
				this.any_name();
				this.state = 6832;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6833;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6834;
				this.name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 6836;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6837;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 6838;
				this.database_name();
				this.state = 6839;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6840;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6841;
				this.database_name_create();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 6843;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6844;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 6845;
				this.any_name();
				this.state = 6846;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6847;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6848;
				this.name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 6850;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6851;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 6852;
				this.any_name();
				this.state = 6853;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6854;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 6855;
				this.name();
				this.state = 6856;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6857;
				this.name();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 6859;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6860;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 6861;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 6862;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 6863;
				this.name();
				this.state = 6864;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6865;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6866;
				this.name();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 6868;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6869;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 6870;
				this.function_with_argtypes();
				this.state = 6871;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6872;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6873;
				this.function_name_create();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 6875;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6876;
				this.match(PostgreSQLParser.KW_GROUP);
				this.state = 6877;
				this.roleid();
				this.state = 6878;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6879;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6880;
				this.roleid();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 6882;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6884;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROCEDURAL) {
					{
					this.state = 6883;
					this.opt_procedural();
					}
				}

				this.state = 6886;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 6887;
				this.name();
				this.state = 6888;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6889;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6890;
				this.name();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 6892;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6893;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 6894;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 6895;
				this.any_name();
				this.state = 6896;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 6897;
				this.name();
				this.state = 6898;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6899;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6900;
				this.name();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 6902;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6903;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 6904;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 6905;
				this.any_name();
				this.state = 6906;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 6907;
				this.name();
				this.state = 6908;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6909;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6910;
				this.name();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 6912;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6913;
				this.match(PostgreSQLParser.KW_POLICY);
				this.state = 6915;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 646, this._ctx) ) {
				case 1:
					{
					this.state = 6914;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6917;
				this.name();
				this.state = 6918;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 6919;
				this.qualified_name();
				this.state = 6920;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6921;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6922;
				this.name();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 6924;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6925;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 6926;
				this.procedure_with_argtypes();
				this.state = 6927;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6928;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6929;
				this.procedure_name_create();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 6931;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6932;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 6933;
				this.name();
				this.state = 6934;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6935;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6936;
				this.name();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 6938;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6939;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 6940;
				this.routine_with_argtypes();
				this.state = 6941;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6942;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6943;
				this.name();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 6945;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6946;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 6947;
				this.schema_name();
				this.state = 6948;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6949;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6950;
				this.schema_name_create();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 6952;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6953;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 6954;
				this.name();
				this.state = 6955;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6956;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6957;
				this.name();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 6959;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6960;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 6961;
				this.name();
				this.state = 6962;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6963;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6964;
				this.name();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 6966;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6967;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 6969;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 647, this._ctx) ) {
				case 1:
					{
					this.state = 6968;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6971;
				this.relation_expr();
				this.state = 6972;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6973;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6974;
				this.table_name_create();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 6976;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6977;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 6979;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 648, this._ctx) ) {
				case 1:
					{
					this.state = 6978;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6981;
				this.qualified_name();
				this.state = 6982;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6983;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6984;
				this.name();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 6986;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6987;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 6989;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 649, this._ctx) ) {
				case 1:
					{
					this.state = 6988;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 6991;
				this.view_name();
				this.state = 6992;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 6993;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 6994;
				this.view_name_create();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 6996;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 6997;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 6998;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7000;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 650, this._ctx) ) {
				case 1:
					{
					this.state = 6999;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7002;
				this.view_name();
				this.state = 7003;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7004;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7005;
				this.view_name_create();
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 7007;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7008;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 7010;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 651, this._ctx) ) {
				case 1:
					{
					this.state = 7009;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7012;
				this.qualified_name();
				this.state = 7013;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7014;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7015;
				this.name();
				}
				break;

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 7017;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7018;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 7019;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7021;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 652, this._ctx) ) {
				case 1:
					{
					this.state = 7020;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7023;
				this.relation_expr();
				this.state = 7024;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7025;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7026;
				this.table_name_create();
				}
				break;

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 7028;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7029;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7031;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 653, this._ctx) ) {
				case 1:
					{
					this.state = 7030;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7033;
				this.relation_expr();
				this.state = 7034;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7036;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 654, this._ctx) ) {
				case 1:
					{
					this.state = 7035;
					this.opt_column();
					}
					break;
				}
				this.state = 7038;
				this.column_name();
				this.state = 7039;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7040;
				this.column_name_create();
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 7042;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7043;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7045;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 655, this._ctx) ) {
				case 1:
					{
					this.state = 7044;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7047;
				this.view_name();
				this.state = 7048;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7050;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 656, this._ctx) ) {
				case 1:
					{
					this.state = 7049;
					this.opt_column();
					}
					break;
				}
				this.state = 7052;
				this.column_name();
				this.state = 7053;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7054;
				this.column_name_create();
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 7056;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7057;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 7058;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7060;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 657, this._ctx) ) {
				case 1:
					{
					this.state = 7059;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7062;
				this.view_name();
				this.state = 7063;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7065;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 658, this._ctx) ) {
				case 1:
					{
					this.state = 7064;
					this.opt_column();
					}
					break;
				}
				this.state = 7067;
				this.column_name();
				this.state = 7068;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7069;
				this.column_name_create();
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 7071;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7072;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7074;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 659, this._ctx) ) {
				case 1:
					{
					this.state = 7073;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7076;
				this.relation_expr();
				this.state = 7077;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7078;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 7079;
				this.name();
				this.state = 7080;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7081;
				this.name();
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 7083;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7084;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 7085;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7087;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 660, this._ctx) ) {
				case 1:
					{
					this.state = 7086;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7089;
				this.relation_expr();
				this.state = 7090;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7092;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 661, this._ctx) ) {
				case 1:
					{
					this.state = 7091;
					this.opt_column();
					}
					break;
				}
				this.state = 7094;
				this.column_name();
				this.state = 7095;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7096;
				this.column_name_create();
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 7098;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7099;
				this.match(PostgreSQLParser.KW_RULE);
				this.state = 7100;
				this.name();
				this.state = 7101;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7102;
				this.qualified_name();
				this.state = 7103;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7104;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7105;
				this.name();
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 7107;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7108;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 7109;
				this.name();
				this.state = 7110;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7111;
				this.qualified_name();
				this.state = 7112;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7113;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7114;
				this.name();
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 7116;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7117;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 7118;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 7119;
				this.name();
				this.state = 7120;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7121;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7122;
				this.name();
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 7124;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7125;
				this.match(PostgreSQLParser.KW_ROLE);
				this.state = 7126;
				this.roleid();
				this.state = 7127;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7128;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7129;
				this.roleid();
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 7131;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7132;
				this.match(PostgreSQLParser.KW_USER);
				this.state = 7133;
				this.roleid();
				this.state = 7134;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7135;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7136;
				this.roleid();
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 7138;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7139;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 7140;
				this.tablespace_name();
				this.state = 7141;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7142;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7143;
				this.tablespace_name_create();
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 7145;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7146;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 7147;
				this.any_name();
				this.state = 7148;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7149;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7150;
				this.name();
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 7152;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7153;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7154;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7155;
				this.match(PostgreSQLParser.KW_PARSER);
				this.state = 7156;
				this.any_name();
				this.state = 7157;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7158;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7159;
				this.name();
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 7161;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7162;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7163;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7164;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 7165;
				this.any_name();
				this.state = 7166;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7167;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7168;
				this.name();
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 7170;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7171;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7172;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7173;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				this.state = 7174;
				this.any_name();
				this.state = 7175;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7176;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7177;
				this.name();
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 7179;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7180;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7181;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7182;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 7183;
				this.any_name();
				this.state = 7184;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7185;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7186;
				this.name();
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 7188;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7189;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 7190;
				this.any_name();
				this.state = 7191;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7192;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7193;
				this.name();
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 7195;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7196;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 7197;
				this.any_name();
				this.state = 7198;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7199;
				this.match(PostgreSQLParser.KW_ATTRIBUTE);
				this.state = 7200;
				this.name();
				this.state = 7201;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7202;
				this.name();
				this.state = 7204;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 662, this._ctx) ) {
				case 1:
					{
					this.state = 7203;
					this.opt_drop_behavior();
					}
					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 opt_column(): Opt_columnContext {
		let _localctx: Opt_columnContext = new Opt_columnContext(this._ctx, this.state);
		this.enterRule(_localctx, 768, PostgreSQLParser.RULE_opt_column);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7208;
			this.match(PostgreSQLParser.KW_COLUMN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_set_data(): Opt_set_dataContext {
		let _localctx: Opt_set_dataContext = new Opt_set_dataContext(this._ctx, this.state);
		this.enterRule(_localctx, 770, PostgreSQLParser.RULE_opt_set_data);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7210;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 7211;
			this.match(PostgreSQLParser.KW_DATA);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterobjectdependsstmt(): AlterobjectdependsstmtContext {
		let _localctx: AlterobjectdependsstmtContext = new AlterobjectdependsstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 772, PostgreSQLParser.RULE_alterobjectdependsstmt);
		let _la: number;
		try {
			this.state = 7282;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 670, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7213;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7214;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 7215;
				this.function_with_argtypes();
				this.state = 7217;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7216;
					this.opt_no();
					}
				}

				this.state = 7219;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7220;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7221;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7222;
				this.name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7224;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7225;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 7226;
				this.procedure_with_argtypes();
				this.state = 7228;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7227;
					this.opt_no();
					}
				}

				this.state = 7230;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7231;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7232;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7233;
				this.name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7235;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7236;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 7237;
				this.routine_with_argtypes();
				this.state = 7239;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7238;
					this.opt_no();
					}
				}

				this.state = 7241;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7242;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7243;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7244;
				this.name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7246;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7247;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 7248;
				this.name();
				this.state = 7249;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7250;
				this.qualified_name();
				this.state = 7252;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7251;
					this.opt_no();
					}
				}

				this.state = 7254;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7255;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7256;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7257;
				this.name();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7259;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7260;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 7261;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7262;
				this.view_name();
				this.state = 7264;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7263;
					this.opt_no();
					}
				}

				this.state = 7266;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7267;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7268;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7269;
				this.name();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7271;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7272;
				this.match(PostgreSQLParser.KW_INDEX);
				this.state = 7273;
				this.qualified_name();
				this.state = 7275;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 7274;
					this.opt_no();
					}
				}

				this.state = 7277;
				this.match(PostgreSQLParser.KW_DEPENDS);
				this.state = 7278;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 7279;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7280;
				this.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 opt_no(): Opt_noContext {
		let _localctx: Opt_noContext = new Opt_noContext(this._ctx, this.state);
		this.enterRule(_localctx, 774, PostgreSQLParser.RULE_opt_no);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7284;
			this.match(PostgreSQLParser.KW_NO);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterobjectschemastmt(): AlterobjectschemastmtContext {
		let _localctx: AlterobjectschemastmtContext = new AlterobjectschemastmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 776, PostgreSQLParser.RULE_alterobjectschemastmt);
		try {
			this.state = 7471;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 676, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7286;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7287;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 7288;
				this.aggregate_with_argtypes();
				this.state = 7289;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7290;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7291;
				this.schema_name_create();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7293;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7294;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 7295;
				this.any_name();
				this.state = 7296;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7297;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7298;
				this.schema_name_create();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7300;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7301;
				this.match(PostgreSQLParser.KW_CONVERSION);
				this.state = 7302;
				this.any_name();
				this.state = 7303;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7304;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7305;
				this.schema_name_create();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7307;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7308;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 7309;
				this.any_name();
				this.state = 7310;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7311;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7312;
				this.schema_name_create();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7314;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7315;
				this.match(PostgreSQLParser.KW_EXTENSION);
				this.state = 7316;
				this.name();
				this.state = 7317;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7318;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7319;
				this.schema_name_create();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7321;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7322;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 7323;
				this.function_with_argtypes();
				this.state = 7324;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7325;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7326;
				this.schema_name_create();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7328;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7329;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7330;
				this.operator_with_argtypes();
				this.state = 7331;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7332;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7333;
				this.schema_name_create();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7335;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7336;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7337;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 7338;
				this.any_name();
				this.state = 7339;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 7340;
				this.name();
				this.state = 7341;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7342;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7343;
				this.schema_name_create();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7345;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7346;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7347;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 7348;
				this.any_name();
				this.state = 7349;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 7350;
				this.name();
				this.state = 7351;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7352;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7353;
				this.schema_name_create();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7355;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7356;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 7357;
				this.procedure_with_argtypes();
				this.state = 7358;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7359;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7360;
				this.schema_name_create();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7362;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7363;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 7364;
				this.routine_with_argtypes();
				this.state = 7365;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7366;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7367;
				this.schema_name_create();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7369;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7370;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7372;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 671, this._ctx) ) {
				case 1:
					{
					this.state = 7371;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7374;
				this.relation_expr();
				this.state = 7375;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7376;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7377;
				this.schema_name_create();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7379;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7380;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 7381;
				this.any_name();
				this.state = 7382;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7383;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7384;
				this.schema_name_create();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7386;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7387;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7388;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7389;
				this.match(PostgreSQLParser.KW_PARSER);
				this.state = 7390;
				this.any_name();
				this.state = 7391;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7392;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7393;
				this.schema_name_create();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 7395;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7396;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7397;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7398;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 7399;
				this.any_name();
				this.state = 7400;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7401;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7402;
				this.schema_name_create();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 7404;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7405;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7406;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7407;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				this.state = 7408;
				this.any_name();
				this.state = 7409;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7410;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7411;
				this.schema_name_create();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 7413;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7414;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7415;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7416;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 7417;
				this.any_name();
				this.state = 7418;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7419;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7420;
				this.schema_name_create();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 7422;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7423;
				this.match(PostgreSQLParser.KW_SEQUENCE);
				this.state = 7425;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 672, this._ctx) ) {
				case 1:
					{
					this.state = 7424;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7427;
				this.qualified_name();
				this.state = 7428;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7429;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7430;
				this.schema_name_create();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 7432;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7433;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7435;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 673, this._ctx) ) {
				case 1:
					{
					this.state = 7434;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7437;
				this.view_name();
				this.state = 7438;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7439;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7440;
				this.schema_name_create();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 7442;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7443;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				this.state = 7444;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 7446;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 674, this._ctx) ) {
				case 1:
					{
					this.state = 7445;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7448;
				this.view_name();
				this.state = 7449;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7450;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7451;
				this.schema_name_create();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 7453;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7454;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 7455;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7457;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 675, this._ctx) ) {
				case 1:
					{
					this.state = 7456;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 7459;
				this.relation_expr();
				this.state = 7460;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7461;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7462;
				this.schema_name_create();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 7464;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7465;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 7466;
				this.any_name();
				this.state = 7467;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7468;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7469;
				this.schema_name_create();
				}
				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 alteroperatorstmt(): AlteroperatorstmtContext {
		let _localctx: AlteroperatorstmtContext = new AlteroperatorstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 778, PostgreSQLParser.RULE_alteroperatorstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7473;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 7474;
			this.match(PostgreSQLParser.KW_OPERATOR);
			this.state = 7475;
			this.operator_with_argtypes();
			this.state = 7476;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 7477;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 7478;
			this.operator_def_list();
			this.state = 7479;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public operator_def_list(): Operator_def_listContext {
		let _localctx: Operator_def_listContext = new Operator_def_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 780, PostgreSQLParser.RULE_operator_def_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7481;
			this.operator_def_elem();
			this.state = 7486;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 7482;
				this.match(PostgreSQLParser.COMMA);
				this.state = 7483;
				this.operator_def_elem();
				}
				}
				this.state = 7488;
				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 operator_def_elem(): Operator_def_elemContext {
		let _localctx: Operator_def_elemContext = new Operator_def_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 782, PostgreSQLParser.RULE_operator_def_elem);
		try {
			this.state = 7497;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 678, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7489;
				this.collabel();
				this.state = 7490;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 7491;
				this.match(PostgreSQLParser.KW_NONE);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7493;
				this.collabel();
				this.state = 7494;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 7495;
				this.operator_def_arg();
				}
				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 operator_def_arg(): Operator_def_argContext {
		let _localctx: Operator_def_argContext = new Operator_def_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 784, PostgreSQLParser.RULE_operator_def_arg);
		try {
			this.state = 7504;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 679, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7499;
				this.func_type();
				}
				break;

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

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

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

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7503;
				this.sconst();
				}
				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 altertypestmt(): AltertypestmtContext {
		let _localctx: AltertypestmtContext = new AltertypestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 786, PostgreSQLParser.RULE_altertypestmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7506;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 7507;
			this.match(PostgreSQLParser.KW_TYPE);
			this.state = 7508;
			this.any_name();
			this.state = 7509;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 7510;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 7511;
			this.operator_def_list();
			this.state = 7512;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterownerstmt(): AlterownerstmtContext {
		let _localctx: AlterownerstmtContext = new AlterownerstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 788, PostgreSQLParser.RULE_alterownerstmt);
		let _la: number;
		try {
			this.state = 7699;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 681, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7514;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7515;
				this.match(PostgreSQLParser.KW_AGGREGATE);
				this.state = 7516;
				this.aggregate_with_argtypes();
				this.state = 7517;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7518;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7519;
				this.rolespec();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7521;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7522;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 7523;
				this.any_name();
				this.state = 7524;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7525;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7526;
				this.rolespec();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7528;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7529;
				this.match(PostgreSQLParser.KW_CONVERSION);
				this.state = 7530;
				this.any_name();
				this.state = 7531;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7532;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7533;
				this.rolespec();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7535;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7536;
				this.match(PostgreSQLParser.KW_DATABASE);
				this.state = 7537;
				this.database_name();
				this.state = 7538;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7539;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7540;
				this.rolespec();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7542;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7543;
				this.match(PostgreSQLParser.KW_DOMAIN);
				this.state = 7544;
				this.any_name();
				this.state = 7545;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7546;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7547;
				this.rolespec();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7549;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7550;
				this.match(PostgreSQLParser.KW_FUNCTION);
				this.state = 7551;
				this.function_with_argtypes();
				this.state = 7552;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7553;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7554;
				this.rolespec();
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7556;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7558;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PROCEDURAL) {
					{
					this.state = 7557;
					this.opt_procedural();
					}
				}

				this.state = 7560;
				this.match(PostgreSQLParser.KW_LANGUAGE);
				this.state = 7561;
				this.name();
				this.state = 7562;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7563;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7564;
				this.rolespec();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7566;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7567;
				this.match(PostgreSQLParser.KW_LARGE);
				this.state = 7568;
				this.match(PostgreSQLParser.KW_OBJECT);
				this.state = 7569;
				this.numericonly();
				this.state = 7570;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7571;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7572;
				this.rolespec();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7574;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7575;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7576;
				this.operator_with_argtypes();
				this.state = 7577;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7578;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7579;
				this.rolespec();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7581;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7582;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7583;
				this.match(PostgreSQLParser.KW_CLASS);
				this.state = 7584;
				this.any_name();
				this.state = 7585;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 7586;
				this.name();
				this.state = 7587;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7588;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7589;
				this.rolespec();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7591;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7592;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 7593;
				this.match(PostgreSQLParser.KW_FAMILY);
				this.state = 7594;
				this.any_name();
				this.state = 7595;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 7596;
				this.name();
				this.state = 7597;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7598;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7599;
				this.rolespec();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7601;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7602;
				this.match(PostgreSQLParser.KW_PROCEDURE);
				this.state = 7603;
				this.procedure_with_argtypes();
				this.state = 7604;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7605;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7606;
				this.rolespec();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7608;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7609;
				this.match(PostgreSQLParser.KW_ROUTINE);
				this.state = 7610;
				this.routine_with_argtypes();
				this.state = 7611;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7612;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7613;
				this.rolespec();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7615;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7616;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 7617;
				this.schema_name();
				this.state = 7618;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7619;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7620;
				this.rolespec();
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 7622;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7623;
				this.match(PostgreSQLParser.KW_TYPE);
				this.state = 7624;
				this.any_name();
				this.state = 7625;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7626;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7627;
				this.rolespec();
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 7629;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7630;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				this.state = 7631;
				this.tablespace_name();
				this.state = 7632;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7633;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7634;
				this.rolespec();
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 7636;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7637;
				this.match(PostgreSQLParser.KW_STATISTICS);
				this.state = 7638;
				this.any_name();
				this.state = 7639;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7640;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7641;
				this.rolespec();
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 7643;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7644;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7645;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7646;
				this.match(PostgreSQLParser.KW_DICTIONARY);
				this.state = 7647;
				this.any_name();
				this.state = 7648;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7649;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7650;
				this.rolespec();
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 7652;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7653;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 7654;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 7655;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 7656;
				this.any_name();
				this.state = 7657;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7658;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7659;
				this.rolespec();
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 7661;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7662;
				this.match(PostgreSQLParser.KW_FOREIGN);
				this.state = 7663;
				this.match(PostgreSQLParser.KW_DATA);
				this.state = 7664;
				this.match(PostgreSQLParser.KW_WRAPPER);
				this.state = 7665;
				this.name();
				this.state = 7666;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7667;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7668;
				this.rolespec();
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 7670;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7671;
				this.match(PostgreSQLParser.KW_SERVER);
				this.state = 7672;
				this.name();
				this.state = 7673;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7674;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7675;
				this.rolespec();
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 7677;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7678;
				this.match(PostgreSQLParser.KW_EVENT);
				this.state = 7679;
				this.match(PostgreSQLParser.KW_TRIGGER);
				this.state = 7680;
				this.name();
				this.state = 7681;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7682;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7683;
				this.rolespec();
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 7685;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7686;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7687;
				this.name();
				this.state = 7688;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7689;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7690;
				this.rolespec();
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 7692;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7693;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7694;
				this.name();
				this.state = 7695;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7696;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7697;
				this.rolespec();
				}
				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 createpublicationstmt(): CreatepublicationstmtContext {
		let _localctx: CreatepublicationstmtContext = new CreatepublicationstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 790, PostgreSQLParser.RULE_createpublicationstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7701;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 7702;
			this.match(PostgreSQLParser.KW_PUBLICATION);
			this.state = 7703;
			this.name();
			this.state = 7705;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FOR) {
				{
				this.state = 7704;
				this.opt_publication_for_tables();
				}
			}

			this.state = 7708;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 683, this._ctx) ) {
			case 1:
				{
				this.state = 7707;
				this.opt_definition();
				}
				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 opt_publication_for_tables(): Opt_publication_for_tablesContext {
		let _localctx: Opt_publication_for_tablesContext = new Opt_publication_for_tablesContext(this._ctx, this.state);
		this.enterRule(_localctx, 792, PostgreSQLParser.RULE_opt_publication_for_tables);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7710;
			this.publication_for_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 publication_for_tables(): Publication_for_tablesContext {
		let _localctx: Publication_for_tablesContext = new Publication_for_tablesContext(this._ctx, this.state);
		this.enterRule(_localctx, 794, PostgreSQLParser.RULE_publication_for_tables);
		try {
			this.state = 7718;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 684, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7712;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 7713;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 7714;
				this.relation_expr_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7715;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 7716;
				this.match(PostgreSQLParser.KW_ALL);
				this.state = 7717;
				this.match(PostgreSQLParser.KW_TABLES);
				}
				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 alterpublicationstmt(): AlterpublicationstmtContext {
		let _localctx: AlterpublicationstmtContext = new AlterpublicationstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 796, PostgreSQLParser.RULE_alterpublicationstmt);
		try {
			this.state = 7758;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 685, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7720;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7721;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7722;
				this.name();
				this.state = 7723;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7724;
				this.definition();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7726;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7727;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7728;
				this.name();
				this.state = 7729;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 7730;
				this.publication_relation_expr_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7732;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7733;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7734;
				this.name();
				this.state = 7735;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7736;
				this.publication_relation_expr_list();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7738;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7739;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7740;
				this.name();
				this.state = 7741;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 7742;
				this.publication_relation_expr_list();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7744;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7745;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7746;
				this.name();
				this.state = 7747;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7748;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7749;
				this.rolespec();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7751;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7752;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7753;
				this.name();
				this.state = 7754;
				this.match(PostgreSQLParser.KW_RENAME);
				this.state = 7755;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7756;
				this.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 createsubscriptionstmt(): CreatesubscriptionstmtContext {
		let _localctx: CreatesubscriptionstmtContext = new CreatesubscriptionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 798, PostgreSQLParser.RULE_createsubscriptionstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7760;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 7761;
			this.match(PostgreSQLParser.KW_SUBSCRIPTION);
			this.state = 7762;
			this.name();
			this.state = 7763;
			this.match(PostgreSQLParser.KW_CONNECTION);
			this.state = 7764;
			this.sconst();
			this.state = 7765;
			this.match(PostgreSQLParser.KW_PUBLICATION);
			this.state = 7766;
			this.publication_name_list();
			this.state = 7768;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 686, this._ctx) ) {
			case 1:
				{
				this.state = 7767;
				this.opt_definition();
				}
				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 publication_name_list(): Publication_name_listContext {
		let _localctx: Publication_name_listContext = new Publication_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 800, PostgreSQLParser.RULE_publication_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7770;
			this.publication_name_item();
			this.state = 7775;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 7771;
				this.match(PostgreSQLParser.COMMA);
				this.state = 7772;
				this.publication_name_item();
				}
				}
				this.state = 7777;
				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 publication_name_item(): Publication_name_itemContext {
		let _localctx: Publication_name_itemContext = new Publication_name_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 802, PostgreSQLParser.RULE_publication_name_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7778;
			this.collabel();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altersubscriptionstmt(): AltersubscriptionstmtContext {
		let _localctx: AltersubscriptionstmtContext = new AltersubscriptionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 804, PostgreSQLParser.RULE_altersubscriptionstmt);
		try {
			this.state = 7858;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 692, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7780;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7781;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7782;
				this.name();
				this.state = 7783;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7784;
				this.definition();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7786;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7787;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7788;
				this.name();
				this.state = 7789;
				this.match(PostgreSQLParser.KW_CONNECTION);
				this.state = 7790;
				this.sconst();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7792;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7793;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7794;
				this.name();
				this.state = 7795;
				this.match(PostgreSQLParser.KW_REFRESH);
				this.state = 7796;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7798;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 688, this._ctx) ) {
				case 1:
					{
					this.state = 7797;
					this.opt_definition();
					}
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7800;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7801;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7802;
				this.name();
				this.state = 7803;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7804;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7805;
				this.publication_name_list();
				this.state = 7807;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 689, this._ctx) ) {
				case 1:
					{
					this.state = 7806;
					this.opt_definition();
					}
					break;
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7809;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7810;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7811;
				this.name();
				this.state = 7812;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 7813;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7814;
				this.publication_name_list();
				this.state = 7816;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 690, this._ctx) ) {
				case 1:
					{
					this.state = 7815;
					this.opt_definition();
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7818;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7819;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7820;
				this.name();
				this.state = 7821;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 7822;
				this.match(PostgreSQLParser.KW_PUBLICATION);
				this.state = 7823;
				this.publication_name_list();
				this.state = 7825;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 691, this._ctx) ) {
				case 1:
					{
					this.state = 7824;
					this.opt_definition();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7827;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7828;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7829;
				this.name();
				this.state = 7830;
				this.match(PostgreSQLParser.KW_ENABLE);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7832;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7833;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7834;
				this.name();
				this.state = 7835;
				this.match(PostgreSQLParser.KW_DISABLE);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7837;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7838;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7839;
				this.name();
				this.state = 7840;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 7841;
				this.definition();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7843;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7844;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7845;
				this.name();
				this.state = 7846;
				this.match(PostgreSQLParser.KW_SKIP);
				this.state = 7847;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 7848;
				this.old_aggr_elem();
				this.state = 7849;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7851;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 7852;
				this.match(PostgreSQLParser.KW_SUBSCRIPTION);
				this.state = 7853;
				this.name();
				this.state = 7854;
				this.match(PostgreSQLParser.KW_OWNER);
				this.state = 7855;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7856;
				this.rolespec();
				}
				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 rulestmt(): RulestmtContext {
		let _localctx: RulestmtContext = new RulestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 806, PostgreSQLParser.RULE_rulestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7860;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 7862;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OR) {
				{
				this.state = 7861;
				this.opt_or_replace();
				}
			}

			this.state = 7864;
			this.match(PostgreSQLParser.KW_RULE);
			this.state = 7865;
			this.name();
			this.state = 7866;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 7867;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 7868;
			this.event();
			this.state = 7869;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 7870;
			this.qualified_name();
			this.state = 7872;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHERE) {
				{
				this.state = 7871;
				this.where_clause();
				}
			}

			this.state = 7874;
			this.match(PostgreSQLParser.KW_DO);
			this.state = 7876;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ALSO || _la === PostgreSQLParser.KW_INSTEAD) {
				{
				this.state = 7875;
				this.opt_instead();
				}
			}

			this.state = 7878;
			this.ruleactionlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public ruleactionlist(): RuleactionlistContext {
		let _localctx: RuleactionlistContext = new RuleactionlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 808, PostgreSQLParser.RULE_ruleactionlist);
		try {
			this.state = 7886;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 696, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7880;
				this.match(PostgreSQLParser.KW_NOTHING);
				}
				break;

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

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7882;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 7883;
				this.ruleactionmulti();
				this.state = 7884;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 ruleactionmulti(): RuleactionmultiContext {
		let _localctx: RuleactionmultiContext = new RuleactionmultiContext(this._ctx, this.state);
		this.enterRule(_localctx, 810, PostgreSQLParser.RULE_ruleactionmulti);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7889;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & ((1 << (PostgreSQLParser.KW_SELECT - 88)) | (1 << (PostgreSQLParser.KW_TABLE - 88)) | (1 << (PostgreSQLParser.KW_WITH - 88)))) !== 0) || _la === PostgreSQLParser.KW_DELETE || _la === PostgreSQLParser.KW_INSERT || _la === PostgreSQLParser.KW_NOTIFY || _la === PostgreSQLParser.KW_UPDATE || _la === PostgreSQLParser.KW_VALUES) {
				{
				this.state = 7888;
				this.ruleactionstmtOrEmpty();
				}
			}

			this.state = 7897;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.SEMI) {
				{
				{
				this.state = 7891;
				this.match(PostgreSQLParser.SEMI);
				this.state = 7893;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & ((1 << (PostgreSQLParser.KW_SELECT - 88)) | (1 << (PostgreSQLParser.KW_TABLE - 88)) | (1 << (PostgreSQLParser.KW_WITH - 88)))) !== 0) || _la === PostgreSQLParser.KW_DELETE || _la === PostgreSQLParser.KW_INSERT || _la === PostgreSQLParser.KW_NOTIFY || _la === PostgreSQLParser.KW_UPDATE || _la === PostgreSQLParser.KW_VALUES) {
					{
					this.state = 7892;
					this.ruleactionstmtOrEmpty();
					}
				}

				}
				}
				this.state = 7899;
				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 ruleactionstmt(): RuleactionstmtContext {
		let _localctx: RuleactionstmtContext = new RuleactionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 812, PostgreSQLParser.RULE_ruleactionstmt);
		try {
			this.state = 7905;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 700, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7900;
				this.selectstmt();
				}
				break;

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

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

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

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7904;
				this.notifystmt();
				}
				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 ruleactionstmtOrEmpty(): RuleactionstmtOrEmptyContext {
		let _localctx: RuleactionstmtOrEmptyContext = new RuleactionstmtOrEmptyContext(this._ctx, this.state);
		this.enterRule(_localctx, 814, PostgreSQLParser.RULE_ruleactionstmtOrEmpty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7907;
			this.ruleactionstmt();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public event(): EventContext {
		let _localctx: EventContext = new EventContext(this._ctx, this.state);
		this.enterRule(_localctx, 816, PostgreSQLParser.RULE_event);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7909;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_SELECT || _la === PostgreSQLParser.KW_DELETE || _la === PostgreSQLParser.KW_INSERT || _la === PostgreSQLParser.KW_UPDATE)) {
			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 opt_instead(): Opt_insteadContext {
		let _localctx: Opt_insteadContext = new Opt_insteadContext(this._ctx, this.state);
		this.enterRule(_localctx, 818, PostgreSQLParser.RULE_opt_instead);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7911;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALSO || _la === PostgreSQLParser.KW_INSTEAD)) {
			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 notifystmt(): NotifystmtContext {
		let _localctx: NotifystmtContext = new NotifystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 820, PostgreSQLParser.RULE_notifystmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7913;
			this.match(PostgreSQLParser.KW_NOTIFY);
			this.state = 7914;
			this.colid();
			this.state = 7916;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.COMMA) {
				{
				this.state = 7915;
				this.notify_payload();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public notify_payload(): Notify_payloadContext {
		let _localctx: Notify_payloadContext = new Notify_payloadContext(this._ctx, this.state);
		this.enterRule(_localctx, 822, PostgreSQLParser.RULE_notify_payload);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7918;
			this.match(PostgreSQLParser.COMMA);
			this.state = 7919;
			this.sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public listenstmt(): ListenstmtContext {
		let _localctx: ListenstmtContext = new ListenstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 824, PostgreSQLParser.RULE_listenstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 7921;
			this.match(PostgreSQLParser.KW_LISTEN);
			this.state = 7922;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unlistenstmt(): UnlistenstmtContext {
		let _localctx: UnlistenstmtContext = new UnlistenstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 826, PostgreSQLParser.RULE_unlistenstmt);
		try {
			this.state = 7928;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 702, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7924;
				this.match(PostgreSQLParser.KW_UNLISTEN);
				this.state = 7925;
				this.colid();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7926;
				this.match(PostgreSQLParser.KW_UNLISTEN);
				this.state = 7927;
				this.match(PostgreSQLParser.STAR);
				}
				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 transactionstmt(): TransactionstmtContext {
		let _localctx: TransactionstmtContext = new TransactionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 828, PostgreSQLParser.RULE_transactionstmt);
		let _la: number;
		try {
			this.state = 7999;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 716, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 7930;
				this.match(PostgreSQLParser.KW_ABORT);
				this.state = 7932;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 703, this._ctx) ) {
				case 1:
					{
					this.state = 7931;
					this.opt_transaction();
					}
					break;
				}
				this.state = 7935;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 704, this._ctx) ) {
				case 1:
					{
					this.state = 7934;
					this.opt_transaction_chain();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 7937;
				this.match(PostgreSQLParser.KW_BEGIN);
				this.state = 7939;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 705, this._ctx) ) {
				case 1:
					{
					this.state = 7938;
					this.opt_transaction();
					}
					break;
				}
				this.state = 7942;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 706, this._ctx) ) {
				case 1:
					{
					this.state = 7941;
					this.transaction_mode_list_or_empty();
					}
					break;
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 7944;
				this.match(PostgreSQLParser.KW_START);
				this.state = 7945;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 7947;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 707, this._ctx) ) {
				case 1:
					{
					this.state = 7946;
					this.transaction_mode_list_or_empty();
					}
					break;
				}
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 7949;
				this.match(PostgreSQLParser.KW_COMMIT);
				this.state = 7951;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 708, this._ctx) ) {
				case 1:
					{
					this.state = 7950;
					this.opt_transaction();
					}
					break;
				}
				this.state = 7954;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 709, this._ctx) ) {
				case 1:
					{
					this.state = 7953;
					this.opt_transaction_chain();
					}
					break;
				}
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 7956;
				this.match(PostgreSQLParser.KW_END);
				this.state = 7958;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 710, this._ctx) ) {
				case 1:
					{
					this.state = 7957;
					this.opt_transaction();
					}
					break;
				}
				this.state = 7961;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 711, this._ctx) ) {
				case 1:
					{
					this.state = 7960;
					this.opt_transaction_chain();
					}
					break;
				}
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 7963;
				this.match(PostgreSQLParser.KW_ROLLBACK);
				this.state = 7965;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 712, this._ctx) ) {
				case 1:
					{
					this.state = 7964;
					this.opt_transaction();
					}
					break;
				}
				this.state = 7968;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 713, this._ctx) ) {
				case 1:
					{
					this.state = 7967;
					this.opt_transaction_chain();
					}
					break;
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 7970;
				this.match(PostgreSQLParser.KW_SAVEPOINT);
				this.state = 7971;
				this.colid();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 7972;
				this.match(PostgreSQLParser.KW_RELEASE);
				this.state = 7973;
				this.match(PostgreSQLParser.KW_SAVEPOINT);
				this.state = 7974;
				this.colid();
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 7975;
				this.match(PostgreSQLParser.KW_RELEASE);
				this.state = 7976;
				this.colid();
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 7977;
				this.match(PostgreSQLParser.KW_ROLLBACK);
				this.state = 7979;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_TRANSACTION || _la === PostgreSQLParser.KW_WORK) {
					{
					this.state = 7978;
					this.opt_transaction();
					}
				}

				this.state = 7981;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7982;
				this.match(PostgreSQLParser.KW_SAVEPOINT);
				this.state = 7983;
				this.colid();
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 7984;
				this.match(PostgreSQLParser.KW_ROLLBACK);
				this.state = 7986;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_TRANSACTION || _la === PostgreSQLParser.KW_WORK) {
					{
					this.state = 7985;
					this.opt_transaction();
					}
				}

				this.state = 7988;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 7989;
				this.colid();
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 7990;
				this.match(PostgreSQLParser.KW_PREPARE);
				this.state = 7991;
				this.match(PostgreSQLParser.KW_TRANSACTION);
				this.state = 7992;
				this.sconst();
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 7993;
				this.match(PostgreSQLParser.KW_COMMIT);
				this.state = 7994;
				this.match(PostgreSQLParser.KW_PREPARED);
				this.state = 7995;
				this.sconst();
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 7996;
				this.match(PostgreSQLParser.KW_ROLLBACK);
				this.state = 7997;
				this.match(PostgreSQLParser.KW_PREPARED);
				this.state = 7998;
				this.sconst();
				}
				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 opt_transaction(): Opt_transactionContext {
		let _localctx: Opt_transactionContext = new Opt_transactionContext(this._ctx, this.state);
		this.enterRule(_localctx, 830, PostgreSQLParser.RULE_opt_transaction);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8001;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_TRANSACTION || _la === PostgreSQLParser.KW_WORK)) {
			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 transaction_mode_item(): Transaction_mode_itemContext {
		let _localctx: Transaction_mode_itemContext = new Transaction_mode_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 832, PostgreSQLParser.RULE_transaction_mode_item);
		try {
			this.state = 8013;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 717, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8003;
				this.match(PostgreSQLParser.KW_ISOLATION);
				this.state = 8004;
				this.match(PostgreSQLParser.KW_LEVEL);
				this.state = 8005;
				this.iso_level();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8006;
				this.match(PostgreSQLParser.KW_READ);
				this.state = 8007;
				this.match(PostgreSQLParser.KW_ONLY);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8008;
				this.match(PostgreSQLParser.KW_READ);
				this.state = 8009;
				this.match(PostgreSQLParser.KW_WRITE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8010;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8011;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 8012;
				this.match(PostgreSQLParser.KW_DEFERRABLE);
				}
				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 transaction_mode_list(): Transaction_mode_listContext {
		let _localctx: Transaction_mode_listContext = new Transaction_mode_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 834, PostgreSQLParser.RULE_transaction_mode_list);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8015;
			this.transaction_mode_item();
			this.state = 8022;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 719, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 8017;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.COMMA) {
						{
						this.state = 8016;
						this.match(PostgreSQLParser.COMMA);
						}
					}

					this.state = 8019;
					this.transaction_mode_item();
					}
					}
				}
				this.state = 8024;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 719, 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 transaction_mode_list_or_empty(): Transaction_mode_list_or_emptyContext {
		let _localctx: Transaction_mode_list_or_emptyContext = new Transaction_mode_list_or_emptyContext(this._ctx, this.state);
		this.enterRule(_localctx, 836, PostgreSQLParser.RULE_transaction_mode_list_or_empty);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8025;
			this.transaction_mode_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_transaction_chain(): Opt_transaction_chainContext {
		let _localctx: Opt_transaction_chainContext = new Opt_transaction_chainContext(this._ctx, this.state);
		this.enterRule(_localctx, 838, PostgreSQLParser.RULE_opt_transaction_chain);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8027;
			this.match(PostgreSQLParser.KW_AND);
			this.state = 8029;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_NO) {
				{
				this.state = 8028;
				this.match(PostgreSQLParser.KW_NO);
				}
			}

			this.state = 8031;
			this.match(PostgreSQLParser.KW_CHAIN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public viewstmt(): ViewstmtContext {
		let _localctx: ViewstmtContext = new ViewstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 840, PostgreSQLParser.RULE_viewstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8033;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 8036;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OR) {
				{
				this.state = 8034;
				this.match(PostgreSQLParser.KW_OR);
				this.state = 8035;
				this.match(PostgreSQLParser.KW_REPLACE);
				}
			}

			this.state = 8039;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 352)))) !== 0)) {
				{
				this.state = 8038;
				this.opttemp();
				}
			}

			this.state = 8058;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_VIEW:
				{
				this.state = 8041;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 8042;
				this.view_name_create();
				this.state = 8044;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 8043;
					this.opt_column_list();
					}
				}

				this.state = 8047;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WITH) {
					{
					this.state = 8046;
					this.opt_reloptions();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_RECURSIVE:
				{
				this.state = 8049;
				this.match(PostgreSQLParser.KW_RECURSIVE);
				this.state = 8050;
				this.match(PostgreSQLParser.KW_VIEW);
				this.state = 8051;
				this.view_name_create();
				this.state = 8052;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8053;
				this.columnlist();
				this.state = 8054;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 8056;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WITH) {
					{
					this.state = 8055;
					this.opt_reloptions();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 8060;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 8061;
			this.selectstmt();
			this.state = 8063;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 727, this._ctx) ) {
			case 1:
				{
				this.state = 8062;
				this.opt_check_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 opt_check_option(): Opt_check_optionContext {
		let _localctx: Opt_check_optionContext = new Opt_check_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 842, PostgreSQLParser.RULE_opt_check_option);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8065;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 8067;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_CASCADED || _la === PostgreSQLParser.KW_LOCAL) {
				{
				this.state = 8066;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CASCADED || _la === PostgreSQLParser.KW_LOCAL)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			this.state = 8069;
			this.match(PostgreSQLParser.KW_CHECK);
			this.state = 8070;
			this.match(PostgreSQLParser.KW_OPTION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loadstmt(): LoadstmtContext {
		let _localctx: LoadstmtContext = new LoadstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 844, PostgreSQLParser.RULE_loadstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8072;
			this.match(PostgreSQLParser.KW_LOAD);
			this.state = 8073;
			this.file_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createdbstmt(): CreatedbstmtContext {
		let _localctx: CreatedbstmtContext = new CreatedbstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 846, PostgreSQLParser.RULE_createdbstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8075;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 8076;
			this.match(PostgreSQLParser.KW_DATABASE);
			this.state = 8077;
			this.database_name_create();
			this.state = 8079;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 729, this._ctx) ) {
			case 1:
				{
				this.state = 8078;
				this.opt_with();
				}
				break;
			}
			this.state = 8082;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 730, this._ctx) ) {
			case 1:
				{
				this.state = 8081;
				this.createdb_opt_list();
				}
				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 createdb_opt_list(): Createdb_opt_listContext {
		let _localctx: Createdb_opt_listContext = new Createdb_opt_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 848, PostgreSQLParser.RULE_createdb_opt_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8084;
			this.createdb_opt_items();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createdb_opt_items(): Createdb_opt_itemsContext {
		let _localctx: Createdb_opt_itemsContext = new Createdb_opt_itemsContext(this._ctx, this.state);
		this.enterRule(_localctx, 850, PostgreSQLParser.RULE_createdb_opt_items);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8087;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 8086;
					this.createdb_opt_item();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 8089;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 731, 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 createdb_opt_item(): Createdb_opt_itemContext {
		let _localctx: Createdb_opt_itemContext = new Createdb_opt_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 852, PostgreSQLParser.RULE_createdb_opt_item);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8091;
			this.createdb_opt_name();
			this.state = 8093;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.EQUAL) {
				{
				this.state = 8092;
				this.opt_equal();
				}
			}

			this.state = 8098;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 733, this._ctx) ) {
			case 1:
				{
				this.state = 8095;
				this.signediconst();
				}
				break;

			case 2:
				{
				this.state = 8096;
				this.opt_boolean_or_string();
				}
				break;

			case 3:
				{
				this.state = 8097;
				this.match(PostgreSQLParser.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 createdb_opt_name(): Createdb_opt_nameContext {
		let _localctx: Createdb_opt_nameContext = new Createdb_opt_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 854, PostgreSQLParser.RULE_createdb_opt_name);
		try {
			this.state = 8108;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8100;
				this.identifier();
				}
				break;
			case PostgreSQLParser.KW_CONNECTION:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8101;
				this.match(PostgreSQLParser.KW_CONNECTION);
				this.state = 8102;
				this.match(PostgreSQLParser.KW_LIMIT);
				}
				break;
			case PostgreSQLParser.KW_ENCODING:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8103;
				this.match(PostgreSQLParser.KW_ENCODING);
				}
				break;
			case PostgreSQLParser.KW_LOCATION:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8104;
				this.match(PostgreSQLParser.KW_LOCATION);
				}
				break;
			case PostgreSQLParser.KW_OWNER:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8105;
				this.match(PostgreSQLParser.KW_OWNER);
				}
				break;
			case PostgreSQLParser.KW_TABLESPACE:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 8106;
				this.match(PostgreSQLParser.KW_TABLESPACE);
				}
				break;
			case PostgreSQLParser.KW_TEMPLATE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 8107;
				this.match(PostgreSQLParser.KW_TEMPLATE);
				}
				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 opt_equal(): Opt_equalContext {
		let _localctx: Opt_equalContext = new Opt_equalContext(this._ctx, this.state);
		this.enterRule(_localctx, 856, PostgreSQLParser.RULE_opt_equal);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8110;
			this.match(PostgreSQLParser.EQUAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterdatabasestmt(): AlterdatabasestmtContext {
		let _localctx: AlterdatabasestmtContext = new AlterdatabasestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 858, PostgreSQLParser.RULE_alterdatabasestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8112;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8113;
			this.match(PostgreSQLParser.KW_DATABASE);
			this.state = 8114;
			this.database_name();
			this.state = 8129;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 739, this._ctx) ) {
			case 1:
				{
				this.state = 8119;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 736, this._ctx) ) {
				case 1:
					{
					this.state = 8116;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_WITH) {
						{
						this.state = 8115;
						this.match(PostgreSQLParser.KW_WITH);
						}
					}

					this.state = 8118;
					this.createdb_opt_list();
					}
					break;
				}
				}
				break;

			case 2:
				{
				this.state = 8122;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 737, this._ctx) ) {
				case 1:
					{
					this.state = 8121;
					this.createdb_opt_list();
					}
					break;
				}
				}
				break;

			case 3:
				{
				this.state = 8127;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 738, this._ctx) ) {
				case 1:
					{
					this.state = 8124;
					this.match(PostgreSQLParser.KW_SET);
					this.state = 8125;
					this.match(PostgreSQLParser.KW_TABLESPACE);
					this.state = 8126;
					this.tablespace_name_create();
					}
					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 alterdatabasesetstmt(): AlterdatabasesetstmtContext {
		let _localctx: AlterdatabasesetstmtContext = new AlterdatabasesetstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 860, PostgreSQLParser.RULE_alterdatabasesetstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8131;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8132;
			this.match(PostgreSQLParser.KW_DATABASE);
			this.state = 8133;
			this.database_name();
			this.state = 8135;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 740, this._ctx) ) {
			case 1:
				{
				this.state = 8134;
				this.setresetclause();
				}
				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 drop_option_list(): Drop_option_listContext {
		let _localctx: Drop_option_listContext = new Drop_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 862, PostgreSQLParser.RULE_drop_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8137;
			this.drop_option();
			this.state = 8142;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8138;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8139;
				this.drop_option();
				}
				}
				this.state = 8144;
				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 drop_option(): Drop_optionContext {
		let _localctx: Drop_optionContext = new Drop_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 864, PostgreSQLParser.RULE_drop_option);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8145;
			this.match(PostgreSQLParser.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 altercollationstmt(): AltercollationstmtContext {
		let _localctx: AltercollationstmtContext = new AltercollationstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 866, PostgreSQLParser.RULE_altercollationstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8147;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8148;
			this.match(PostgreSQLParser.KW_COLLATION);
			this.state = 8149;
			this.any_name();
			this.state = 8150;
			this.match(PostgreSQLParser.KW_REFRESH);
			this.state = 8151;
			this.match(PostgreSQLParser.KW_VERSION);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altersystemstmt(): AltersystemstmtContext {
		let _localctx: AltersystemstmtContext = new AltersystemstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 868, PostgreSQLParser.RULE_altersystemstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8153;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8154;
			this.match(PostgreSQLParser.KW_SYSTEM);
			this.state = 8155;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_RESET || _la === PostgreSQLParser.KW_SET)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 8156;
			this.generic_set();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createdomainstmt(): CreatedomainstmtContext {
		let _localctx: CreatedomainstmtContext = new CreatedomainstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 870, PostgreSQLParser.RULE_createdomainstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8158;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 8159;
			this.match(PostgreSQLParser.KW_DOMAIN);
			this.state = 8160;
			this.any_name();
			this.state = 8162;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 8161;
				this.opt_as();
				}
			}

			this.state = 8164;
			this.typename();
			this.state = 8165;
			this.colquallist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public alterdomainstmt(): AlterdomainstmtContext {
		let _localctx: AlterdomainstmtContext = new AlterdomainstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 872, PostgreSQLParser.RULE_alterdomainstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8167;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8168;
			this.match(PostgreSQLParser.KW_DOMAIN);
			this.state = 8169;
			this.any_name();
			this.state = 8191;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 745, this._ctx) ) {
			case 1:
				{
				this.state = 8170;
				this.alter_column_default();
				}
				break;

			case 2:
				{
				this.state = 8171;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 8172;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 8173;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 3:
				{
				this.state = 8174;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 8175;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 8176;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 4:
				{
				this.state = 8177;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 8178;
				this.tableconstraint();
				}
				break;

			case 5:
				{
				this.state = 8179;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 8180;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 8182;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 743, this._ctx) ) {
				case 1:
					{
					this.state = 8181;
					this.opt_if_exists();
					}
					break;
				}
				this.state = 8184;
				this.name();
				this.state = 8186;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 744, this._ctx) ) {
				case 1:
					{
					this.state = 8185;
					this.opt_drop_behavior();
					}
					break;
				}
				}
				break;

			case 6:
				{
				this.state = 8188;
				this.match(PostgreSQLParser.KW_VALIDATE);
				this.state = 8189;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 8190;
				this.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 opt_as(): Opt_asContext {
		let _localctx: Opt_asContext = new Opt_asContext(this._ctx, this.state);
		this.enterRule(_localctx, 874, PostgreSQLParser.RULE_opt_as);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8193;
			this.match(PostgreSQLParser.KW_AS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altertsdictionarystmt(): AltertsdictionarystmtContext {
		let _localctx: AltertsdictionarystmtContext = new AltertsdictionarystmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 876, PostgreSQLParser.RULE_altertsdictionarystmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8195;
			this.match(PostgreSQLParser.KW_ALTER);
			this.state = 8196;
			this.match(PostgreSQLParser.KW_TEXT);
			this.state = 8197;
			this.match(PostgreSQLParser.KW_SEARCH);
			this.state = 8198;
			this.match(PostgreSQLParser.KW_DICTIONARY);
			this.state = 8199;
			this.any_name();
			this.state = 8200;
			this.definition();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public altertsconfigurationstmt(): AltertsconfigurationstmtContext {
		let _localctx: AltertsconfigurationstmtContext = new AltertsconfigurationstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 878, PostgreSQLParser.RULE_altertsconfigurationstmt);
		let _la: number;
		try {
			this.state = 8265;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 747, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8202;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8203;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 8204;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 8205;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 8206;
				this.any_name();
				this.state = 8207;
				this.match(PostgreSQLParser.KW_ADD);
				this.state = 8208;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 8209;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 8210;
				this.name_list();
				this.state = 8211;
				this.any_with();
				this.state = 8212;
				this.any_name_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8214;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8215;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 8216;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 8217;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 8218;
				this.any_name();
				this.state = 8219;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8220;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 8221;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 8222;
				this.name_list();
				this.state = 8223;
				this.any_with();
				this.state = 8224;
				this.any_name_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8226;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8227;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 8228;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 8229;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 8230;
				this.any_name();
				this.state = 8231;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8232;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 8233;
				this.match(PostgreSQLParser.KW_REPLACE);
				this.state = 8234;
				this.any_name();
				this.state = 8235;
				this.any_with();
				this.state = 8236;
				this.any_name();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8238;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8239;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 8240;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 8241;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 8242;
				this.any_name();
				this.state = 8243;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8244;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 8245;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 8246;
				this.name_list();
				this.state = 8247;
				this.match(PostgreSQLParser.KW_REPLACE);
				this.state = 8248;
				this.any_name();
				this.state = 8249;
				this.any_with();
				this.state = 8250;
				this.any_name();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 8252;
				this.match(PostgreSQLParser.KW_ALTER);
				this.state = 8253;
				this.match(PostgreSQLParser.KW_TEXT);
				this.state = 8254;
				this.match(PostgreSQLParser.KW_SEARCH);
				this.state = 8255;
				this.match(PostgreSQLParser.KW_CONFIGURATION);
				this.state = 8256;
				this.any_name();
				this.state = 8257;
				this.match(PostgreSQLParser.KW_DROP);
				this.state = 8258;
				this.match(PostgreSQLParser.KW_MAPPING);
				this.state = 8260;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_IF) {
					{
					this.state = 8259;
					this.opt_if_exists();
					}
				}

				this.state = 8262;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 8263;
				this.name_list();
				}
				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 any_with(): Any_withContext {
		let _localctx: Any_withContext = new Any_withContext(this._ctx, this.state);
		this.enterRule(_localctx, 880, PostgreSQLParser.RULE_any_with);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8267;
			this.match(PostgreSQLParser.KW_WITH);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public createconversionstmt(): CreateconversionstmtContext {
		let _localctx: CreateconversionstmtContext = new CreateconversionstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 882, PostgreSQLParser.RULE_createconversionstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8269;
			this.match(PostgreSQLParser.KW_CREATE);
			this.state = 8271;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_DEFAULT) {
				{
				this.state = 8270;
				this.opt_default();
				}
			}

			this.state = 8273;
			this.match(PostgreSQLParser.KW_CONVERSION);
			this.state = 8274;
			this.any_name();
			this.state = 8275;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 8276;
			this.sconst();
			this.state = 8277;
			this.match(PostgreSQLParser.KW_TO);
			this.state = 8278;
			this.sconst();
			this.state = 8279;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 8280;
			this.any_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public clusterstmt(): ClusterstmtContext {
		let _localctx: ClusterstmtContext = new ClusterstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 884, PostgreSQLParser.RULE_clusterstmt);
		let _la: number;
		try {
			this.state = 8300;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 753, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8282;
				this.match(PostgreSQLParser.KW_CLUSTER);
				this.state = 8284;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_VERBOSE) {
					{
					this.state = 8283;
					this.opt_verbose();
					}
				}

				this.state = 8286;
				this.table_name();
				this.state = 8288;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 8287;
					this.cluster_index_specification();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8290;
				this.match(PostgreSQLParser.KW_CLUSTER);
				this.state = 8292;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_VERBOSE) {
					{
					this.state = 8291;
					this.opt_verbose();
					}
				}

				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8294;
				this.match(PostgreSQLParser.KW_CLUSTER);
				this.state = 8295;
				this.opt_verbose_list();
				this.state = 8296;
				this.table_name();
				this.state = 8298;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_USING) {
					{
					this.state = 8297;
					this.cluster_index_specification();
					}
				}

				}
				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 opt_verbose_list(): Opt_verbose_listContext {
		let _localctx: Opt_verbose_listContext = new Opt_verbose_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 886, PostgreSQLParser.RULE_opt_verbose_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8302;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 8303;
			this.opt_verbose();
			this.state = 8308;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8304;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8305;
				this.opt_verbose();
				}
				}
				this.state = 8310;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 8311;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cluster_index_specification(): Cluster_index_specificationContext {
		let _localctx: Cluster_index_specificationContext = new Cluster_index_specificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 888, PostgreSQLParser.RULE_cluster_index_specification);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8313;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 8314;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public vacuumstmt(): VacuumstmtContext {
		let _localctx: VacuumstmtContext = new VacuumstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 890, PostgreSQLParser.RULE_vacuumstmt);
		let _la: number;
		try {
			this.state = 8342;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 762, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8316;
				this.match(PostgreSQLParser.KW_VACUUM);
				this.state = 8318;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FULL) {
					{
					this.state = 8317;
					this.opt_full();
					}
				}

				this.state = 8321;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FREEZE) {
					{
					this.state = 8320;
					this.opt_freeze();
					}
				}

				this.state = 8324;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_VERBOSE) {
					{
					this.state = 8323;
					this.opt_verbose();
					}
				}

				this.state = 8327;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 758, this._ctx) ) {
				case 1:
					{
					this.state = 8326;
					this.opt_analyze();
					}
					break;
				}
				this.state = 8330;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 759, this._ctx) ) {
				case 1:
					{
					this.state = 8329;
					this.opt_vacuum_relation_list();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8332;
				this.match(PostgreSQLParser.KW_VACUUM);
				this.state = 8337;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 760, this._ctx) ) {
				case 1:
					{
					this.state = 8333;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 8334;
					this.vac_analyze_option_list();
					this.state = 8335;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				this.state = 8340;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 761, this._ctx) ) {
				case 1:
					{
					this.state = 8339;
					this.opt_vacuum_relation_list();
					}
					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 analyzestmt(): AnalyzestmtContext {
		let _localctx: AnalyzestmtContext = new AnalyzestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 892, PostgreSQLParser.RULE_analyzestmt);
		let _la: number;
		try {
			this.state = 8358;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 766, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8344;
				this.analyze_keyword();
				this.state = 8346;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_VERBOSE) {
					{
					this.state = 8345;
					this.opt_verbose();
					}
				}

				this.state = 8349;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 764, this._ctx) ) {
				case 1:
					{
					this.state = 8348;
					this.opt_vacuum_relation_list();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8351;
				this.analyze_keyword();
				this.state = 8352;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8353;
				this.analyze_options_list();
				this.state = 8354;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 8356;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 765, this._ctx) ) {
				case 1:
					{
					this.state = 8355;
					this.opt_vacuum_relation_list();
					}
					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 vac_analyze_option_list(): Vac_analyze_option_listContext {
		let _localctx: Vac_analyze_option_listContext = new Vac_analyze_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 894, PostgreSQLParser.RULE_vac_analyze_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8360;
			this.vac_analyze_option_elem();
			this.state = 8365;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8361;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8362;
				this.vac_analyze_option_elem();
				}
				}
				this.state = 8367;
				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 analyze_keyword(): Analyze_keywordContext {
		let _localctx: Analyze_keywordContext = new Analyze_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 896, PostgreSQLParser.RULE_analyze_keyword);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8368;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ANALYSE || _la === PostgreSQLParser.KW_ANALYZE)) {
			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 vac_analyze_option_elem(): Vac_analyze_option_elemContext {
		let _localctx: Vac_analyze_option_elemContext = new Vac_analyze_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 898, PostgreSQLParser.RULE_vac_analyze_option_elem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8370;
			this.vac_analyze_option_name();
			this.state = 8372;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (PostgreSQLParser.KW_ON - 80)) | (1 << (PostgreSQLParser.KW_TABLE - 80)) | (1 << (PostgreSQLParser.KW_TRUE - 80)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 80)) | (1 << (PostgreSQLParser.KW_BINARY - 80)) | (1 << (PostgreSQLParser.KW_COLLATION - 80)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 80)) | (1 << (PostgreSQLParser.KW_CROSS - 80)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 80)))) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (PostgreSQLParser.KW_FREEZE - 112)) | (1 << (PostgreSQLParser.KW_FULL - 112)) | (1 << (PostgreSQLParser.KW_ILIKE - 112)) | (1 << (PostgreSQLParser.KW_INNER - 112)) | (1 << (PostgreSQLParser.KW_IS - 112)) | (1 << (PostgreSQLParser.KW_ISNULL - 112)) | (1 << (PostgreSQLParser.KW_JOIN - 112)) | (1 << (PostgreSQLParser.KW_LEFT - 112)) | (1 << (PostgreSQLParser.KW_LIKE - 112)) | (1 << (PostgreSQLParser.KW_NATURAL - 112)) | (1 << (PostgreSQLParser.KW_NOTNULL - 112)) | (1 << (PostgreSQLParser.KW_OUTER - 112)) | (1 << (PostgreSQLParser.KW_OVER - 112)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 112)) | (1 << (PostgreSQLParser.KW_RIGHT - 112)) | (1 << (PostgreSQLParser.KW_SIMILAR - 112)) | (1 << (PostgreSQLParser.KW_VERBOSE - 112)) | (1 << (PostgreSQLParser.KW_ABORT - 112)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 112)) | (1 << (PostgreSQLParser.KW_ACCESS - 112)) | (1 << (PostgreSQLParser.KW_ACTION - 112)) | (1 << (PostgreSQLParser.KW_ADD - 112)) | (1 << (PostgreSQLParser.KW_ADMIN - 112)) | (1 << (PostgreSQLParser.KW_AFTER - 112)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 112)) | (1 << (PostgreSQLParser.KW_ALSO - 112)) | (1 << (PostgreSQLParser.KW_ALTER - 112)) | (1 << (PostgreSQLParser.KW_ALWAYS - 112)) | (1 << (PostgreSQLParser.KW_ASSERTION - 112)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 112)) | (1 << (PostgreSQLParser.KW_AT - 112)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 112)))) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & ((1 << (PostgreSQLParser.KW_BACKWARD - 144)) | (1 << (PostgreSQLParser.KW_BEFORE - 144)) | (1 << (PostgreSQLParser.KW_BEGIN - 144)) | (1 << (PostgreSQLParser.KW_BY - 144)) | (1 << (PostgreSQLParser.KW_CACHE - 144)) | (1 << (PostgreSQLParser.KW_CALLED - 144)) | (1 << (PostgreSQLParser.KW_CASCADE - 144)) | (1 << (PostgreSQLParser.KW_CASCADED - 144)) | (1 << (PostgreSQLParser.KW_CATALOG - 144)) | (1 << (PostgreSQLParser.KW_CHAIN - 144)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 144)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 144)) | (1 << (PostgreSQLParser.KW_CLASS - 144)) | (1 << (PostgreSQLParser.KW_CLOSE - 144)) | (1 << (PostgreSQLParser.KW_CLUSTER - 144)) | (1 << (PostgreSQLParser.KW_COMMENT - 144)) | (1 << (PostgreSQLParser.KW_COMMENTS - 144)) | (1 << (PostgreSQLParser.KW_COMMIT - 144)) | (1 << (PostgreSQLParser.KW_COMMITTED - 144)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 144)) | (1 << (PostgreSQLParser.KW_CONNECTION - 144)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 144)) | (1 << (PostgreSQLParser.KW_CONTENT - 144)) | (1 << (PostgreSQLParser.KW_CONTINUE - 144)) | (1 << (PostgreSQLParser.KW_CONVERSION - 144)) | (1 << (PostgreSQLParser.KW_COPY - 144)) | (1 << (PostgreSQLParser.KW_COST - 144)) | (1 << (PostgreSQLParser.KW_CSV - 144)) | (1 << (PostgreSQLParser.KW_CURSOR - 144)) | (1 << (PostgreSQLParser.KW_CYCLE - 144)) | (1 << (PostgreSQLParser.KW_DATA - 144)) | (1 << (PostgreSQLParser.KW_DATABASE - 144)))) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & ((1 << (PostgreSQLParser.KW_DAY - 176)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 176)) | (1 << (PostgreSQLParser.KW_DECLARE - 176)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 176)) | (1 << (PostgreSQLParser.KW_DEFERRED - 176)) | (1 << (PostgreSQLParser.KW_DEFINER - 176)) | (1 << (PostgreSQLParser.KW_DELETE - 176)) | (1 << (PostgreSQLParser.KW_DELIMITER - 176)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 176)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 176)) | (1 << (PostgreSQLParser.KW_DISABLE - 176)) | (1 << (PostgreSQLParser.KW_DISCARD - 176)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 176)) | (1 << (PostgreSQLParser.KW_DOMAIN - 176)) | (1 << (PostgreSQLParser.KW_DOUBLE - 176)) | (1 << (PostgreSQLParser.KW_DROP - 176)) | (1 << (PostgreSQLParser.KW_EACH - 176)) | (1 << (PostgreSQLParser.KW_ENABLE - 176)) | (1 << (PostgreSQLParser.KW_ENCODING - 176)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 176)) | (1 << (PostgreSQLParser.KW_ENUM - 176)) | (1 << (PostgreSQLParser.KW_ESCAPE - 176)) | (1 << (PostgreSQLParser.KW_EVENT - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 176)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 176)) | (1 << (PostgreSQLParser.KW_EXECUTE - 176)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 176)) | (1 << (PostgreSQLParser.KW_EXTENSION - 176)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 176)) | (1 << (PostgreSQLParser.KW_FAMILY - 176)) | (1 << (PostgreSQLParser.KW_FIRST - 176)))) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & ((1 << (PostgreSQLParser.KW_FOLLOWING - 208)) | (1 << (PostgreSQLParser.KW_FORCE - 208)) | (1 << (PostgreSQLParser.KW_FORWARD - 208)) | (1 << (PostgreSQLParser.KW_FUNCTION - 208)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 208)) | (1 << (PostgreSQLParser.KW_GLOBAL - 208)) | (1 << (PostgreSQLParser.KW_GRANTED - 208)) | (1 << (PostgreSQLParser.KW_HANDLER - 208)) | (1 << (PostgreSQLParser.KW_HEADER - 208)) | (1 << (PostgreSQLParser.KW_HOLD - 208)) | (1 << (PostgreSQLParser.KW_HOUR - 208)) | (1 << (PostgreSQLParser.KW_IDENTITY - 208)) | (1 << (PostgreSQLParser.KW_IF - 208)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 208)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 208)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 208)) | (1 << (PostgreSQLParser.KW_INCLUDING - 208)) | (1 << (PostgreSQLParser.KW_INCREMENT - 208)) | (1 << (PostgreSQLParser.KW_INDEX - 208)) | (1 << (PostgreSQLParser.KW_INDEXES - 208)) | (1 << (PostgreSQLParser.KW_INHERIT - 208)) | (1 << (PostgreSQLParser.KW_INHERITS - 208)) | (1 << (PostgreSQLParser.KW_INLINE - 208)))) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & ((1 << (PostgreSQLParser.KW_INSENSITIVE - 240)) | (1 << (PostgreSQLParser.KW_INSERT - 240)) | (1 << (PostgreSQLParser.KW_INSTEAD - 240)) | (1 << (PostgreSQLParser.KW_INVOKER - 240)) | (1 << (PostgreSQLParser.KW_ISOLATION - 240)) | (1 << (PostgreSQLParser.KW_KEY - 240)) | (1 << (PostgreSQLParser.KW_LABEL - 240)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 240)) | (1 << (PostgreSQLParser.KW_LARGE - 240)) | (1 << (PostgreSQLParser.KW_LAST - 240)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 240)) | (1 << (PostgreSQLParser.KW_LEVEL - 240)) | (1 << (PostgreSQLParser.KW_LISTEN - 240)) | (1 << (PostgreSQLParser.KW_LOAD - 240)) | (1 << (PostgreSQLParser.KW_LOCAL - 240)) | (1 << (PostgreSQLParser.KW_LOCATION - 240)) | (1 << (PostgreSQLParser.KW_LOCK - 240)) | (1 << (PostgreSQLParser.KW_MAPPING - 240)) | (1 << (PostgreSQLParser.KW_MATCH - 240)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 240)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 240)) | (1 << (PostgreSQLParser.KW_MINUTE - 240)) | (1 << (PostgreSQLParser.KW_MINVALUE - 240)) | (1 << (PostgreSQLParser.KW_MODE - 240)) | (1 << (PostgreSQLParser.KW_MONTH - 240)) | (1 << (PostgreSQLParser.KW_MOVE - 240)) | (1 << (PostgreSQLParser.KW_NAME - 240)) | (1 << (PostgreSQLParser.KW_NAMES - 240)) | (1 << (PostgreSQLParser.KW_NEXT - 240)) | (1 << (PostgreSQLParser.KW_NO - 240)) | (1 << (PostgreSQLParser.KW_NOTHING - 240)) | (1 << (PostgreSQLParser.KW_NOTIFY - 240)))) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & ((1 << (PostgreSQLParser.KW_NOWAIT - 272)) | (1 << (PostgreSQLParser.KW_NULLS - 272)) | (1 << (PostgreSQLParser.KW_OBJECT - 272)) | (1 << (PostgreSQLParser.KW_OF - 272)) | (1 << (PostgreSQLParser.KW_OFF - 272)) | (1 << (PostgreSQLParser.KW_OIDS - 272)) | (1 << (PostgreSQLParser.KW_OPERATOR - 272)) | (1 << (PostgreSQLParser.KW_OPTION - 272)) | (1 << (PostgreSQLParser.KW_OPTIONS - 272)) | (1 << (PostgreSQLParser.KW_OWNED - 272)) | (1 << (PostgreSQLParser.KW_OWNER - 272)) | (1 << (PostgreSQLParser.KW_PARSER - 272)) | (1 << (PostgreSQLParser.KW_PARTIAL - 272)) | (1 << (PostgreSQLParser.KW_PARTITION - 272)) | (1 << (PostgreSQLParser.KW_PASSING - 272)) | (1 << (PostgreSQLParser.KW_PASSWORD - 272)) | (1 << (PostgreSQLParser.KW_PLANS - 272)) | (1 << (PostgreSQLParser.KW_PRECEDING - 272)) | (1 << (PostgreSQLParser.KW_PREPARE - 272)) | (1 << (PostgreSQLParser.KW_PREPARED - 272)) | (1 << (PostgreSQLParser.KW_PRESERVE - 272)) | (1 << (PostgreSQLParser.KW_PRIOR - 272)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 272)) | (1 << (PostgreSQLParser.KW_PROGRAM - 272)) | (1 << (PostgreSQLParser.KW_QUOTE - 272)) | (1 << (PostgreSQLParser.KW_RANGE - 272)) | (1 << (PostgreSQLParser.KW_READ - 272)) | (1 << (PostgreSQLParser.KW_REASSIGN - 272)) | (1 << (PostgreSQLParser.KW_RECHECK - 272)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 272)))) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & ((1 << (PostgreSQLParser.KW_REF - 304)) | (1 << (PostgreSQLParser.KW_REFRESH - 304)) | (1 << (PostgreSQLParser.KW_REINDEX - 304)) | (1 << (PostgreSQLParser.KW_RELATIVE - 304)) | (1 << (PostgreSQLParser.KW_RELEASE - 304)) | (1 << (PostgreSQLParser.KW_RENAME - 304)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 304)) | (1 << (PostgreSQLParser.KW_REPLACE - 304)) | (1 << (PostgreSQLParser.KW_REPLICA - 304)) | (1 << (PostgreSQLParser.KW_RESET - 304)) | (1 << (PostgreSQLParser.KW_RESTART - 304)) | (1 << (PostgreSQLParser.KW_RESTRICT - 304)) | (1 << (PostgreSQLParser.KW_RETURNS - 304)) | (1 << (PostgreSQLParser.KW_REVOKE - 304)) | (1 << (PostgreSQLParser.KW_ROLE - 304)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 304)) | (1 << (PostgreSQLParser.KW_ROWS - 304)) | (1 << (PostgreSQLParser.KW_RULE - 304)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 304)) | (1 << (PostgreSQLParser.KW_SCHEMA - 304)) | (1 << (PostgreSQLParser.KW_SCROLL - 304)) | (1 << (PostgreSQLParser.KW_SEARCH - 304)) | (1 << (PostgreSQLParser.KW_SECOND - 304)) | (1 << (PostgreSQLParser.KW_SECURITY - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 304)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 304)) | (1 << (PostgreSQLParser.KW_SERVER - 304)) | (1 << (PostgreSQLParser.KW_SESSION - 304)) | (1 << (PostgreSQLParser.KW_SET - 304)) | (1 << (PostgreSQLParser.KW_SHARE - 304)) | (1 << (PostgreSQLParser.KW_SHOW - 304)))) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & ((1 << (PostgreSQLParser.KW_SIMPLE - 336)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 336)) | (1 << (PostgreSQLParser.KW_STABLE - 336)) | (1 << (PostgreSQLParser.KW_STANDALONE - 336)) | (1 << (PostgreSQLParser.KW_START - 336)) | (1 << (PostgreSQLParser.KW_STATEMENT - 336)) | (1 << (PostgreSQLParser.KW_STATISTICS - 336)) | (1 << (PostgreSQLParser.KW_STDIN - 336)) | (1 << (PostgreSQLParser.KW_STDOUT - 336)) | (1 << (PostgreSQLParser.KW_STORAGE - 336)) | (1 << (PostgreSQLParser.KW_STRICT - 336)) | (1 << (PostgreSQLParser.KW_STRIP - 336)) | (1 << (PostgreSQLParser.KW_SYSID - 336)) | (1 << (PostgreSQLParser.KW_SYSTEM - 336)) | (1 << (PostgreSQLParser.KW_TABLES - 336)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 336)) | (1 << (PostgreSQLParser.KW_TEMP - 336)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 336)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 336)) | (1 << (PostgreSQLParser.KW_TEXT - 336)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 336)) | (1 << (PostgreSQLParser.KW_TRIGGER - 336)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 336)) | (1 << (PostgreSQLParser.KW_TRUSTED - 336)) | (1 << (PostgreSQLParser.KW_TYPE - 336)) | (1 << (PostgreSQLParser.KW_TYPES - 336)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 336)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 336)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 336)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 336)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 336)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 336)))) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & ((1 << (PostgreSQLParser.KW_UNTIL - 368)) | (1 << (PostgreSQLParser.KW_UPDATE - 368)) | (1 << (PostgreSQLParser.KW_VACUUM - 368)) | (1 << (PostgreSQLParser.KW_VALID - 368)) | (1 << (PostgreSQLParser.KW_VALIDATE - 368)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 368)) | (1 << (PostgreSQLParser.KW_VARYING - 368)) | (1 << (PostgreSQLParser.KW_VERSION - 368)) | (1 << (PostgreSQLParser.KW_VIEW - 368)) | (1 << (PostgreSQLParser.KW_VOLATILE - 368)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 368)) | (1 << (PostgreSQLParser.KW_WITHOUT - 368)) | (1 << (PostgreSQLParser.KW_WORK - 368)) | (1 << (PostgreSQLParser.KW_WRAPPER - 368)) | (1 << (PostgreSQLParser.KW_WRITE - 368)) | (1 << (PostgreSQLParser.KW_XML - 368)) | (1 << (PostgreSQLParser.KW_YEAR - 368)) | (1 << (PostgreSQLParser.KW_YES - 368)) | (1 << (PostgreSQLParser.KW_ZONE - 368)) | (1 << (PostgreSQLParser.KW_BETWEEN - 368)) | (1 << (PostgreSQLParser.KW_BIGINT - 368)) | (1 << (PostgreSQLParser.KW_BIT - 368)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 368)) | (1 << (PostgreSQLParser.KW_CHAR - 368)) | (1 << (PostgreSQLParser.KW_CHARACTER - 368)) | (1 << (PostgreSQLParser.KW_COALESCE - 368)) | (1 << (PostgreSQLParser.KW_DEC - 368)) | (1 << (PostgreSQLParser.KW_DECIMAL - 368)) | (1 << (PostgreSQLParser.KW_EXISTS - 368)) | (1 << (PostgreSQLParser.KW_EXTRACT - 368)) | (1 << (PostgreSQLParser.KW_FLOAT - 368)) | (1 << (PostgreSQLParser.KW_GREATEST - 368)))) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & ((1 << (PostgreSQLParser.KW_INOUT - 400)) | (1 << (PostgreSQLParser.KW_INT - 400)) | (1 << (PostgreSQLParser.KW_INTEGER - 400)) | (1 << (PostgreSQLParser.KW_INTERVAL - 400)) | (1 << (PostgreSQLParser.KW_LEAST - 400)) | (1 << (PostgreSQLParser.KW_NATIONAL - 400)) | (1 << (PostgreSQLParser.KW_NCHAR - 400)) | (1 << (PostgreSQLParser.KW_NONE - 400)) | (1 << (PostgreSQLParser.KW_NULLIF - 400)) | (1 << (PostgreSQLParser.KW_NUMERIC - 400)) | (1 << (PostgreSQLParser.KW_OVERLAY - 400)) | (1 << (PostgreSQLParser.KW_POSITION - 400)) | (1 << (PostgreSQLParser.KW_PRECISION - 400)) | (1 << (PostgreSQLParser.KW_REAL - 400)) | (1 << (PostgreSQLParser.KW_ROW - 400)) | (1 << (PostgreSQLParser.KW_SETOF - 400)) | (1 << (PostgreSQLParser.KW_SMALLINT - 400)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 400)) | (1 << (PostgreSQLParser.KW_TIME - 400)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 400)) | (1 << (PostgreSQLParser.KW_TREAT - 400)) | (1 << (PostgreSQLParser.KW_TRIM - 400)) | (1 << (PostgreSQLParser.KW_VALUES - 400)) | (1 << (PostgreSQLParser.KW_VARCHAR - 400)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 400)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 400)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 400)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 400)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 400)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 400)) | (1 << (PostgreSQLParser.KW_XMLPI - 400)) | (1 << (PostgreSQLParser.KW_XMLROOT - 400)))) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & ((1 << (PostgreSQLParser.KW_XMLSERIALIZE - 432)) | (1 << (PostgreSQLParser.KW_CALL - 432)) | (1 << (PostgreSQLParser.KW_CURRENT - 432)) | (1 << (PostgreSQLParser.KW_ATTACH - 432)) | (1 << (PostgreSQLParser.KW_DETACH - 432)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 432)) | (1 << (PostgreSQLParser.KW_GENERATED - 432)) | (1 << (PostgreSQLParser.KW_LOGGED - 432)) | (1 << (PostgreSQLParser.KW_STORED - 432)) | (1 << (PostgreSQLParser.KW_INCLUDE - 432)) | (1 << (PostgreSQLParser.KW_ROUTINE - 432)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 432)) | (1 << (PostgreSQLParser.KW_IMPORT - 432)) | (1 << (PostgreSQLParser.KW_POLICY - 432)) | (1 << (PostgreSQLParser.KW_METHOD - 432)) | (1 << (PostgreSQLParser.KW_REFERENCING - 432)) | (1 << (PostgreSQLParser.KW_NEW - 432)) | (1 << (PostgreSQLParser.KW_OLD - 432)) | (1 << (PostgreSQLParser.KW_VALUE - 432)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 432)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 432)) | (1 << (PostgreSQLParser.KW_OUT - 432)) | (1 << (PostgreSQLParser.KW_ROUTINES - 432)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 432)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 432)) | (1 << (PostgreSQLParser.KW_INPUT - 432)) | (1 << (PostgreSQLParser.KW_SUPPORT - 432)) | (1 << (PostgreSQLParser.KW_PARALLEL - 432)) | (1 << (PostgreSQLParser.KW_SQL - 432)) | (1 << (PostgreSQLParser.KW_DEPENDS - 432)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 432)))) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & ((1 << (PostgreSQLParser.KW_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_SKIP - 464)) | (1 << (PostgreSQLParser.KW_LOCKED - 464)) | (1 << (PostgreSQLParser.KW_TIES - 464)) | (1 << (PostgreSQLParser.KW_ROLLUP - 464)) | (1 << (PostgreSQLParser.KW_CUBE - 464)) | (1 << (PostgreSQLParser.KW_GROUPING - 464)) | (1 << (PostgreSQLParser.KW_SETS - 464)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 464)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 464)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 464)) | (1 << (PostgreSQLParser.KW_COLUMNS - 464)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 464)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 464)) | (1 << (PostgreSQLParser.KW_WITHIN - 464)) | (1 << (PostgreSQLParser.KW_FILTER - 464)) | (1 << (PostgreSQLParser.KW_GROUPS - 464)) | (1 << (PostgreSQLParser.KW_OTHERS - 464)) | (1 << (PostgreSQLParser.KW_NFC - 464)) | (1 << (PostgreSQLParser.KW_NFD - 464)) | (1 << (PostgreSQLParser.KW_NFKC - 464)) | (1 << (PostgreSQLParser.KW_NFKD - 464)) | (1 << (PostgreSQLParser.KW_UESCAPE - 464)) | (1 << (PostgreSQLParser.KW_VIEWS - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 464)) | (1 << (PostgreSQLParser.KW_DUMP - 464)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 464)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_ERROR - 464)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 464)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 464)))) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & ((1 << (PostgreSQLParser.KW_ALIAS - 496)) | (1 << (PostgreSQLParser.KW_CONSTANT - 496)) | (1 << (PostgreSQLParser.KW_PERFORM - 496)) | (1 << (PostgreSQLParser.KW_GET - 496)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 496)) | (1 << (PostgreSQLParser.KW_STACKED - 496)) | (1 << (PostgreSQLParser.KW_ELSIF - 496)) | (1 << (PostgreSQLParser.KW_REVERSE - 496)) | (1 << (PostgreSQLParser.KW_SLICE - 496)) | (1 << (PostgreSQLParser.KW_EXIT - 496)) | (1 << (PostgreSQLParser.KW_RETURN - 496)) | (1 << (PostgreSQLParser.KW_QUERY - 496)) | (1 << (PostgreSQLParser.KW_RAISE - 496)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 496)) | (1 << (PostgreSQLParser.KW_DEBUG - 496)) | (1 << (PostgreSQLParser.KW_LOG - 496)) | (1 << (PostgreSQLParser.KW_INFO - 496)) | (1 << (PostgreSQLParser.KW_NOTICE - 496)) | (1 << (PostgreSQLParser.KW_WARNING - 496)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 496)) | (1 << (PostgreSQLParser.KW_ASSERT - 496)) | (1 << (PostgreSQLParser.KW_OPEN - 496)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 8371;
				this.vac_analyze_option_arg();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public vac_analyze_option_name(): Vac_analyze_option_nameContext {
		let _localctx: Vac_analyze_option_nameContext = new Vac_analyze_option_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 900, PostgreSQLParser.RULE_vac_analyze_option_name);
		try {
			this.state = 8376;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8374;
				this.nonreservedword();
				}
				break;
			case PostgreSQLParser.KW_ANALYSE:
			case PostgreSQLParser.KW_ANALYZE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8375;
				this.analyze_keyword();
				}
				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 vac_analyze_option_arg(): Vac_analyze_option_argContext {
		let _localctx: Vac_analyze_option_argContext = new Vac_analyze_option_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 902, PostgreSQLParser.RULE_vac_analyze_option_arg);
		try {
			this.state = 8380;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8378;
				this.opt_boolean_or_string();
				}
				break;
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8379;
				this.numericonly();
				}
				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 opt_analyze(): Opt_analyzeContext {
		let _localctx: Opt_analyzeContext = new Opt_analyzeContext(this._ctx, this.state);
		this.enterRule(_localctx, 904, PostgreSQLParser.RULE_opt_analyze);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8382;
			this.analyze_keyword();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public analyze_options_list(): Analyze_options_listContext {
		let _localctx: Analyze_options_listContext = new Analyze_options_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 906, PostgreSQLParser.RULE_analyze_options_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8384;
			this.analyze_option_elem();
			this.state = 8389;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8385;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8386;
				this.analyze_option_elem();
				}
				}
				this.state = 8391;
				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 analyze_option_elem(): Analyze_option_elemContext {
		let _localctx: Analyze_option_elemContext = new Analyze_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 908, PostgreSQLParser.RULE_analyze_option_elem);
		try {
			this.state = 8395;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_VERBOSE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8392;
				this.opt_verbose();
				}
				break;
			case PostgreSQLParser.KW_SKIP_LOCKED:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8393;
				this.opt_skiplock();
				}
				break;
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8394;
				this.opt_buffer_usage_limit();
				}
				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 opt_verbose(): Opt_verboseContext {
		let _localctx: Opt_verboseContext = new Opt_verboseContext(this._ctx, this.state);
		this.enterRule(_localctx, 910, PostgreSQLParser.RULE_opt_verbose);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8397;
			this.match(PostgreSQLParser.KW_VERBOSE);
			this.state = 8399;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FALSE || _la === PostgreSQLParser.KW_TRUE) {
				{
				this.state = 8398;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_FALSE || _la === PostgreSQLParser.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 opt_skiplock(): Opt_skiplockContext {
		let _localctx: Opt_skiplockContext = new Opt_skiplockContext(this._ctx, this.state);
		this.enterRule(_localctx, 912, PostgreSQLParser.RULE_opt_skiplock);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8401;
			this.match(PostgreSQLParser.KW_SKIP_LOCKED);
			this.state = 8403;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FALSE || _la === PostgreSQLParser.KW_TRUE) {
				{
				this.state = 8402;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_FALSE || _la === PostgreSQLParser.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 opt_buffer_usage_limit(): Opt_buffer_usage_limitContext {
		let _localctx: Opt_buffer_usage_limitContext = new Opt_buffer_usage_limitContext(this._ctx, this.state);
		this.enterRule(_localctx, 914, PostgreSQLParser.RULE_opt_buffer_usage_limit);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8405;
			this.match(PostgreSQLParser.KW_BUFFER_USAGE_LIMIT);
			this.state = 8408;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
				{
				this.state = 8406;
				this.numericonly();
				}
				break;
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 8407;
				this.sconst();
				}
				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 opt_full(): Opt_fullContext {
		let _localctx: Opt_fullContext = new Opt_fullContext(this._ctx, this.state);
		this.enterRule(_localctx, 916, PostgreSQLParser.RULE_opt_full);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8410;
			this.match(PostgreSQLParser.KW_FULL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_freeze(): Opt_freezeContext {
		let _localctx: Opt_freezeContext = new Opt_freezeContext(this._ctx, this.state);
		this.enterRule(_localctx, 918, PostgreSQLParser.RULE_opt_freeze);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8412;
			this.match(PostgreSQLParser.KW_FREEZE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_name_list(): Opt_name_listContext {
		let _localctx: Opt_name_listContext = new Opt_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 920, PostgreSQLParser.RULE_opt_name_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8414;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 8415;
			this.columnlist();
			this.state = 8416;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public vacuum_relation(): Vacuum_relationContext {
		let _localctx: Vacuum_relationContext = new Vacuum_relationContext(this._ctx, this.state);
		this.enterRule(_localctx, 922, PostgreSQLParser.RULE_vacuum_relation);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8418;
			this.table_name();
			this.state = 8420;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 776, this._ctx) ) {
			case 1:
				{
				this.state = 8419;
				this.opt_name_list();
				}
				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 vacuum_relation_list(): Vacuum_relation_listContext {
		let _localctx: Vacuum_relation_listContext = new Vacuum_relation_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 924, PostgreSQLParser.RULE_vacuum_relation_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8422;
			this.vacuum_relation();
			this.state = 8427;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8423;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8424;
				this.vacuum_relation();
				}
				}
				this.state = 8429;
				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 opt_vacuum_relation_list(): Opt_vacuum_relation_listContext {
		let _localctx: Opt_vacuum_relation_listContext = new Opt_vacuum_relation_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 926, PostgreSQLParser.RULE_opt_vacuum_relation_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8430;
			this.vacuum_relation_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public explainstmt(): ExplainstmtContext {
		let _localctx: ExplainstmtContext = new ExplainstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 928, PostgreSQLParser.RULE_explainstmt);
		let _la: number;
		try {
			this.state = 8450;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 779, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8432;
				this.match(PostgreSQLParser.KW_EXPLAIN);
				this.state = 8433;
				this.explainablestmt();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8434;
				this.match(PostgreSQLParser.KW_EXPLAIN);
				this.state = 8435;
				this.analyze_keyword();
				this.state = 8437;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_VERBOSE) {
					{
					this.state = 8436;
					this.opt_verbose();
					}
				}

				this.state = 8439;
				this.explainablestmt();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8441;
				this.match(PostgreSQLParser.KW_EXPLAIN);
				this.state = 8442;
				this.match(PostgreSQLParser.KW_VERBOSE);
				this.state = 8443;
				this.explainablestmt();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8444;
				this.match(PostgreSQLParser.KW_EXPLAIN);
				this.state = 8445;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8446;
				this.explain_option_list();
				this.state = 8447;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 8448;
				this.explainablestmt();
				}
				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 explainablestmt(): ExplainablestmtContext {
		let _localctx: ExplainablestmtContext = new ExplainablestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 930, PostgreSQLParser.RULE_explainablestmt);
		try {
			this.state = 8461;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 780, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8452;
				this.selectstmt();
				}
				break;

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

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

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

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

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

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

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

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 8460;
				this.executestmt();
				}
				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 explain_option_list(): Explain_option_listContext {
		let _localctx: Explain_option_listContext = new Explain_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 932, PostgreSQLParser.RULE_explain_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8463;
			this.explain_option_elem();
			this.state = 8468;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8464;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8465;
				this.explain_option_elem();
				}
				}
				this.state = 8470;
				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 explain_option_elem(): Explain_option_elemContext {
		let _localctx: Explain_option_elemContext = new Explain_option_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 934, PostgreSQLParser.RULE_explain_option_elem);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8471;
			this.explain_option_name();
			this.state = 8473;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & ((1 << (PostgreSQLParser.KW_ON - 80)) | (1 << (PostgreSQLParser.KW_TABLE - 80)) | (1 << (PostgreSQLParser.KW_TRUE - 80)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 80)) | (1 << (PostgreSQLParser.KW_BINARY - 80)) | (1 << (PostgreSQLParser.KW_COLLATION - 80)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 80)) | (1 << (PostgreSQLParser.KW_CROSS - 80)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 80)))) !== 0) || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (PostgreSQLParser.KW_FREEZE - 112)) | (1 << (PostgreSQLParser.KW_FULL - 112)) | (1 << (PostgreSQLParser.KW_ILIKE - 112)) | (1 << (PostgreSQLParser.KW_INNER - 112)) | (1 << (PostgreSQLParser.KW_IS - 112)) | (1 << (PostgreSQLParser.KW_ISNULL - 112)) | (1 << (PostgreSQLParser.KW_JOIN - 112)) | (1 << (PostgreSQLParser.KW_LEFT - 112)) | (1 << (PostgreSQLParser.KW_LIKE - 112)) | (1 << (PostgreSQLParser.KW_NATURAL - 112)) | (1 << (PostgreSQLParser.KW_NOTNULL - 112)) | (1 << (PostgreSQLParser.KW_OUTER - 112)) | (1 << (PostgreSQLParser.KW_OVER - 112)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 112)) | (1 << (PostgreSQLParser.KW_RIGHT - 112)) | (1 << (PostgreSQLParser.KW_SIMILAR - 112)) | (1 << (PostgreSQLParser.KW_VERBOSE - 112)) | (1 << (PostgreSQLParser.KW_ABORT - 112)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 112)) | (1 << (PostgreSQLParser.KW_ACCESS - 112)) | (1 << (PostgreSQLParser.KW_ACTION - 112)) | (1 << (PostgreSQLParser.KW_ADD - 112)) | (1 << (PostgreSQLParser.KW_ADMIN - 112)) | (1 << (PostgreSQLParser.KW_AFTER - 112)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 112)) | (1 << (PostgreSQLParser.KW_ALSO - 112)) | (1 << (PostgreSQLParser.KW_ALTER - 112)) | (1 << (PostgreSQLParser.KW_ALWAYS - 112)) | (1 << (PostgreSQLParser.KW_ASSERTION - 112)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 112)) | (1 << (PostgreSQLParser.KW_AT - 112)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 112)))) !== 0) || ((((_la - 144)) & ~0x1F) === 0 && ((1 << (_la - 144)) & ((1 << (PostgreSQLParser.KW_BACKWARD - 144)) | (1 << (PostgreSQLParser.KW_BEFORE - 144)) | (1 << (PostgreSQLParser.KW_BEGIN - 144)) | (1 << (PostgreSQLParser.KW_BY - 144)) | (1 << (PostgreSQLParser.KW_CACHE - 144)) | (1 << (PostgreSQLParser.KW_CALLED - 144)) | (1 << (PostgreSQLParser.KW_CASCADE - 144)) | (1 << (PostgreSQLParser.KW_CASCADED - 144)) | (1 << (PostgreSQLParser.KW_CATALOG - 144)) | (1 << (PostgreSQLParser.KW_CHAIN - 144)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 144)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 144)) | (1 << (PostgreSQLParser.KW_CLASS - 144)) | (1 << (PostgreSQLParser.KW_CLOSE - 144)) | (1 << (PostgreSQLParser.KW_CLUSTER - 144)) | (1 << (PostgreSQLParser.KW_COMMENT - 144)) | (1 << (PostgreSQLParser.KW_COMMENTS - 144)) | (1 << (PostgreSQLParser.KW_COMMIT - 144)) | (1 << (PostgreSQLParser.KW_COMMITTED - 144)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 144)) | (1 << (PostgreSQLParser.KW_CONNECTION - 144)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 144)) | (1 << (PostgreSQLParser.KW_CONTENT - 144)) | (1 << (PostgreSQLParser.KW_CONTINUE - 144)) | (1 << (PostgreSQLParser.KW_CONVERSION - 144)) | (1 << (PostgreSQLParser.KW_COPY - 144)) | (1 << (PostgreSQLParser.KW_COST - 144)) | (1 << (PostgreSQLParser.KW_CSV - 144)) | (1 << (PostgreSQLParser.KW_CURSOR - 144)) | (1 << (PostgreSQLParser.KW_CYCLE - 144)) | (1 << (PostgreSQLParser.KW_DATA - 144)) | (1 << (PostgreSQLParser.KW_DATABASE - 144)))) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & ((1 << (PostgreSQLParser.KW_DAY - 176)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 176)) | (1 << (PostgreSQLParser.KW_DECLARE - 176)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 176)) | (1 << (PostgreSQLParser.KW_DEFERRED - 176)) | (1 << (PostgreSQLParser.KW_DEFINER - 176)) | (1 << (PostgreSQLParser.KW_DELETE - 176)) | (1 << (PostgreSQLParser.KW_DELIMITER - 176)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 176)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 176)) | (1 << (PostgreSQLParser.KW_DISABLE - 176)) | (1 << (PostgreSQLParser.KW_DISCARD - 176)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 176)) | (1 << (PostgreSQLParser.KW_DOMAIN - 176)) | (1 << (PostgreSQLParser.KW_DOUBLE - 176)) | (1 << (PostgreSQLParser.KW_DROP - 176)) | (1 << (PostgreSQLParser.KW_EACH - 176)) | (1 << (PostgreSQLParser.KW_ENABLE - 176)) | (1 << (PostgreSQLParser.KW_ENCODING - 176)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 176)) | (1 << (PostgreSQLParser.KW_ENUM - 176)) | (1 << (PostgreSQLParser.KW_ESCAPE - 176)) | (1 << (PostgreSQLParser.KW_EVENT - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 176)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 176)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 176)) | (1 << (PostgreSQLParser.KW_EXECUTE - 176)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 176)) | (1 << (PostgreSQLParser.KW_EXTENSION - 176)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 176)) | (1 << (PostgreSQLParser.KW_FAMILY - 176)) | (1 << (PostgreSQLParser.KW_FIRST - 176)))) !== 0) || ((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & ((1 << (PostgreSQLParser.KW_FOLLOWING - 208)) | (1 << (PostgreSQLParser.KW_FORCE - 208)) | (1 << (PostgreSQLParser.KW_FORWARD - 208)) | (1 << (PostgreSQLParser.KW_FUNCTION - 208)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 208)) | (1 << (PostgreSQLParser.KW_GLOBAL - 208)) | (1 << (PostgreSQLParser.KW_GRANTED - 208)) | (1 << (PostgreSQLParser.KW_HANDLER - 208)) | (1 << (PostgreSQLParser.KW_HEADER - 208)) | (1 << (PostgreSQLParser.KW_HOLD - 208)) | (1 << (PostgreSQLParser.KW_HOUR - 208)) | (1 << (PostgreSQLParser.KW_IDENTITY - 208)) | (1 << (PostgreSQLParser.KW_IF - 208)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 208)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 208)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 208)) | (1 << (PostgreSQLParser.KW_INCLUDING - 208)) | (1 << (PostgreSQLParser.KW_INCREMENT - 208)) | (1 << (PostgreSQLParser.KW_INDEX - 208)) | (1 << (PostgreSQLParser.KW_INDEXES - 208)) | (1 << (PostgreSQLParser.KW_INHERIT - 208)) | (1 << (PostgreSQLParser.KW_INHERITS - 208)) | (1 << (PostgreSQLParser.KW_INLINE - 208)))) !== 0) || ((((_la - 240)) & ~0x1F) === 0 && ((1 << (_la - 240)) & ((1 << (PostgreSQLParser.KW_INSENSITIVE - 240)) | (1 << (PostgreSQLParser.KW_INSERT - 240)) | (1 << (PostgreSQLParser.KW_INSTEAD - 240)) | (1 << (PostgreSQLParser.KW_INVOKER - 240)) | (1 << (PostgreSQLParser.KW_ISOLATION - 240)) | (1 << (PostgreSQLParser.KW_KEY - 240)) | (1 << (PostgreSQLParser.KW_LABEL - 240)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 240)) | (1 << (PostgreSQLParser.KW_LARGE - 240)) | (1 << (PostgreSQLParser.KW_LAST - 240)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 240)) | (1 << (PostgreSQLParser.KW_LEVEL - 240)) | (1 << (PostgreSQLParser.KW_LISTEN - 240)) | (1 << (PostgreSQLParser.KW_LOAD - 240)) | (1 << (PostgreSQLParser.KW_LOCAL - 240)) | (1 << (PostgreSQLParser.KW_LOCATION - 240)) | (1 << (PostgreSQLParser.KW_LOCK - 240)) | (1 << (PostgreSQLParser.KW_MAPPING - 240)) | (1 << (PostgreSQLParser.KW_MATCH - 240)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 240)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 240)) | (1 << (PostgreSQLParser.KW_MINUTE - 240)) | (1 << (PostgreSQLParser.KW_MINVALUE - 240)) | (1 << (PostgreSQLParser.KW_MODE - 240)) | (1 << (PostgreSQLParser.KW_MONTH - 240)) | (1 << (PostgreSQLParser.KW_MOVE - 240)) | (1 << (PostgreSQLParser.KW_NAME - 240)) | (1 << (PostgreSQLParser.KW_NAMES - 240)) | (1 << (PostgreSQLParser.KW_NEXT - 240)) | (1 << (PostgreSQLParser.KW_NO - 240)) | (1 << (PostgreSQLParser.KW_NOTHING - 240)) | (1 << (PostgreSQLParser.KW_NOTIFY - 240)))) !== 0) || ((((_la - 272)) & ~0x1F) === 0 && ((1 << (_la - 272)) & ((1 << (PostgreSQLParser.KW_NOWAIT - 272)) | (1 << (PostgreSQLParser.KW_NULLS - 272)) | (1 << (PostgreSQLParser.KW_OBJECT - 272)) | (1 << (PostgreSQLParser.KW_OF - 272)) | (1 << (PostgreSQLParser.KW_OFF - 272)) | (1 << (PostgreSQLParser.KW_OIDS - 272)) | (1 << (PostgreSQLParser.KW_OPERATOR - 272)) | (1 << (PostgreSQLParser.KW_OPTION - 272)) | (1 << (PostgreSQLParser.KW_OPTIONS - 272)) | (1 << (PostgreSQLParser.KW_OWNED - 272)) | (1 << (PostgreSQLParser.KW_OWNER - 272)) | (1 << (PostgreSQLParser.KW_PARSER - 272)) | (1 << (PostgreSQLParser.KW_PARTIAL - 272)) | (1 << (PostgreSQLParser.KW_PARTITION - 272)) | (1 << (PostgreSQLParser.KW_PASSING - 272)) | (1 << (PostgreSQLParser.KW_PASSWORD - 272)) | (1 << (PostgreSQLParser.KW_PLANS - 272)) | (1 << (PostgreSQLParser.KW_PRECEDING - 272)) | (1 << (PostgreSQLParser.KW_PREPARE - 272)) | (1 << (PostgreSQLParser.KW_PREPARED - 272)) | (1 << (PostgreSQLParser.KW_PRESERVE - 272)) | (1 << (PostgreSQLParser.KW_PRIOR - 272)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 272)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 272)) | (1 << (PostgreSQLParser.KW_PROGRAM - 272)) | (1 << (PostgreSQLParser.KW_QUOTE - 272)) | (1 << (PostgreSQLParser.KW_RANGE - 272)) | (1 << (PostgreSQLParser.KW_READ - 272)) | (1 << (PostgreSQLParser.KW_REASSIGN - 272)) | (1 << (PostgreSQLParser.KW_RECHECK - 272)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 272)))) !== 0) || ((((_la - 304)) & ~0x1F) === 0 && ((1 << (_la - 304)) & ((1 << (PostgreSQLParser.KW_REF - 304)) | (1 << (PostgreSQLParser.KW_REFRESH - 304)) | (1 << (PostgreSQLParser.KW_REINDEX - 304)) | (1 << (PostgreSQLParser.KW_RELATIVE - 304)) | (1 << (PostgreSQLParser.KW_RELEASE - 304)) | (1 << (PostgreSQLParser.KW_RENAME - 304)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 304)) | (1 << (PostgreSQLParser.KW_REPLACE - 304)) | (1 << (PostgreSQLParser.KW_REPLICA - 304)) | (1 << (PostgreSQLParser.KW_RESET - 304)) | (1 << (PostgreSQLParser.KW_RESTART - 304)) | (1 << (PostgreSQLParser.KW_RESTRICT - 304)) | (1 << (PostgreSQLParser.KW_RETURNS - 304)) | (1 << (PostgreSQLParser.KW_REVOKE - 304)) | (1 << (PostgreSQLParser.KW_ROLE - 304)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 304)) | (1 << (PostgreSQLParser.KW_ROWS - 304)) | (1 << (PostgreSQLParser.KW_RULE - 304)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 304)) | (1 << (PostgreSQLParser.KW_SCHEMA - 304)) | (1 << (PostgreSQLParser.KW_SCROLL - 304)) | (1 << (PostgreSQLParser.KW_SEARCH - 304)) | (1 << (PostgreSQLParser.KW_SECOND - 304)) | (1 << (PostgreSQLParser.KW_SECURITY - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 304)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 304)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 304)) | (1 << (PostgreSQLParser.KW_SERVER - 304)) | (1 << (PostgreSQLParser.KW_SESSION - 304)) | (1 << (PostgreSQLParser.KW_SET - 304)) | (1 << (PostgreSQLParser.KW_SHARE - 304)) | (1 << (PostgreSQLParser.KW_SHOW - 304)))) !== 0) || ((((_la - 336)) & ~0x1F) === 0 && ((1 << (_la - 336)) & ((1 << (PostgreSQLParser.KW_SIMPLE - 336)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 336)) | (1 << (PostgreSQLParser.KW_STABLE - 336)) | (1 << (PostgreSQLParser.KW_STANDALONE - 336)) | (1 << (PostgreSQLParser.KW_START - 336)) | (1 << (PostgreSQLParser.KW_STATEMENT - 336)) | (1 << (PostgreSQLParser.KW_STATISTICS - 336)) | (1 << (PostgreSQLParser.KW_STDIN - 336)) | (1 << (PostgreSQLParser.KW_STDOUT - 336)) | (1 << (PostgreSQLParser.KW_STORAGE - 336)) | (1 << (PostgreSQLParser.KW_STRICT - 336)) | (1 << (PostgreSQLParser.KW_STRIP - 336)) | (1 << (PostgreSQLParser.KW_SYSID - 336)) | (1 << (PostgreSQLParser.KW_SYSTEM - 336)) | (1 << (PostgreSQLParser.KW_TABLES - 336)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 336)) | (1 << (PostgreSQLParser.KW_TEMP - 336)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 336)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 336)) | (1 << (PostgreSQLParser.KW_TEXT - 336)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 336)) | (1 << (PostgreSQLParser.KW_TRIGGER - 336)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 336)) | (1 << (PostgreSQLParser.KW_TRUSTED - 336)) | (1 << (PostgreSQLParser.KW_TYPE - 336)) | (1 << (PostgreSQLParser.KW_TYPES - 336)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 336)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 336)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 336)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 336)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 336)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 336)))) !== 0) || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & ((1 << (PostgreSQLParser.KW_UNTIL - 368)) | (1 << (PostgreSQLParser.KW_UPDATE - 368)) | (1 << (PostgreSQLParser.KW_VACUUM - 368)) | (1 << (PostgreSQLParser.KW_VALID - 368)) | (1 << (PostgreSQLParser.KW_VALIDATE - 368)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 368)) | (1 << (PostgreSQLParser.KW_VARYING - 368)) | (1 << (PostgreSQLParser.KW_VERSION - 368)) | (1 << (PostgreSQLParser.KW_VIEW - 368)) | (1 << (PostgreSQLParser.KW_VOLATILE - 368)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 368)) | (1 << (PostgreSQLParser.KW_WITHOUT - 368)) | (1 << (PostgreSQLParser.KW_WORK - 368)) | (1 << (PostgreSQLParser.KW_WRAPPER - 368)) | (1 << (PostgreSQLParser.KW_WRITE - 368)) | (1 << (PostgreSQLParser.KW_XML - 368)) | (1 << (PostgreSQLParser.KW_YEAR - 368)) | (1 << (PostgreSQLParser.KW_YES - 368)) | (1 << (PostgreSQLParser.KW_ZONE - 368)) | (1 << (PostgreSQLParser.KW_BETWEEN - 368)) | (1 << (PostgreSQLParser.KW_BIGINT - 368)) | (1 << (PostgreSQLParser.KW_BIT - 368)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 368)) | (1 << (PostgreSQLParser.KW_CHAR - 368)) | (1 << (PostgreSQLParser.KW_CHARACTER - 368)) | (1 << (PostgreSQLParser.KW_COALESCE - 368)) | (1 << (PostgreSQLParser.KW_DEC - 368)) | (1 << (PostgreSQLParser.KW_DECIMAL - 368)) | (1 << (PostgreSQLParser.KW_EXISTS - 368)) | (1 << (PostgreSQLParser.KW_EXTRACT - 368)) | (1 << (PostgreSQLParser.KW_FLOAT - 368)) | (1 << (PostgreSQLParser.KW_GREATEST - 368)))) !== 0) || ((((_la - 400)) & ~0x1F) === 0 && ((1 << (_la - 400)) & ((1 << (PostgreSQLParser.KW_INOUT - 400)) | (1 << (PostgreSQLParser.KW_INT - 400)) | (1 << (PostgreSQLParser.KW_INTEGER - 400)) | (1 << (PostgreSQLParser.KW_INTERVAL - 400)) | (1 << (PostgreSQLParser.KW_LEAST - 400)) | (1 << (PostgreSQLParser.KW_NATIONAL - 400)) | (1 << (PostgreSQLParser.KW_NCHAR - 400)) | (1 << (PostgreSQLParser.KW_NONE - 400)) | (1 << (PostgreSQLParser.KW_NULLIF - 400)) | (1 << (PostgreSQLParser.KW_NUMERIC - 400)) | (1 << (PostgreSQLParser.KW_OVERLAY - 400)) | (1 << (PostgreSQLParser.KW_POSITION - 400)) | (1 << (PostgreSQLParser.KW_PRECISION - 400)) | (1 << (PostgreSQLParser.KW_REAL - 400)) | (1 << (PostgreSQLParser.KW_ROW - 400)) | (1 << (PostgreSQLParser.KW_SETOF - 400)) | (1 << (PostgreSQLParser.KW_SMALLINT - 400)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 400)) | (1 << (PostgreSQLParser.KW_TIME - 400)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 400)) | (1 << (PostgreSQLParser.KW_TREAT - 400)) | (1 << (PostgreSQLParser.KW_TRIM - 400)) | (1 << (PostgreSQLParser.KW_VALUES - 400)) | (1 << (PostgreSQLParser.KW_VARCHAR - 400)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 400)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 400)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 400)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 400)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 400)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 400)) | (1 << (PostgreSQLParser.KW_XMLPI - 400)) | (1 << (PostgreSQLParser.KW_XMLROOT - 400)))) !== 0) || ((((_la - 432)) & ~0x1F) === 0 && ((1 << (_la - 432)) & ((1 << (PostgreSQLParser.KW_XMLSERIALIZE - 432)) | (1 << (PostgreSQLParser.KW_CALL - 432)) | (1 << (PostgreSQLParser.KW_CURRENT - 432)) | (1 << (PostgreSQLParser.KW_ATTACH - 432)) | (1 << (PostgreSQLParser.KW_DETACH - 432)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 432)) | (1 << (PostgreSQLParser.KW_GENERATED - 432)) | (1 << (PostgreSQLParser.KW_LOGGED - 432)) | (1 << (PostgreSQLParser.KW_STORED - 432)) | (1 << (PostgreSQLParser.KW_INCLUDE - 432)) | (1 << (PostgreSQLParser.KW_ROUTINE - 432)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 432)) | (1 << (PostgreSQLParser.KW_IMPORT - 432)) | (1 << (PostgreSQLParser.KW_POLICY - 432)) | (1 << (PostgreSQLParser.KW_METHOD - 432)) | (1 << (PostgreSQLParser.KW_REFERENCING - 432)) | (1 << (PostgreSQLParser.KW_NEW - 432)) | (1 << (PostgreSQLParser.KW_OLD - 432)) | (1 << (PostgreSQLParser.KW_VALUE - 432)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 432)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 432)) | (1 << (PostgreSQLParser.KW_OUT - 432)) | (1 << (PostgreSQLParser.KW_ROUTINES - 432)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 432)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 432)) | (1 << (PostgreSQLParser.KW_INPUT - 432)) | (1 << (PostgreSQLParser.KW_SUPPORT - 432)) | (1 << (PostgreSQLParser.KW_PARALLEL - 432)) | (1 << (PostgreSQLParser.KW_SQL - 432)) | (1 << (PostgreSQLParser.KW_DEPENDS - 432)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 432)))) !== 0) || ((((_la - 464)) & ~0x1F) === 0 && ((1 << (_la - 464)) & ((1 << (PostgreSQLParser.KW_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_SKIP - 464)) | (1 << (PostgreSQLParser.KW_LOCKED - 464)) | (1 << (PostgreSQLParser.KW_TIES - 464)) | (1 << (PostgreSQLParser.KW_ROLLUP - 464)) | (1 << (PostgreSQLParser.KW_CUBE - 464)) | (1 << (PostgreSQLParser.KW_GROUPING - 464)) | (1 << (PostgreSQLParser.KW_SETS - 464)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 464)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 464)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 464)) | (1 << (PostgreSQLParser.KW_COLUMNS - 464)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 464)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 464)) | (1 << (PostgreSQLParser.KW_WITHIN - 464)) | (1 << (PostgreSQLParser.KW_FILTER - 464)) | (1 << (PostgreSQLParser.KW_GROUPS - 464)) | (1 << (PostgreSQLParser.KW_OTHERS - 464)) | (1 << (PostgreSQLParser.KW_NFC - 464)) | (1 << (PostgreSQLParser.KW_NFD - 464)) | (1 << (PostgreSQLParser.KW_NFKC - 464)) | (1 << (PostgreSQLParser.KW_NFKD - 464)) | (1 << (PostgreSQLParser.KW_UESCAPE - 464)) | (1 << (PostgreSQLParser.KW_VIEWS - 464)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 464)) | (1 << (PostgreSQLParser.KW_DUMP - 464)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 464)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 464)) | (1 << (PostgreSQLParser.KW_ERROR - 464)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 464)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 464)))) !== 0) || ((((_la - 496)) & ~0x1F) === 0 && ((1 << (_la - 496)) & ((1 << (PostgreSQLParser.KW_ALIAS - 496)) | (1 << (PostgreSQLParser.KW_CONSTANT - 496)) | (1 << (PostgreSQLParser.KW_PERFORM - 496)) | (1 << (PostgreSQLParser.KW_GET - 496)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 496)) | (1 << (PostgreSQLParser.KW_STACKED - 496)) | (1 << (PostgreSQLParser.KW_ELSIF - 496)) | (1 << (PostgreSQLParser.KW_REVERSE - 496)) | (1 << (PostgreSQLParser.KW_SLICE - 496)) | (1 << (PostgreSQLParser.KW_EXIT - 496)) | (1 << (PostgreSQLParser.KW_RETURN - 496)) | (1 << (PostgreSQLParser.KW_QUERY - 496)) | (1 << (PostgreSQLParser.KW_RAISE - 496)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 496)) | (1 << (PostgreSQLParser.KW_DEBUG - 496)) | (1 << (PostgreSQLParser.KW_LOG - 496)) | (1 << (PostgreSQLParser.KW_INFO - 496)) | (1 << (PostgreSQLParser.KW_NOTICE - 496)) | (1 << (PostgreSQLParser.KW_WARNING - 496)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 496)) | (1 << (PostgreSQLParser.KW_ASSERT - 496)) | (1 << (PostgreSQLParser.KW_OPEN - 496)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 8472;
				this.explain_option_arg();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public explain_option_name(): Explain_option_nameContext {
		let _localctx: Explain_option_nameContext = new Explain_option_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 936, PostgreSQLParser.RULE_explain_option_name);
		try {
			this.state = 8477;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8475;
				this.nonreservedword();
				}
				break;
			case PostgreSQLParser.KW_ANALYSE:
			case PostgreSQLParser.KW_ANALYZE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8476;
				this.analyze_keyword();
				}
				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 explain_option_arg(): Explain_option_argContext {
		let _localctx: Explain_option_argContext = new Explain_option_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 938, PostgreSQLParser.RULE_explain_option_arg);
		try {
			this.state = 8481;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8479;
				this.opt_boolean_or_string();
				}
				break;
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8480;
				this.numericonly();
				}
				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 preparestmt(): PreparestmtContext {
		let _localctx: PreparestmtContext = new PreparestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 940, PostgreSQLParser.RULE_preparestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8483;
			this.match(PostgreSQLParser.KW_PREPARE);
			this.state = 8484;
			this.name();
			this.state = 8486;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 8485;
				this.prep_type_clause();
				}
			}

			this.state = 8488;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 8489;
			this.preparablestmt();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public prep_type_clause(): Prep_type_clauseContext {
		let _localctx: Prep_type_clauseContext = new Prep_type_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 942, PostgreSQLParser.RULE_prep_type_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8491;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 8492;
			this.type_list();
			this.state = 8493;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public preparablestmt(): PreparablestmtContext {
		let _localctx: PreparablestmtContext = new PreparablestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 944, PostgreSQLParser.RULE_preparablestmt);
		try {
			this.state = 8499;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 786, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8495;
				this.selectstmt();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8498;
				this.deletestmt();
				}
				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 executestmt(): ExecutestmtContext {
		let _localctx: ExecutestmtContext = new ExecutestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 946, PostgreSQLParser.RULE_executestmt);
		let _la: number;
		try {
			this.state = 8524;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_EXECUTE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8501;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 8502;
				this.name();
				this.state = 8504;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 787, this._ctx) ) {
				case 1:
					{
					this.state = 8503;
					this.execute_param_clause();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_CREATE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8506;
				this.match(PostgreSQLParser.KW_CREATE);
				this.state = 8508;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & ((1 << (PostgreSQLParser.KW_TEMP - 352)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 352)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 352)))) !== 0)) {
					{
					this.state = 8507;
					this.opttemp();
					}
				}

				this.state = 8510;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 8512;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 789, this._ctx) ) {
				case 1:
					{
					this.state = 8511;
					this.opt_if_not_exists();
					}
					break;
				}
				this.state = 8514;
				this.create_as_target();
				this.state = 8515;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 8516;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 8517;
				this.name();
				this.state = 8519;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 790, this._ctx) ) {
				case 1:
					{
					this.state = 8518;
					this.execute_param_clause();
					}
					break;
				}
				this.state = 8522;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 791, this._ctx) ) {
				case 1:
					{
					this.state = 8521;
					this.opt_with_data();
					}
					break;
				}
				}
				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 execute_param_clause(): Execute_param_clauseContext {
		let _localctx: Execute_param_clauseContext = new Execute_param_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 948, PostgreSQLParser.RULE_execute_param_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8526;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 8527;
			this.expr_list();
			this.state = 8528;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public deallocatestmt(): DeallocatestmtContext {
		let _localctx: DeallocatestmtContext = new DeallocatestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 950, PostgreSQLParser.RULE_deallocatestmt);
		try {
			this.state = 8540;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 793, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8530;
				this.match(PostgreSQLParser.KW_DEALLOCATE);
				this.state = 8531;
				this.name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8532;
				this.match(PostgreSQLParser.KW_DEALLOCATE);
				this.state = 8533;
				this.match(PostgreSQLParser.KW_PREPARE);
				this.state = 8534;
				this.name();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8535;
				this.match(PostgreSQLParser.KW_DEALLOCATE);
				this.state = 8536;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8537;
				this.match(PostgreSQLParser.KW_DEALLOCATE);
				this.state = 8538;
				this.match(PostgreSQLParser.KW_PREPARE);
				this.state = 8539;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 insertstmt(): InsertstmtContext {
		let _localctx: InsertstmtContext = new InsertstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 952, PostgreSQLParser.RULE_insertstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8543;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 8542;
				this.opt_with_clause();
				}
			}

			this.state = 8545;
			this.match(PostgreSQLParser.KW_INSERT);
			this.state = 8546;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 8547;
			this.insert_target();
			this.state = 8548;
			this.insert_rest();
			this.state = 8550;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ON) {
				{
				this.state = 8549;
				this.opt_on_conflict();
				}
			}

			this.state = 8553;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_RETURNING) {
				{
				this.state = 8552;
				this.returning_clause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public insert_target(): Insert_targetContext {
		let _localctx: Insert_targetContext = new Insert_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 954, PostgreSQLParser.RULE_insert_target);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8555;
			this.table_name();
			this.state = 8558;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 8556;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 8557;
				this.colid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public insert_rest(): Insert_restContext {
		let _localctx: Insert_restContext = new Insert_restContext(this._ctx, this.state);
		this.enterRule(_localctx, 956, PostgreSQLParser.RULE_insert_rest);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8564;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 798, this._ctx) ) {
			case 1:
				{
				this.state = 8560;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8561;
				this.insert_column_list();
				this.state = 8562;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			}
			this.state = 8570;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OVERRIDING) {
				{
				this.state = 8566;
				this.match(PostgreSQLParser.KW_OVERRIDING);
				this.state = 8567;
				this.override_kind();
				this.state = 8568;
				this.match(PostgreSQLParser.KW_VALUE);
				}
			}

			this.state = 8574;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 800, this._ctx) ) {
			case 1:
				{
				this.state = 8572;
				this.default_values_or_values();
				}
				break;

			case 2:
				{
				this.state = 8573;
				this.selectstmt();
				}
				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 override_kind(): Override_kindContext {
		let _localctx: Override_kindContext = new Override_kindContext(this._ctx, this.state);
		this.enterRule(_localctx, 958, PostgreSQLParser.RULE_override_kind);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8576;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_USER || _la === PostgreSQLParser.KW_SYSTEM)) {
			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 insert_column_list(): Insert_column_listContext {
		let _localctx: Insert_column_listContext = new Insert_column_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 960, PostgreSQLParser.RULE_insert_column_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8578;
			this.insert_column_item();
			this.state = 8583;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8579;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8580;
				this.insert_column_item();
				}
				}
				this.state = 8585;
				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 insert_column_item(): Insert_column_itemContext {
		let _localctx: Insert_column_itemContext = new Insert_column_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 962, PostgreSQLParser.RULE_insert_column_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8586;
			this.column_name();
			this.state = 8587;
			this.opt_indirection();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_on_conflict(): Opt_on_conflictContext {
		let _localctx: Opt_on_conflictContext = new Opt_on_conflictContext(this._ctx, this.state);
		this.enterRule(_localctx, 964, PostgreSQLParser.RULE_opt_on_conflict);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8589;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 8590;
			this.match(PostgreSQLParser.KW_CONFLICT);
			this.state = 8592;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN || _la === PostgreSQLParser.KW_ON) {
				{
				this.state = 8591;
				this.opt_conf_expr();
				}
			}

			this.state = 8594;
			this.match(PostgreSQLParser.KW_DO);
			this.state = 8602;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_UPDATE:
				{
				this.state = 8595;
				this.match(PostgreSQLParser.KW_UPDATE);
				this.state = 8596;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 8597;
				this.set_clause_list();
				this.state = 8599;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 8598;
					this.where_clause();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_NOTHING:
				{
				this.state = 8601;
				this.match(PostgreSQLParser.KW_NOTHING);
				}
				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 opt_conf_expr(): Opt_conf_exprContext {
		let _localctx: Opt_conf_exprContext = new Opt_conf_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 966, PostgreSQLParser.RULE_opt_conf_expr);
		let _la: number;
		try {
			this.state = 8613;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8604;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8605;
				this.index_params();
				this.state = 8606;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 8608;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 8607;
					this.where_clause();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_ON:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8610;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 8611;
				this.match(PostgreSQLParser.KW_CONSTRAINT);
				this.state = 8612;
				this.name();
				}
				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 returning_clause(): Returning_clauseContext {
		let _localctx: Returning_clauseContext = new Returning_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 968, PostgreSQLParser.RULE_returning_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8615;
			this.match(PostgreSQLParser.KW_RETURNING);
			this.state = 8616;
			this.target_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public deletestmt(): DeletestmtContext {
		let _localctx: DeletestmtContext = new DeletestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 970, PostgreSQLParser.RULE_deletestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8619;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 8618;
				this.opt_with_clause();
				}
			}

			this.state = 8621;
			this.match(PostgreSQLParser.KW_DELETE);
			this.state = 8622;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 8623;
			this.relation_expr_opt_alias();
			this.state = 8625;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 8624;
				this.using_clause();
				}
			}

			this.state = 8628;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHERE) {
				{
				this.state = 8627;
				this.where_or_current_clause();
				}
			}

			this.state = 8631;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_RETURNING) {
				{
				this.state = 8630;
				this.returning_clause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public using_clause(): Using_clauseContext {
		let _localctx: Using_clauseContext = new Using_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 972, PostgreSQLParser.RULE_using_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8633;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 8634;
			this.from_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lockstmt(): LockstmtContext {
		let _localctx: LockstmtContext = new LockstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 974, PostgreSQLParser.RULE_lockstmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8636;
			this.match(PostgreSQLParser.KW_LOCK);
			this.state = 8638;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 811, this._ctx) ) {
			case 1:
				{
				this.state = 8637;
				this.opt_table();
				}
				break;
			}
			this.state = 8640;
			this.relation_expr_list();
			this.state = 8642;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_IN) {
				{
				this.state = 8641;
				this.opt_lock();
				}
			}

			this.state = 8645;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 813, this._ctx) ) {
			case 1:
				{
				this.state = 8644;
				this.opt_nowait();
				}
				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 opt_lock(): Opt_lockContext {
		let _localctx: Opt_lockContext = new Opt_lockContext(this._ctx, this.state);
		this.enterRule(_localctx, 976, PostgreSQLParser.RULE_opt_lock);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8647;
			this.match(PostgreSQLParser.KW_IN);
			this.state = 8648;
			this.lock_type();
			this.state = 8649;
			this.match(PostgreSQLParser.KW_MODE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public lock_type(): Lock_typeContext {
		let _localctx: Lock_typeContext = new Lock_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 978, PostgreSQLParser.RULE_lock_type);
		let _la: number;
		try {
			this.state = 8663;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ACCESS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8651;
				this.match(PostgreSQLParser.KW_ACCESS);
				this.state = 8652;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_EXCLUSIVE || _la === PostgreSQLParser.KW_SHARE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_ROW:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8653;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 8654;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_EXCLUSIVE || _la === PostgreSQLParser.KW_SHARE)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				}
				break;
			case PostgreSQLParser.KW_SHARE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8655;
				this.match(PostgreSQLParser.KW_SHARE);
				this.state = 8660;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_UPDATE:
					{
					this.state = 8656;
					this.match(PostgreSQLParser.KW_UPDATE);
					this.state = 8657;
					this.match(PostgreSQLParser.KW_EXCLUSIVE);
					}
					break;
				case PostgreSQLParser.KW_ROW:
					{
					this.state = 8658;
					this.match(PostgreSQLParser.KW_ROW);
					this.state = 8659;
					this.match(PostgreSQLParser.KW_EXCLUSIVE);
					}
					break;
				case PostgreSQLParser.KW_MODE:
					break;
				default:
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_EXCLUSIVE:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8662;
				this.match(PostgreSQLParser.KW_EXCLUSIVE);
				}
				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 opt_nowait(): Opt_nowaitContext {
		let _localctx: Opt_nowaitContext = new Opt_nowaitContext(this._ctx, this.state);
		this.enterRule(_localctx, 980, PostgreSQLParser.RULE_opt_nowait);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8665;
			this.match(PostgreSQLParser.KW_NOWAIT);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_nowait_or_skip(): Opt_nowait_or_skipContext {
		let _localctx: Opt_nowait_or_skipContext = new Opt_nowait_or_skipContext(this._ctx, this.state);
		this.enterRule(_localctx, 982, PostgreSQLParser.RULE_opt_nowait_or_skip);
		try {
			this.state = 8670;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_NOWAIT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8667;
				this.match(PostgreSQLParser.KW_NOWAIT);
				}
				break;
			case PostgreSQLParser.KW_SKIP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8668;
				this.match(PostgreSQLParser.KW_SKIP);
				this.state = 8669;
				this.match(PostgreSQLParser.KW_LOCKED);
				}
				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 updatestmt(): UpdatestmtContext {
		let _localctx: UpdatestmtContext = new UpdatestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 984, PostgreSQLParser.RULE_updatestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8673;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 8672;
				this.opt_with_clause();
				}
			}

			this.state = 8675;
			this.match(PostgreSQLParser.KW_UPDATE);
			this.state = 8676;
			this.relation_expr_opt_alias();
			this.state = 8677;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 8678;
			this.set_clause_list();
			this.state = 8680;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FROM) {
				{
				this.state = 8679;
				this.from_clause();
				}
			}

			this.state = 8683;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHERE) {
				{
				this.state = 8682;
				this.where_or_current_clause();
				}
			}

			this.state = 8686;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_RETURNING) {
				{
				this.state = 8685;
				this.returning_clause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public set_clause_list(): Set_clause_listContext {
		let _localctx: Set_clause_listContext = new Set_clause_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 986, PostgreSQLParser.RULE_set_clause_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8688;
			this.set_clause();
			this.state = 8693;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8689;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8690;
				this.set_clause();
				}
				}
				this.state = 8695;
				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 set_clause(): Set_clauseContext {
		let _localctx: Set_clauseContext = new Set_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 988, PostgreSQLParser.RULE_set_clause);
		try {
			this.state = 8714;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8696;
				this.set_target();
				this.state = 8697;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 8698;
				this.a_expr();
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8700;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8701;
				this.set_target_list();
				this.state = 8702;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 8703;
				this.match(PostgreSQLParser.EQUAL);
				this.state = 8712;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 823, this._ctx) ) {
				case 1:
					{
					this.state = 8705;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 822, this._ctx) ) {
					case 1:
						{
						this.state = 8704;
						this.match(PostgreSQLParser.KW_ROW);
						}
						break;
					}
					this.state = 8707;
					this.a_expr();
					}
					break;

				case 2:
					{
					this.state = 8708;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 8709;
					this.select_clause();
					this.state = 8710;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				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 set_target(): Set_targetContext {
		let _localctx: Set_targetContext = new Set_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 990, PostgreSQLParser.RULE_set_target);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8716;
			this.column_name();
			this.state = 8717;
			this.opt_indirection();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public set_target_list(): Set_target_listContext {
		let _localctx: Set_target_listContext = new Set_target_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 992, PostgreSQLParser.RULE_set_target_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8719;
			this.set_target();
			this.state = 8724;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8720;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8721;
				this.set_target();
				}
				}
				this.state = 8726;
				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 declarecursorstmt(): DeclarecursorstmtContext {
		let _localctx: DeclarecursorstmtContext = new DeclarecursorstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 994, PostgreSQLParser.RULE_declarecursorstmt);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8727;
			this.match(PostgreSQLParser.KW_DECLARE);
			this.state = 8728;
			this.cursor_name();
			this.state = 8729;
			this.cursor_options();
			this.state = 8730;
			this.match(PostgreSQLParser.KW_CURSOR);
			this.state = 8731;
			this.opt_hold();
			this.state = 8732;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 8733;
			this.selectstmt();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cursor_name(): Cursor_nameContext {
		let _localctx: Cursor_nameContext = new Cursor_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 996, PostgreSQLParser.RULE_cursor_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8735;
			this.name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cursor_options(): Cursor_optionsContext {
		let _localctx: Cursor_optionsContext = new Cursor_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 998, PostgreSQLParser.RULE_cursor_options);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8744;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_BINARY || _la === PostgreSQLParser.KW_INSENSITIVE || _la === PostgreSQLParser.KW_NO || _la === PostgreSQLParser.KW_SCROLL) {
				{
				this.state = 8742;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_NO:
					{
					this.state = 8737;
					this.match(PostgreSQLParser.KW_NO);
					this.state = 8738;
					this.match(PostgreSQLParser.KW_SCROLL);
					}
					break;
				case PostgreSQLParser.KW_SCROLL:
					{
					this.state = 8739;
					this.match(PostgreSQLParser.KW_SCROLL);
					}
					break;
				case PostgreSQLParser.KW_BINARY:
					{
					this.state = 8740;
					this.match(PostgreSQLParser.KW_BINARY);
					}
					break;
				case PostgreSQLParser.KW_INSENSITIVE:
					{
					this.state = 8741;
					this.match(PostgreSQLParser.KW_INSENSITIVE);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				this.state = 8746;
				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 opt_hold(): Opt_holdContext {
		let _localctx: Opt_holdContext = new Opt_holdContext(this._ctx, this.state);
		this.enterRule(_localctx, 1000, PostgreSQLParser.RULE_opt_hold);
		try {
			this.state = 8752;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FOR:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_WITH:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8748;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 8749;
				this.match(PostgreSQLParser.KW_HOLD);
				}
				break;
			case PostgreSQLParser.KW_WITHOUT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8750;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 8751;
				this.match(PostgreSQLParser.KW_HOLD);
				}
				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 selectstmt(): SelectstmtContext {
		let _localctx: SelectstmtContext = new SelectstmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 1002, PostgreSQLParser.RULE_selectstmt);
		try {
			this.state = 8756;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 829, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8754;
				this.select_no_parens();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8755;
				this.select_with_parens();
				}
				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 select_with_parens(): Select_with_parensContext {
		let _localctx: Select_with_parensContext = new Select_with_parensContext(this._ctx, this.state);
		this.enterRule(_localctx, 1004, PostgreSQLParser.RULE_select_with_parens);
		try {
			this.state = 8766;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 830, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8758;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8759;
				this.select_no_parens();
				this.state = 8760;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8762;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8763;
				this.select_with_parens();
				this.state = 8764;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 select_no_parens(): Select_no_parensContext {
		let _localctx: Select_no_parensContext = new Select_no_parensContext(this._ctx, this.state);
		this.enterRule(_localctx, 1006, PostgreSQLParser.RULE_select_no_parens);
		let _la: number;
		try {
			this.state = 8797;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.KW_SELECT:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_VALUES:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8768;
				this.select_clause();
				this.state = 8770;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ORDER) {
					{
					this.state = 8769;
					this.opt_sort_clause();
					}
				}

				this.state = 8780;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 834, this._ctx) ) {
				case 1:
					{
					this.state = 8772;
					this.for_locking_clause();
					this.state = 8774;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 832, this._ctx) ) {
					case 1:
						{
						this.state = 8773;
						this.opt_select_limit();
						}
						break;
					}
					}
					break;

				case 2:
					{
					this.state = 8776;
					this.select_limit();
					this.state = 8778;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_FOR) {
						{
						this.state = 8777;
						this.opt_for_locking_clause();
						}
					}

					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_WITH:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8782;
				this.with_clause();
				this.state = 8783;
				this.select_clause();
				this.state = 8785;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ORDER) {
					{
					this.state = 8784;
					this.opt_sort_clause();
					}
				}

				this.state = 8795;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 838, this._ctx) ) {
				case 1:
					{
					this.state = 8787;
					this.for_locking_clause();
					this.state = 8789;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 836, this._ctx) ) {
					case 1:
						{
						this.state = 8788;
						this.opt_select_limit();
						}
						break;
					}
					}
					break;

				case 2:
					{
					this.state = 8791;
					this.select_limit();
					this.state = 8793;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_FOR) {
						{
						this.state = 8792;
						this.opt_for_locking_clause();
						}
					}

					}
					break;
				}
				}
				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 select_clause(): Select_clauseContext {
		let _localctx: Select_clauseContext = new Select_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1008, PostgreSQLParser.RULE_select_clause);
		try {
			this.state = 8801;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 840, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8799;
				this.simple_select();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8800;
				this.select_with_parens();
				}
				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 simple_select(): Simple_selectContext {
		let _localctx: Simple_selectContext = new Simple_selectContext(this._ctx, this.state);
		this.enterRule(_localctx, 1010, PostgreSQLParser.RULE_simple_select);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8848;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SELECT:
				{
				this.state = 8803;
				this.match(PostgreSQLParser.KW_SELECT);
				this.state = 8819;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 846, this._ctx) ) {
				case 1:
					{
					this.state = 8805;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_ALL) {
						{
						this.state = 8804;
						this.opt_all_clause();
						}
					}

					this.state = 8808;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 842, this._ctx) ) {
					case 1:
						{
						this.state = 8807;
						this.into_clause();
						}
						break;
					}
					this.state = 8811;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 843, this._ctx) ) {
					case 1:
						{
						this.state = 8810;
						this.opt_target_list();
						}
						break;
					}
					}
					break;

				case 2:
					{
					this.state = 8814;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_DISTINCT) {
						{
						this.state = 8813;
						this.distinct_clause();
						}
					}

					this.state = 8817;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 845, this._ctx) ) {
					case 1:
						{
						this.state = 8816;
						this.target_list();
						}
						break;
					}
					}
					break;
				}
				this.state = 8822;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 847, this._ctx) ) {
				case 1:
					{
					this.state = 8821;
					this.into_clause();
					}
					break;
				}
				this.state = 8825;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_FROM) {
					{
					this.state = 8824;
					this.from_clause();
					}
				}

				this.state = 8828;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 8827;
					this.where_clause();
					}
				}

				this.state = 8831;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_GROUP) {
					{
					this.state = 8830;
					this.group_clause();
					}
				}

				this.state = 8834;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_HAVING) {
					{
					this.state = 8833;
					this.having_clause();
					}
				}

				this.state = 8837;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 852, this._ctx) ) {
				case 1:
					{
					this.state = 8836;
					this.window_clause();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_VALUES:
				{
				this.state = 8839;
				this.values_clause();
				}
				break;
			case PostgreSQLParser.KW_TABLE:
				{
				this.state = 8840;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 8841;
				this.relation_expr();
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				{
				this.state = 8842;
				this.select_with_parens();
				this.state = 8843;
				this.set_operator_with_all_or_distinct();
				this.state = 8846;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 853, this._ctx) ) {
				case 1:
					{
					this.state = 8844;
					this.simple_select();
					}
					break;

				case 2:
					{
					this.state = 8845;
					this.select_with_parens();
					}
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 8857;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 856, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 8850;
					this.set_operator_with_all_or_distinct();
					this.state = 8853;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 855, this._ctx) ) {
					case 1:
						{
						this.state = 8851;
						this.simple_select();
						}
						break;

					case 2:
						{
						this.state = 8852;
						this.select_with_parens();
						}
						break;
					}
					}
					}
				}
				this.state = 8859;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 856, 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 set_operator(): Set_operatorContext {
		let _localctx: Set_operatorContext = new Set_operatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 1012, PostgreSQLParser.RULE_set_operator);
		try {
			this.state = 8863;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_UNION:
				_localctx = new UnionContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8860;
				this.match(PostgreSQLParser.KW_UNION);
				}
				break;
			case PostgreSQLParser.KW_INTERSECT:
				_localctx = new IntersectContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8861;
				this.match(PostgreSQLParser.KW_INTERSECT);
				}
				break;
			case PostgreSQLParser.KW_EXCEPT:
				_localctx = new ExceptContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8862;
				this.match(PostgreSQLParser.KW_EXCEPT);
				}
				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 set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext {
		let _localctx: Set_operator_with_all_or_distinctContext = new Set_operator_with_all_or_distinctContext(this._ctx, this.state);
		this.enterRule(_localctx, 1014, PostgreSQLParser.RULE_set_operator_with_all_or_distinct);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8865;
			this.set_operator();
			this.state = 8867;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_DISTINCT) {
				{
				this.state = 8866;
				this.all_or_distinct();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public with_clause(): With_clauseContext {
		let _localctx: With_clauseContext = new With_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1016, PostgreSQLParser.RULE_with_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8869;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 8871;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 859, this._ctx) ) {
			case 1:
				{
				this.state = 8870;
				this.match(PostgreSQLParser.KW_RECURSIVE);
				}
				break;
			}
			this.state = 8873;
			this.cte_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cte_list(): Cte_listContext {
		let _localctx: Cte_listContext = new Cte_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1018, PostgreSQLParser.RULE_cte_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8875;
			this.common_table_expr();
			this.state = 8880;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 860, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 8876;
					this.match(PostgreSQLParser.COMMA);
					this.state = 8877;
					this.common_table_expr();
					}
					}
				}
				this.state = 8882;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 860, 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 common_table_expr(): Common_table_exprContext {
		let _localctx: Common_table_exprContext = new Common_table_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1020, PostgreSQLParser.RULE_common_table_expr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8883;
			this.name();
			this.state = 8885;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 8884;
				this.opt_name_list();
				}
			}

			this.state = 8887;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 8889;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_NOT || _la === PostgreSQLParser.KW_MATERIALIZED) {
				{
				this.state = 8888;
				this.opt_materialized();
				}
			}

			this.state = 8891;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 8892;
			this.preparablestmt();
			this.state = 8893;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			this.state = 8895;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 863, this._ctx) ) {
			case 1:
				{
				this.state = 8894;
				this.search_cluase();
				}
				break;
			}
			this.state = 8898;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 864, this._ctx) ) {
			case 1:
				{
				this.state = 8897;
				this.cycle_cluase();
				}
				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 search_cluase(): Search_cluaseContext {
		let _localctx: Search_cluaseContext = new Search_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1022, PostgreSQLParser.RULE_search_cluase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8900;
			this.match(PostgreSQLParser.KW_SEARCH);
			this.state = 8901;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_BREADTH || _la === PostgreSQLParser.KW_DEPTH)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 8902;
			this.match(PostgreSQLParser.KW_FIRST);
			this.state = 8903;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 8904;
			this.columnlist();
			this.state = 8905;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 8906;
			this.column_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cycle_cluase(): Cycle_cluaseContext {
		let _localctx: Cycle_cluaseContext = new Cycle_cluaseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1024, PostgreSQLParser.RULE_cycle_cluase);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8908;
			this.match(PostgreSQLParser.KW_CYCLE);
			this.state = 8909;
			this.columnlist();
			this.state = 8910;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 8911;
			this.column_name();
			this.state = 8917;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_TO) {
				{
				this.state = 8912;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 8913;
				this.name();
				this.state = 8914;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 8915;
				this.name();
				}
			}

			this.state = 8919;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 8920;
			this.column_name();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_materialized(): Opt_materializedContext {
		let _localctx: Opt_materializedContext = new Opt_materializedContext(this._ctx, this.state);
		this.enterRule(_localctx, 1026, PostgreSQLParser.RULE_opt_materialized);
		try {
			this.state = 8925;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_MATERIALIZED:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8922;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				}
				break;
			case PostgreSQLParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8923;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 8924;
				this.match(PostgreSQLParser.KW_MATERIALIZED);
				}
				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 opt_with_clause(): Opt_with_clauseContext {
		let _localctx: Opt_with_clauseContext = new Opt_with_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1028, PostgreSQLParser.RULE_opt_with_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8927;
			this.with_clause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public into_clause(): Into_clauseContext {
		let _localctx: Into_clauseContext = new Into_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1030, PostgreSQLParser.RULE_into_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8929;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 8934;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 867, this._ctx) ) {
			case 1:
				{
				this.state = 8930;
				this.opt_strict();
				this.state = 8931;
				this.opttempTableName();
				}
				break;

			case 2:
				{
				this.state = 8933;
				this.into_target();
				}
				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 opt_strict(): Opt_strictContext {
		let _localctx: Opt_strictContext = new Opt_strictContext(this._ctx, this.state);
		this.enterRule(_localctx, 1032, PostgreSQLParser.RULE_opt_strict);
		try {
			this.state = 8938;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 868, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8937;
				this.match(PostgreSQLParser.KW_STRICT);
				}
				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 opttempTableName(): OpttempTableNameContext {
		let _localctx: OpttempTableNameContext = new OpttempTableNameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1034, PostgreSQLParser.RULE_opttempTableName);
		let _la: number;
		try {
			this.state = 8956;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 872, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8941;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL) {
					{
					this.state = 8940;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.KW_GLOBAL || _la === PostgreSQLParser.KW_LOCAL)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

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

				this.state = 8943;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_TEMP || _la === PostgreSQLParser.KW_TEMPORARY)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 8945;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 870, this._ctx) ) {
				case 1:
					{
					this.state = 8944;
					this.opt_table();
					}
					break;
				}
				this.state = 8947;
				this.table_name_create();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8948;
				this.match(PostgreSQLParser.KW_UNLOGGED);
				this.state = 8950;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 871, this._ctx) ) {
				case 1:
					{
					this.state = 8949;
					this.opt_table();
					}
					break;
				}
				this.state = 8952;
				this.table_name_create();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 8953;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 8954;
				this.table_name_create();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 8955;
				this.table_name_create();
				}
				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 opt_table(): Opt_tableContext {
		let _localctx: Opt_tableContext = new Opt_tableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1036, PostgreSQLParser.RULE_opt_table);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8958;
			this.match(PostgreSQLParser.KW_TABLE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public all_or_distinct(): All_or_distinctContext {
		let _localctx: All_or_distinctContext = new All_or_distinctContext(this._ctx, this.state);
		this.enterRule(_localctx, 1038, PostgreSQLParser.RULE_all_or_distinct);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8960;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_DISTINCT)) {
			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 distinct_clause(): Distinct_clauseContext {
		let _localctx: Distinct_clauseContext = new Distinct_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1040, PostgreSQLParser.RULE_distinct_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8962;
			this.match(PostgreSQLParser.KW_DISTINCT);
			this.state = 8968;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 873, this._ctx) ) {
			case 1:
				{
				this.state = 8963;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 8964;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 8965;
				this.expr_list();
				this.state = 8966;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 opt_all_clause(): Opt_all_clauseContext {
		let _localctx: Opt_all_clauseContext = new Opt_all_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1042, PostgreSQLParser.RULE_opt_all_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8970;
			this.match(PostgreSQLParser.KW_ALL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_sort_clause(): Opt_sort_clauseContext {
		let _localctx: Opt_sort_clauseContext = new Opt_sort_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1044, PostgreSQLParser.RULE_opt_sort_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8972;
			this.sort_clause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sort_clause(): Sort_clauseContext {
		let _localctx: Sort_clauseContext = new Sort_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1046, PostgreSQLParser.RULE_sort_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8974;
			this.match(PostgreSQLParser.KW_ORDER);
			this.state = 8975;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 8976;
			this.sortby_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sortby_list(): Sortby_listContext {
		let _localctx: Sortby_listContext = new Sortby_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1048, PostgreSQLParser.RULE_sortby_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8978;
			this.sortby();
			this.state = 8983;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 8979;
				this.match(PostgreSQLParser.COMMA);
				this.state = 8980;
				this.sortby();
				}
				}
				this.state = 8985;
				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 sortby(): SortbyContext {
		let _localctx: SortbyContext = new SortbyContext(this._ctx, this.state);
		this.enterRule(_localctx, 1050, PostgreSQLParser.RULE_sortby);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 8986;
			this.column_expr_noparen();
			this.state = 8990;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_USING:
				{
				this.state = 8987;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 8988;
				this.qual_all_op();
				}
				break;
			case PostgreSQLParser.KW_ASC:
			case PostgreSQLParser.KW_DESC:
				{
				this.state = 8989;
				this.opt_asc_desc();
				}
				break;
			case PostgreSQLParser.EOF:
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.CLOSE_PAREN:
			case PostgreSQLParser.COMMA:
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.KW_ANALYSE:
			case PostgreSQLParser.KW_ANALYZE:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_AS:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CREATE:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_FOR:
			case PostgreSQLParser.KW_GRANT:
			case PostgreSQLParser.KW_INTO:
			case PostgreSQLParser.KW_LIMIT:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_OFFSET:
			case PostgreSQLParser.KW_ON:
			case PostgreSQLParser.KW_RETURNING:
			case PostgreSQLParser.KW_SELECT:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_WHEN:
			case PostgreSQLParser.KW_WINDOW:
			case PostgreSQLParser.KW_WITH:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_END:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_LOOP:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_MERGE:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.MetaCommand:
			case PostgreSQLParser.EscapeStringConstant:
				break;
			default:
				break;
			}
			this.state = 8993;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 876, this._ctx) ) {
			case 1:
				{
				this.state = 8992;
				this.opt_nulls_order();
				}
				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 select_limit(): Select_limitContext {
		let _localctx: Select_limitContext = new Select_limitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1052, PostgreSQLParser.RULE_select_limit);
		let _la: number;
		try {
			this.state = 9007;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_LIMIT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 8995;
				this.limit_clause();
				this.state = 8997;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OFFSET) {
					{
					this.state = 8996;
					this.offset_clause();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_OFFSET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 8999;
				this.offset_clause();
				this.state = 9001;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 878, this._ctx) ) {
				case 1:
					{
					this.state = 9000;
					this.fetch_clause();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_FETCH:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9003;
				this.fetch_clause();
				this.state = 9005;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_OFFSET) {
					{
					this.state = 9004;
					this.offset_clause();
					}
				}

				}
				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 opt_select_limit(): Opt_select_limitContext {
		let _localctx: Opt_select_limitContext = new Opt_select_limitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1054, PostgreSQLParser.RULE_opt_select_limit);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9009;
			this.select_limit();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public limit_clause(): Limit_clauseContext {
		let _localctx: Limit_clauseContext = new Limit_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1056, PostgreSQLParser.RULE_limit_clause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9011;
			this.match(PostgreSQLParser.KW_LIMIT);
			this.state = 9012;
			this.select_limit_value();
			this.state = 9015;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.COMMA) {
				{
				this.state = 9013;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9014;
				this.select_offset_value();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fetch_clause(): Fetch_clauseContext {
		let _localctx: Fetch_clauseContext = new Fetch_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1058, PostgreSQLParser.RULE_fetch_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9017;
			this.match(PostgreSQLParser.KW_FETCH);
			this.state = 9018;
			this.first_or_next();
			this.state = 9032;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 884, this._ctx) ) {
			case 1:
				{
				this.state = 9019;
				this.select_fetch_first_value();
				this.state = 9020;
				this.row_or_rows();
				this.state = 9024;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_ONLY:
					{
					this.state = 9021;
					this.match(PostgreSQLParser.KW_ONLY);
					}
					break;
				case PostgreSQLParser.KW_WITH:
					{
					this.state = 9022;
					this.match(PostgreSQLParser.KW_WITH);
					this.state = 9023;
					this.match(PostgreSQLParser.KW_TIES);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				{
				this.state = 9026;
				this.row_or_rows();
				this.state = 9030;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_ONLY:
					{
					this.state = 9027;
					this.match(PostgreSQLParser.KW_ONLY);
					}
					break;
				case PostgreSQLParser.KW_WITH:
					{
					this.state = 9028;
					this.match(PostgreSQLParser.KW_WITH);
					this.state = 9029;
					this.match(PostgreSQLParser.KW_TIES);
					}
					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 offset_clause(): Offset_clauseContext {
		let _localctx: Offset_clauseContext = new Offset_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1060, PostgreSQLParser.RULE_offset_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9034;
			this.match(PostgreSQLParser.KW_OFFSET);
			this.state = 9039;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 885, this._ctx) ) {
			case 1:
				{
				this.state = 9035;
				this.select_offset_value();
				}
				break;

			case 2:
				{
				this.state = 9036;
				this.select_fetch_first_value();
				this.state = 9037;
				this.row_or_rows();
				}
				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 select_limit_value(): Select_limit_valueContext {
		let _localctx: Select_limit_valueContext = new Select_limit_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 1062, PostgreSQLParser.RULE_select_limit_value);
		try {
			this.state = 9043;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.Operator:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.BinaryStringConstant:
			case PostgreSQLParser.HexadecimalStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9041;
				this.a_expr();
				}
				break;
			case PostgreSQLParser.KW_ALL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9042;
				this.match(PostgreSQLParser.KW_ALL);
				}
				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 select_offset_value(): Select_offset_valueContext {
		let _localctx: Select_offset_valueContext = new Select_offset_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 1064, PostgreSQLParser.RULE_select_offset_value);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9045;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public select_fetch_first_value(): Select_fetch_first_valueContext {
		let _localctx: Select_fetch_first_valueContext = new Select_fetch_first_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 1066, PostgreSQLParser.RULE_select_fetch_first_value);
		try {
			this.state = 9052;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.BinaryStringConstant:
			case PostgreSQLParser.HexadecimalStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9047;
				this.c_expr();
				}
				break;
			case PostgreSQLParser.PLUS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9048;
				this.match(PostgreSQLParser.PLUS);
				this.state = 9049;
				this.i_or_f_const();
				}
				break;
			case PostgreSQLParser.MINUS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9050;
				this.match(PostgreSQLParser.MINUS);
				this.state = 9051;
				this.i_or_f_const();
				}
				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 i_or_f_const(): I_or_f_constContext {
		let _localctx: I_or_f_constContext = new I_or_f_constContext(this._ctx, this.state);
		this.enterRule(_localctx, 1068, PostgreSQLParser.RULE_i_or_f_const);
		try {
			this.state = 9056;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.Integral:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9054;
				this.iconst();
				}
				break;
			case PostgreSQLParser.Numeric:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9055;
				this.fconst();
				}
				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 row_or_rows(): Row_or_rowsContext {
		let _localctx: Row_or_rowsContext = new Row_or_rowsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1070, PostgreSQLParser.RULE_row_or_rows);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9058;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ROWS || _la === PostgreSQLParser.KW_ROW)) {
			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 first_or_next(): First_or_nextContext {
		let _localctx: First_or_nextContext = new First_or_nextContext(this._ctx, this.state);
		this.enterRule(_localctx, 1072, PostgreSQLParser.RULE_first_or_next);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9060;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FIRST || _la === PostgreSQLParser.KW_NEXT)) {
			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 group_clause(): Group_clauseContext {
		let _localctx: Group_clauseContext = new Group_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1074, PostgreSQLParser.RULE_group_clause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9062;
			this.match(PostgreSQLParser.KW_GROUP);
			this.state = 9063;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 9065;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_DISTINCT) {
				{
				this.state = 9064;
				this.all_or_distinct();
				}
			}

			this.state = 9067;
			this.group_by_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public group_by_list(): Group_by_listContext {
		let _localctx: Group_by_listContext = new Group_by_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1076, PostgreSQLParser.RULE_group_by_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9069;
			this.group_by_item();
			this.state = 9074;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 890, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9070;
					this.match(PostgreSQLParser.COMMA);
					this.state = 9071;
					this.group_by_item();
					}
					}
				}
				this.state = 9076;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 890, 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 group_by_item(): Group_by_itemContext {
		let _localctx: Group_by_itemContext = new Group_by_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1078, PostgreSQLParser.RULE_group_by_item);
		try {
			this.state = 9086;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 891, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9077;
				this.column_expr_noparen();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 9082;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9083;
				this.column_expr_list_noparen();
				this.state = 9084;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 empty_grouping_set(): Empty_grouping_setContext {
		let _localctx: Empty_grouping_setContext = new Empty_grouping_setContext(this._ctx, this.state);
		this.enterRule(_localctx, 1080, PostgreSQLParser.RULE_empty_grouping_set);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9088;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9089;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rollup_clause(): Rollup_clauseContext {
		let _localctx: Rollup_clauseContext = new Rollup_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1082, PostgreSQLParser.RULE_rollup_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9091;
			this.match(PostgreSQLParser.KW_ROLLUP);
			this.state = 9092;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9093;
			this.column_expr_list_noparen();
			this.state = 9094;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public cube_clause(): Cube_clauseContext {
		let _localctx: Cube_clauseContext = new Cube_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1084, PostgreSQLParser.RULE_cube_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9096;
			this.match(PostgreSQLParser.KW_CUBE);
			this.state = 9097;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9098;
			this.column_expr_list_noparen();
			this.state = 9099;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public grouping_sets_clause(): Grouping_sets_clauseContext {
		let _localctx: Grouping_sets_clauseContext = new Grouping_sets_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1086, PostgreSQLParser.RULE_grouping_sets_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9101;
			this.match(PostgreSQLParser.KW_GROUPING);
			this.state = 9102;
			this.match(PostgreSQLParser.KW_SETS);
			this.state = 9103;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9104;
			this.group_by_list();
			this.state = 9105;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public having_clause(): Having_clauseContext {
		let _localctx: Having_clauseContext = new Having_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1088, PostgreSQLParser.RULE_having_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9107;
			this.match(PostgreSQLParser.KW_HAVING);
			this.state = 9108;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public for_locking_clause(): For_locking_clauseContext {
		let _localctx: For_locking_clauseContext = new For_locking_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1090, PostgreSQLParser.RULE_for_locking_clause);
		try {
			this.state = 9114;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 892, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9110;
				this.for_locking_items();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9111;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 9112;
				this.match(PostgreSQLParser.KW_READ);
				this.state = 9113;
				this.match(PostgreSQLParser.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 opt_for_locking_clause(): Opt_for_locking_clauseContext {
		let _localctx: Opt_for_locking_clauseContext = new Opt_for_locking_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1092, PostgreSQLParser.RULE_opt_for_locking_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9116;
			this.for_locking_clause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public for_locking_items(): For_locking_itemsContext {
		let _localctx: For_locking_itemsContext = new For_locking_itemsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1094, PostgreSQLParser.RULE_for_locking_items);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9119;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 9118;
				this.for_locking_item();
				}
				}
				this.state = 9121;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_FOR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public for_locking_item(): For_locking_itemContext {
		let _localctx: For_locking_itemContext = new For_locking_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1096, PostgreSQLParser.RULE_for_locking_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9123;
			this.for_locking_strength();
			this.state = 9125;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 894, this._ctx) ) {
			case 1:
				{
				this.state = 9124;
				this.locked_rels_list();
				}
				break;
			}
			this.state = 9128;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 895, this._ctx) ) {
			case 1:
				{
				this.state = 9127;
				this.opt_nowait_or_skip();
				}
				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 for_locking_strength(): For_locking_strengthContext {
		let _localctx: For_locking_strengthContext = new For_locking_strengthContext(this._ctx, this.state);
		this.enterRule(_localctx, 1098, PostgreSQLParser.RULE_for_locking_strength);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9130;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 9140;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_UPDATE:
				{
				this.state = 9133;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NO) {
					{
					this.state = 9131;
					this.match(PostgreSQLParser.KW_NO);
					this.state = 9132;
					this.match(PostgreSQLParser.KW_KEY);
					}
				}

				this.state = 9135;
				this.match(PostgreSQLParser.KW_UPDATE);
				}
				break;
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_SHARE:
				{
				this.state = 9137;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_KEY) {
					{
					this.state = 9136;
					this.match(PostgreSQLParser.KW_KEY);
					}
				}

				this.state = 9139;
				this.match(PostgreSQLParser.KW_SHARE);
				}
				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 locked_rels_list(): Locked_rels_listContext {
		let _localctx: Locked_rels_listContext = new Locked_rels_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1100, PostgreSQLParser.RULE_locked_rels_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9142;
			this.match(PostgreSQLParser.KW_OF);
			this.state = 9143;
			this.qualified_name_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public values_clause(): Values_clauseContext {
		let _localctx: Values_clauseContext = new Values_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1102, PostgreSQLParser.RULE_values_clause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9145;
			this.match(PostgreSQLParser.KW_VALUES);
			this.state = 9146;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9147;
			this.expr_list();
			this.state = 9148;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			this.state = 9156;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9149;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9150;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9151;
				this.expr_list();
				this.state = 9152;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				}
				this.state = 9158;
				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 from_clause(): From_clauseContext {
		let _localctx: From_clauseContext = new From_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1104, PostgreSQLParser.RULE_from_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9159;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 9160;
			this.from_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public from_list(): From_listContext {
		let _localctx: From_listContext = new From_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1106, PostgreSQLParser.RULE_from_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9162;
			this.table_ref();
			this.state = 9167;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 900, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9163;
					this.match(PostgreSQLParser.COMMA);
					this.state = 9164;
					this.table_ref();
					}
					}
				}
				this.state = 9169;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 900, 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 table_ref(): Table_refContext {
		let _localctx: Table_refContext = new Table_refContext(this._ctx, this.state);
		this.enterRule(_localctx, 1108, PostgreSQLParser.RULE_table_ref);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9228;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 914, this._ctx) ) {
			case 1:
				{
				this.state = 9170;
				this.relation_expr();
				this.state = 9172;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 901, this._ctx) ) {
				case 1:
					{
					this.state = 9171;
					this.opt_alias_clause();
					}
					break;
				}
				this.state = 9175;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_TABLESAMPLE) {
					{
					this.state = 9174;
					this.tablesample_clause();
					}
				}

				}
				break;

			case 2:
				{
				this.state = 9177;
				this.func_table();
				this.state = 9179;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 903, this._ctx) ) {
				case 1:
					{
					this.state = 9178;
					this.func_alias_clause();
					}
					break;
				}
				}
				break;

			case 3:
				{
				this.state = 9181;
				this.xmltable();
				this.state = 9183;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 904, this._ctx) ) {
				case 1:
					{
					this.state = 9182;
					this.opt_alias_clause();
					}
					break;
				}
				}
				break;

			case 4:
				{
				this.state = 9185;
				this.select_with_parens();
				this.state = 9187;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 905, this._ctx) ) {
				case 1:
					{
					this.state = 9186;
					this.opt_alias_clause();
					}
					break;
				}
				}
				break;

			case 5:
				{
				this.state = 9189;
				this.match(PostgreSQLParser.KW_LATERAL);
				this.state = 9202;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 909, this._ctx) ) {
				case 1:
					{
					this.state = 9190;
					this.xmltable();
					this.state = 9192;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 906, this._ctx) ) {
					case 1:
						{
						this.state = 9191;
						this.opt_alias_clause();
						}
						break;
					}
					}
					break;

				case 2:
					{
					this.state = 9194;
					this.func_table();
					this.state = 9196;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 907, this._ctx) ) {
					case 1:
						{
						this.state = 9195;
						this.func_alias_clause();
						}
						break;
					}
					}
					break;

				case 3:
					{
					this.state = 9198;
					this.select_with_parens();
					this.state = 9200;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 908, this._ctx) ) {
					case 1:
						{
						this.state = 9199;
						this.opt_alias_clause();
						}
						break;
					}
					}
					break;
				}
				}
				break;

			case 6:
				{
				this.state = 9204;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9205;
				this.table_ref();
				this.state = 9222;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_CROSS:
					{
					this.state = 9206;
					this.match(PostgreSQLParser.KW_CROSS);
					this.state = 9207;
					this.match(PostgreSQLParser.KW_JOIN);
					this.state = 9208;
					this.table_ref();
					}
					break;
				case PostgreSQLParser.KW_NATURAL:
					{
					this.state = 9209;
					this.match(PostgreSQLParser.KW_NATURAL);
					this.state = 9211;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (PostgreSQLParser.KW_FULL - 113)) | (1 << (PostgreSQLParser.KW_INNER - 113)) | (1 << (PostgreSQLParser.KW_LEFT - 113)) | (1 << (PostgreSQLParser.KW_RIGHT - 113)))) !== 0)) {
						{
						this.state = 9210;
						this.join_type();
						}
					}

					this.state = 9213;
					this.match(PostgreSQLParser.KW_JOIN);
					this.state = 9214;
					this.table_ref();
					}
					break;
				case PostgreSQLParser.KW_FULL:
				case PostgreSQLParser.KW_INNER:
				case PostgreSQLParser.KW_JOIN:
				case PostgreSQLParser.KW_LEFT:
				case PostgreSQLParser.KW_RIGHT:
					{
					this.state = 9216;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (PostgreSQLParser.KW_FULL - 113)) | (1 << (PostgreSQLParser.KW_INNER - 113)) | (1 << (PostgreSQLParser.KW_LEFT - 113)) | (1 << (PostgreSQLParser.KW_RIGHT - 113)))) !== 0)) {
						{
						this.state = 9215;
						this.join_type();
						}
					}

					this.state = 9218;
					this.match(PostgreSQLParser.KW_JOIN);
					this.state = 9219;
					this.table_ref();
					this.state = 9220;
					this.join_qual();
					}
					break;
				case PostgreSQLParser.CLOSE_PAREN:
					break;
				default:
					break;
				}
				this.state = 9224;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 9226;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 913, this._ctx) ) {
				case 1:
					{
					this.state = 9225;
					this.opt_alias_clause();
					}
					break;
				}
				}
				break;
			}
			this.state = 9248;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 918, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					this.state = 9246;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case PostgreSQLParser.KW_CROSS:
						{
						this.state = 9230;
						this.match(PostgreSQLParser.KW_CROSS);
						this.state = 9231;
						this.match(PostgreSQLParser.KW_JOIN);
						this.state = 9232;
						this.table_ref();
						}
						break;
					case PostgreSQLParser.KW_NATURAL:
						{
						this.state = 9233;
						this.match(PostgreSQLParser.KW_NATURAL);
						this.state = 9235;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (PostgreSQLParser.KW_FULL - 113)) | (1 << (PostgreSQLParser.KW_INNER - 113)) | (1 << (PostgreSQLParser.KW_LEFT - 113)) | (1 << (PostgreSQLParser.KW_RIGHT - 113)))) !== 0)) {
							{
							this.state = 9234;
							this.join_type();
							}
						}

						this.state = 9237;
						this.match(PostgreSQLParser.KW_JOIN);
						this.state = 9238;
						this.table_ref();
						}
						break;
					case PostgreSQLParser.KW_FULL:
					case PostgreSQLParser.KW_INNER:
					case PostgreSQLParser.KW_JOIN:
					case PostgreSQLParser.KW_LEFT:
					case PostgreSQLParser.KW_RIGHT:
						{
						this.state = 9240;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (PostgreSQLParser.KW_FULL - 113)) | (1 << (PostgreSQLParser.KW_INNER - 113)) | (1 << (PostgreSQLParser.KW_LEFT - 113)) | (1 << (PostgreSQLParser.KW_RIGHT - 113)))) !== 0)) {
							{
							this.state = 9239;
							this.join_type();
							}
						}

						this.state = 9242;
						this.match(PostgreSQLParser.KW_JOIN);
						this.state = 9243;
						this.table_ref();
						this.state = 9244;
						this.join_qual();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}
				this.state = 9250;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 918, 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 alias_clause(): Alias_clauseContext {
		let _localctx: Alias_clauseContext = new Alias_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1110, PostgreSQLParser.RULE_alias_clause);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9252;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 9251;
				this.match(PostgreSQLParser.KW_AS);
				}
			}

			this.state = 9254;
			this.colid();
			this.state = 9259;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 920, this._ctx) ) {
			case 1:
				{
				this.state = 9255;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9256;
				this.name_list();
				this.state = 9257;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 opt_alias_clause(): Opt_alias_clauseContext {
		let _localctx: Opt_alias_clauseContext = new Opt_alias_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1112, PostgreSQLParser.RULE_opt_alias_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9261;
			this.alias_clause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_alias_clause(): Func_alias_clauseContext {
		let _localctx: Func_alias_clauseContext = new Func_alias_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1114, PostgreSQLParser.RULE_func_alias_clause);
		let _la: number;
		try {
			this.state = 9275;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 923, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9263;
				this.alias_clause();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9269;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AS:
					{
					this.state = 9264;
					this.match(PostgreSQLParser.KW_AS);
					this.state = 9266;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
						{
						this.state = 9265;
						this.colid();
						}
					}

					}
					break;
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9268;
					this.colid();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 9271;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9272;
				this.tablefuncelementlist();
				this.state = 9273;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 join_type(): Join_typeContext {
		let _localctx: Join_typeContext = new Join_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1116, PostgreSQLParser.RULE_join_type);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9277;
			_la = this._input.LA(1);
			if (!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (PostgreSQLParser.KW_FULL - 113)) | (1 << (PostgreSQLParser.KW_INNER - 113)) | (1 << (PostgreSQLParser.KW_LEFT - 113)) | (1 << (PostgreSQLParser.KW_RIGHT - 113)))) !== 0))) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 9279;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OUTER) {
				{
				this.state = 9278;
				this.match(PostgreSQLParser.KW_OUTER);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public join_qual(): Join_qualContext {
		let _localctx: Join_qualContext = new Join_qualContext(this._ctx, this.state);
		this.enterRule(_localctx, 1118, PostgreSQLParser.RULE_join_qual);
		try {
			this.state = 9288;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9281;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 9282;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9283;
				this.columnlist();
				this.state = 9284;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_ON:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9286;
				this.match(PostgreSQLParser.KW_ON);
				this.state = 9287;
				this.a_expr();
				}
				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 relation_expr(): Relation_exprContext {
		let _localctx: Relation_exprContext = new Relation_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1120, PostgreSQLParser.RULE_relation_expr);
		let _la: number;
		try {
			this.state = 9317;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 932, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9291;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ONLY) {
					{
					this.state = 9290;
					this.match(PostgreSQLParser.KW_ONLY);
					}
				}

				this.state = 9293;
				this.table_name();
				this.state = 9295;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.STAR) {
					{
					this.state = 9294;
					this.match(PostgreSQLParser.STAR);
					}
				}

				this.state = 9298;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 928, this._ctx) ) {
				case 1:
					{
					this.state = 9297;
					this.columnlist();
					}
					break;
				}
				this.state = 9301;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 929, this._ctx) ) {
				case 1:
					{
					this.state = 9300;
					this.where_clause();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9303;
				this.match(PostgreSQLParser.KW_ONLY);
				this.state = 9309;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9304;
					this.table_name();
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 9305;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9306;
					this.table_name();
					this.state = 9307;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9311;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 9312;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 9315;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9313;
					this.schema_name();
					}
					break;
				case PostgreSQLParser.KW_CURRENT_SCHEMA:
					{
					this.state = 9314;
					this.match(PostgreSQLParser.KW_CURRENT_SCHEMA);
					}
					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 publication_relation_expr(): Publication_relation_exprContext {
		let _localctx: Publication_relation_exprContext = new Publication_relation_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1122, PostgreSQLParser.RULE_publication_relation_expr);
		let _la: number;
		try {
			this.state = 9352;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 939, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9319;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 9321;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ONLY) {
					{
					this.state = 9320;
					this.match(PostgreSQLParser.KW_ONLY);
					}
				}

				this.state = 9323;
				this.table_name();
				this.state = 9325;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.STAR) {
					{
					this.state = 9324;
					this.match(PostgreSQLParser.STAR);
					}
				}

				this.state = 9331;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 935, this._ctx) ) {
				case 1:
					{
					this.state = 9327;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9328;
					this.columnlist();
					this.state = 9329;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				this.state = 9334;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_WHERE) {
					{
					this.state = 9333;
					this.where_clause();
					}
				}

				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9336;
				this.match(PostgreSQLParser.KW_TABLE);
				this.state = 9337;
				this.match(PostgreSQLParser.KW_ONLY);
				this.state = 9343;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9338;
					this.table_name();
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 9339;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9340;
					this.table_name();
					this.state = 9341;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9345;
				this.match(PostgreSQLParser.KW_TABLES);
				this.state = 9346;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 9347;
				this.match(PostgreSQLParser.KW_SCHEMA);
				this.state = 9350;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9348;
					this.schema_name();
					}
					break;
				case PostgreSQLParser.KW_CURRENT_SCHEMA:
					{
					this.state = 9349;
					this.match(PostgreSQLParser.KW_CURRENT_SCHEMA);
					}
					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 relation_expr_list(): Relation_expr_listContext {
		let _localctx: Relation_expr_listContext = new Relation_expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1124, PostgreSQLParser.RULE_relation_expr_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9354;
			this.relation_expr();
			this.state = 9359;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9355;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9356;
				this.relation_expr();
				}
				}
				this.state = 9361;
				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 publication_relation_expr_list(): Publication_relation_expr_listContext {
		let _localctx: Publication_relation_expr_listContext = new Publication_relation_expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1126, PostgreSQLParser.RULE_publication_relation_expr_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9362;
			this.publication_relation_expr();
			this.state = 9367;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9363;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9364;
				this.publication_relation_expr();
				}
				}
				this.state = 9369;
				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 relation_expr_opt_alias(): Relation_expr_opt_aliasContext {
		let _localctx: Relation_expr_opt_aliasContext = new Relation_expr_opt_aliasContext(this._ctx, this.state);
		this.enterRule(_localctx, 1128, PostgreSQLParser.RULE_relation_expr_opt_alias);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9370;
			this.relation_expr();
			this.state = 9375;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 943, this._ctx) ) {
			case 1:
				{
				this.state = 9372;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 9371;
					this.match(PostgreSQLParser.KW_AS);
					}
				}

				this.state = 9374;
				this.colid();
				}
				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 tablesample_clause(): Tablesample_clauseContext {
		let _localctx: Tablesample_clauseContext = new Tablesample_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1130, PostgreSQLParser.RULE_tablesample_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9377;
			this.match(PostgreSQLParser.KW_TABLESAMPLE);
			this.state = 9378;
			this.function_name();
			this.state = 9379;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9380;
			this.expr_list();
			this.state = 9381;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			this.state = 9383;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 944, this._ctx) ) {
			case 1:
				{
				this.state = 9382;
				this.opt_repeatable_clause();
				}
				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 opt_repeatable_clause(): Opt_repeatable_clauseContext {
		let _localctx: Opt_repeatable_clauseContext = new Opt_repeatable_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1132, PostgreSQLParser.RULE_opt_repeatable_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9385;
			this.match(PostgreSQLParser.KW_REPEATABLE);
			this.state = 9386;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9387;
			this.a_expr();
			this.state = 9388;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_table(): Func_tableContext {
		let _localctx: Func_tableContext = new Func_tableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1134, PostgreSQLParser.RULE_func_table);
		try {
			this.state = 9402;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 947, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9390;
				this.func_expr_windowless();
				this.state = 9392;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 945, this._ctx) ) {
				case 1:
					{
					this.state = 9391;
					this.opt_ordinality();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9394;
				this.match(PostgreSQLParser.KW_ROWS);
				this.state = 9395;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 9396;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9397;
				this.rowsfrom_list();
				this.state = 9398;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 9400;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 946, this._ctx) ) {
				case 1:
					{
					this.state = 9399;
					this.opt_ordinality();
					}
					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 rowsfrom_item(): Rowsfrom_itemContext {
		let _localctx: Rowsfrom_itemContext = new Rowsfrom_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1136, PostgreSQLParser.RULE_rowsfrom_item);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9404;
			this.func_expr_windowless();
			this.state = 9406;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 9405;
				this.opt_col_def_list();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rowsfrom_list(): Rowsfrom_listContext {
		let _localctx: Rowsfrom_listContext = new Rowsfrom_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1138, PostgreSQLParser.RULE_rowsfrom_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9408;
			this.rowsfrom_item();
			this.state = 9413;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9409;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9410;
				this.rowsfrom_item();
				}
				}
				this.state = 9415;
				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 opt_col_def_list(): Opt_col_def_listContext {
		let _localctx: Opt_col_def_listContext = new Opt_col_def_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1140, PostgreSQLParser.RULE_opt_col_def_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9416;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 9417;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9418;
			this.tablefuncelementlist();
			this.state = 9419;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_ordinality(): Opt_ordinalityContext {
		let _localctx: Opt_ordinalityContext = new Opt_ordinalityContext(this._ctx, this.state);
		this.enterRule(_localctx, 1142, PostgreSQLParser.RULE_opt_ordinality);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9421;
			this.match(PostgreSQLParser.KW_WITH);
			this.state = 9422;
			this.match(PostgreSQLParser.KW_ORDINALITY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public where_clause(): Where_clauseContext {
		let _localctx: Where_clauseContext = new Where_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1144, PostgreSQLParser.RULE_where_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9424;
			this.match(PostgreSQLParser.KW_WHERE);
			this.state = 9425;
			this.column_expr_noparen();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public where_or_current_clause(): Where_or_current_clauseContext {
		let _localctx: Where_or_current_clauseContext = new Where_or_current_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1146, PostgreSQLParser.RULE_where_or_current_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9427;
			this.match(PostgreSQLParser.KW_WHERE);
			this.state = 9432;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 950, this._ctx) ) {
			case 1:
				{
				this.state = 9428;
				this.match(PostgreSQLParser.KW_CURRENT);
				this.state = 9429;
				this.match(PostgreSQLParser.KW_OF);
				this.state = 9430;
				this.cursor_name();
				}
				break;

			case 2:
				{
				this.state = 9431;
				this.a_expr();
				}
				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 opttablefuncelementlist(): OpttablefuncelementlistContext {
		let _localctx: OpttablefuncelementlistContext = new OpttablefuncelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 1148, PostgreSQLParser.RULE_opttablefuncelementlist);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9434;
			this.tablefuncelementlist();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablefuncelementlist(): TablefuncelementlistContext {
		let _localctx: TablefuncelementlistContext = new TablefuncelementlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 1150, PostgreSQLParser.RULE_tablefuncelementlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9436;
			this.tablefuncelement();
			this.state = 9441;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9437;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9438;
				this.tablefuncelement();
				}
				}
				this.state = 9443;
				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 tablefuncelement(): TablefuncelementContext {
		let _localctx: TablefuncelementContext = new TablefuncelementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1152, PostgreSQLParser.RULE_tablefuncelement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9444;
			this.colid();
			this.state = 9445;
			this.typename();
			this.state = 9447;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 952, this._ctx) ) {
			case 1:
				{
				this.state = 9446;
				this.opt_collate_clause();
				}
				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 xmltable(): XmltableContext {
		let _localctx: XmltableContext = new XmltableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1154, PostgreSQLParser.RULE_xmltable);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9449;
			this.match(PostgreSQLParser.KW_XMLTABLE);
			this.state = 9450;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9466;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 953, this._ctx) ) {
			case 1:
				{
				this.state = 9451;
				this.c_expr();
				this.state = 9452;
				this.xmlexists_argument();
				this.state = 9453;
				this.match(PostgreSQLParser.KW_COLUMNS);
				this.state = 9454;
				this.xmltable_column_list();
				}
				break;

			case 2:
				{
				this.state = 9456;
				this.match(PostgreSQLParser.KW_XMLNAMESPACES);
				this.state = 9457;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9458;
				this.xml_namespace_list();
				this.state = 9459;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 9460;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9461;
				this.c_expr();
				this.state = 9462;
				this.xmlexists_argument();
				this.state = 9463;
				this.match(PostgreSQLParser.KW_COLUMNS);
				this.state = 9464;
				this.xmltable_column_list();
				}
				break;
			}
			this.state = 9468;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xmltable_column_list(): Xmltable_column_listContext {
		let _localctx: Xmltable_column_listContext = new Xmltable_column_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1156, PostgreSQLParser.RULE_xmltable_column_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9470;
			this.xmltable_column_el();
			this.state = 9475;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9471;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9472;
				this.xmltable_column_el();
				}
				}
				this.state = 9477;
				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 xmltable_column_el(): Xmltable_column_elContext {
		let _localctx: Xmltable_column_elContext = new Xmltable_column_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1158, PostgreSQLParser.RULE_xmltable_column_el);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9478;
			this.colid();
			this.state = 9485;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 9479;
				this.typename();
				this.state = 9481;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 77)) & ~0x1F) === 0 && ((1 << (_la - 77)) & ((1 << (PostgreSQLParser.KW_NOT - 77)) | (1 << (PostgreSQLParser.KW_NULL - 77)) | (1 << (PostgreSQLParser.KW_TABLE - 77)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (PostgreSQLParser.KW_IS - 116)) | (1 << (PostgreSQLParser.KW_OUTER - 116)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 116)) | (1 << (PostgreSQLParser.KW_BACKWARD - 116)))) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & ((1 << (PostgreSQLParser.KW_CHAIN - 153)) | (1 << (PostgreSQLParser.KW_CLOSE - 153)) | (1 << (PostgreSQLParser.KW_COMMIT - 153)) | (1 << (PostgreSQLParser.KW_CONTINUE - 153)) | (1 << (PostgreSQLParser.KW_CURSOR - 153)))) !== 0) || _la === PostgreSQLParser.KW_FIRST || _la === PostgreSQLParser.KW_FORWARD || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (PostgreSQLParser.KW_INSERT - 241)) | (1 << (PostgreSQLParser.KW_LAST - 241)) | (1 << (PostgreSQLParser.KW_MOVE - 241)) | (1 << (PostgreSQLParser.KW_NEXT - 241)) | (1 << (PostgreSQLParser.KW_NO - 241)))) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & ((1 << (PostgreSQLParser.KW_OPTION - 279)) | (1 << (PostgreSQLParser.KW_PRIOR - 279)) | (1 << (PostgreSQLParser.KW_RELATIVE - 279)))) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & ((1 << (PostgreSQLParser.KW_RESET - 313)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 313)) | (1 << (PostgreSQLParser.KW_SCHEMA - 313)) | (1 << (PostgreSQLParser.KW_SCROLL - 313)) | (1 << (PostgreSQLParser.KW_SET - 313)))) !== 0) || _la === PostgreSQLParser.KW_TYPE || _la === PostgreSQLParser.KW_CALL || _la === PostgreSQLParser.KW_CURRENT || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & ((1 << (PostgreSQLParser.KW_ROWTYPE - 477)) | (1 << (PostgreSQLParser.KW_DUMP - 477)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 477)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 477)) | (1 << (PostgreSQLParser.KW_ERROR - 477)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 477)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 477)) | (1 << (PostgreSQLParser.KW_ALIAS - 477)) | (1 << (PostgreSQLParser.KW_CONSTANT - 477)) | (1 << (PostgreSQLParser.KW_PERFORM - 477)) | (1 << (PostgreSQLParser.KW_GET - 477)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 477)) | (1 << (PostgreSQLParser.KW_STACKED - 477)) | (1 << (PostgreSQLParser.KW_ELSIF - 477)) | (1 << (PostgreSQLParser.KW_REVERSE - 477)) | (1 << (PostgreSQLParser.KW_SLICE - 477)) | (1 << (PostgreSQLParser.KW_EXIT - 477)) | (1 << (PostgreSQLParser.KW_RETURN - 477)))) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & ((1 << (PostgreSQLParser.KW_QUERY - 509)) | (1 << (PostgreSQLParser.KW_RAISE - 509)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 509)) | (1 << (PostgreSQLParser.KW_DEBUG - 509)) | (1 << (PostgreSQLParser.KW_LOG - 509)) | (1 << (PostgreSQLParser.KW_INFO - 509)) | (1 << (PostgreSQLParser.KW_NOTICE - 509)) | (1 << (PostgreSQLParser.KW_WARNING - 509)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 509)) | (1 << (PostgreSQLParser.KW_ASSERT - 509)) | (1 << (PostgreSQLParser.KW_OPEN - 509)))) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & ((1 << (PostgreSQLParser.Identifier - 549)) | (1 << (PostgreSQLParser.QuotedIdentifier - 549)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 549)) | (1 << (PostgreSQLParser.StringConstant - 549)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 549)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 549)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 549)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 549)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 9480;
					this.xmltable_column_option_list();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_FOR:
				{
				this.state = 9483;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 9484;
				this.match(PostgreSQLParser.KW_ORDINALITY);
				}
				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 xmltable_column_option_list(): Xmltable_column_option_listContext {
		let _localctx: Xmltable_column_option_listContext = new Xmltable_column_option_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1160, PostgreSQLParser.RULE_xmltable_column_option_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9488;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 9487;
				this.xmltable_column_option_el();
				}
				}
				this.state = 9490;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 77)) & ~0x1F) === 0 && ((1 << (_la - 77)) & ((1 << (PostgreSQLParser.KW_NOT - 77)) | (1 << (PostgreSQLParser.KW_NULL - 77)) | (1 << (PostgreSQLParser.KW_TABLE - 77)))) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & ((1 << (PostgreSQLParser.KW_IS - 116)) | (1 << (PostgreSQLParser.KW_OUTER - 116)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 116)) | (1 << (PostgreSQLParser.KW_BACKWARD - 116)))) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & ((1 << (PostgreSQLParser.KW_CHAIN - 153)) | (1 << (PostgreSQLParser.KW_CLOSE - 153)) | (1 << (PostgreSQLParser.KW_COMMIT - 153)) | (1 << (PostgreSQLParser.KW_CONTINUE - 153)) | (1 << (PostgreSQLParser.KW_CURSOR - 153)))) !== 0) || _la === PostgreSQLParser.KW_FIRST || _la === PostgreSQLParser.KW_FORWARD || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (PostgreSQLParser.KW_INSERT - 241)) | (1 << (PostgreSQLParser.KW_LAST - 241)) | (1 << (PostgreSQLParser.KW_MOVE - 241)) | (1 << (PostgreSQLParser.KW_NEXT - 241)) | (1 << (PostgreSQLParser.KW_NO - 241)))) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & ((1 << (PostgreSQLParser.KW_OPTION - 279)) | (1 << (PostgreSQLParser.KW_PRIOR - 279)) | (1 << (PostgreSQLParser.KW_RELATIVE - 279)))) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & ((1 << (PostgreSQLParser.KW_RESET - 313)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 313)) | (1 << (PostgreSQLParser.KW_SCHEMA - 313)) | (1 << (PostgreSQLParser.KW_SCROLL - 313)) | (1 << (PostgreSQLParser.KW_SET - 313)))) !== 0) || _la === PostgreSQLParser.KW_TYPE || _la === PostgreSQLParser.KW_CALL || _la === PostgreSQLParser.KW_CURRENT || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & ((1 << (PostgreSQLParser.KW_ROWTYPE - 477)) | (1 << (PostgreSQLParser.KW_DUMP - 477)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 477)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 477)) | (1 << (PostgreSQLParser.KW_ERROR - 477)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 477)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 477)) | (1 << (PostgreSQLParser.KW_ALIAS - 477)) | (1 << (PostgreSQLParser.KW_CONSTANT - 477)) | (1 << (PostgreSQLParser.KW_PERFORM - 477)) | (1 << (PostgreSQLParser.KW_GET - 477)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 477)) | (1 << (PostgreSQLParser.KW_STACKED - 477)) | (1 << (PostgreSQLParser.KW_ELSIF - 477)) | (1 << (PostgreSQLParser.KW_REVERSE - 477)) | (1 << (PostgreSQLParser.KW_SLICE - 477)) | (1 << (PostgreSQLParser.KW_EXIT - 477)) | (1 << (PostgreSQLParser.KW_RETURN - 477)))) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & ((1 << (PostgreSQLParser.KW_QUERY - 509)) | (1 << (PostgreSQLParser.KW_RAISE - 509)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 509)) | (1 << (PostgreSQLParser.KW_DEBUG - 509)) | (1 << (PostgreSQLParser.KW_LOG - 509)) | (1 << (PostgreSQLParser.KW_INFO - 509)) | (1 << (PostgreSQLParser.KW_NOTICE - 509)) | (1 << (PostgreSQLParser.KW_WARNING - 509)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 509)) | (1 << (PostgreSQLParser.KW_ASSERT - 509)) | (1 << (PostgreSQLParser.KW_OPEN - 509)))) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & ((1 << (PostgreSQLParser.Identifier - 549)) | (1 << (PostgreSQLParser.QuotedIdentifier - 549)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 549)) | (1 << (PostgreSQLParser.StringConstant - 549)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 549)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 549)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 549)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 549)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xmltable_column_option_el(): Xmltable_column_option_elContext {
		let _localctx: Xmltable_column_option_elContext = new Xmltable_column_option_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1162, PostgreSQLParser.RULE_xmltable_column_option_el);
		try {
			this.state = 9500;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 958, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9492;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 9493;
				this.a_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9494;
				this.identifier();
				this.state = 9495;
				this.a_expr();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9497;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 9498;
				this.match(PostgreSQLParser.KW_NULL);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 9499;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 xml_namespace_list(): Xml_namespace_listContext {
		let _localctx: Xml_namespace_listContext = new Xml_namespace_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1164, PostgreSQLParser.RULE_xml_namespace_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9502;
			this.xml_namespace_el();
			this.state = 9507;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 9503;
				this.match(PostgreSQLParser.COMMA);
				this.state = 9504;
				this.xml_namespace_el();
				}
				}
				this.state = 9509;
				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 xml_namespace_el(): Xml_namespace_elContext {
		let _localctx: Xml_namespace_elContext = new Xml_namespace_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1166, PostgreSQLParser.RULE_xml_namespace_el);
		try {
			this.state = 9516;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 960, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9510;
				this.b_expr(0);
				this.state = 9511;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 9512;
				this.collabel();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9514;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 9515;
				this.b_expr(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 typename(): TypenameContext {
		let _localctx: TypenameContext = new TypenameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1168, PostgreSQLParser.RULE_typename);
		let _la: number;
		try {
			this.state = 9536;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 964, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9519;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_SETOF) {
					{
					this.state = 9518;
					this.match(PostgreSQLParser.KW_SETOF);
					}
				}

				this.state = 9521;
				this.simpletypename();
				this.state = 9530;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 963, this._ctx) ) {
				case 1:
					{
					this.state = 9522;
					this.opt_array_bounds();
					}
					break;

				case 2:
					{
					this.state = 9523;
					this.match(PostgreSQLParser.KW_ARRAY);
					this.state = 9528;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 962, this._ctx) ) {
					case 1:
						{
						this.state = 9524;
						this.match(PostgreSQLParser.OPEN_BRACKET);
						this.state = 9525;
						this.iconst();
						this.state = 9526;
						this.match(PostgreSQLParser.CLOSE_BRACKET);
						}
						break;
					}
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9532;
				this.qualified_name();
				this.state = 9533;
				this.match(PostgreSQLParser.PERCENT);
				this.state = 9534;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_TYPE || _la === PostgreSQLParser.KW_ROWTYPE)) {
				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 opt_array_bounds(): Opt_array_boundsContext {
		let _localctx: Opt_array_boundsContext = new Opt_array_boundsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1170, PostgreSQLParser.RULE_opt_array_bounds);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9545;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 966, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9538;
					this.match(PostgreSQLParser.OPEN_BRACKET);
					this.state = 9540;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.Integral) {
						{
						this.state = 9539;
						this.iconst();
						}
					}

					this.state = 9542;
					this.match(PostgreSQLParser.CLOSE_BRACKET);
					}
					}
				}
				this.state = 9547;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 966, 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 simpletypename(): SimpletypenameContext {
		let _localctx: SimpletypenameContext = new SimpletypenameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1172, PostgreSQLParser.RULE_simpletypename);
		try {
			this.state = 9563;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 969, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9548;
				this.generictype();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 9553;
				this.constinterval();
				this.state = 9561;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 968, this._ctx) ) {
				case 1:
					{
					this.state = 9555;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 967, this._ctx) ) {
					case 1:
						{
						this.state = 9554;
						this.opt_interval();
						}
						break;
					}
					}
					break;

				case 2:
					{
					this.state = 9557;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9558;
					this.iconst();
					this.state = 9559;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					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 consttypename(): ConsttypenameContext {
		let _localctx: ConsttypenameContext = new ConsttypenameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1174, PostgreSQLParser.RULE_consttypename);
		try {
			this.state = 9569;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_SMALLINT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9565;
				this.numeric();
				}
				break;
			case PostgreSQLParser.KW_BIT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9566;
				this.constbit();
				}
				break;
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_VARCHAR:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9567;
				this.constcharacter();
				}
				break;
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 9568;
				this.constdatetime();
				}
				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 generictype(): GenerictypeContext {
		let _localctx: GenerictypeContext = new GenerictypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1176, PostgreSQLParser.RULE_generictype);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9571;
			this.type_function_name();
			this.state = 9573;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 971, this._ctx) ) {
			case 1:
				{
				this.state = 9572;
				this.attrs();
				}
				break;
			}
			this.state = 9576;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 972, this._ctx) ) {
			case 1:
				{
				this.state = 9575;
				this.opt_type_modifiers();
				}
				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 opt_type_modifiers(): Opt_type_modifiersContext {
		let _localctx: Opt_type_modifiersContext = new Opt_type_modifiersContext(this._ctx, this.state);
		this.enterRule(_localctx, 1178, PostgreSQLParser.RULE_opt_type_modifiers);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9578;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9579;
			this.expr_list();
			this.state = 9580;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public numeric(): NumericContext {
		let _localctx: NumericContext = new NumericContext(this._ctx, this.state);
		this.enterRule(_localctx, 1180, PostgreSQLParser.RULE_numeric);
		try {
			this.state = 9606;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_INT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9582;
				this.match(PostgreSQLParser.KW_INT);
				}
				break;
			case PostgreSQLParser.KW_INTEGER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9583;
				this.match(PostgreSQLParser.KW_INTEGER);
				}
				break;
			case PostgreSQLParser.KW_SMALLINT:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9584;
				this.match(PostgreSQLParser.KW_SMALLINT);
				}
				break;
			case PostgreSQLParser.KW_BIGINT:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 9585;
				this.match(PostgreSQLParser.KW_BIGINT);
				}
				break;
			case PostgreSQLParser.KW_REAL:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 9586;
				this.match(PostgreSQLParser.KW_REAL);
				}
				break;
			case PostgreSQLParser.KW_FLOAT:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 9587;
				this.match(PostgreSQLParser.KW_FLOAT);
				this.state = 9589;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 973, this._ctx) ) {
				case 1:
					{
					this.state = 9588;
					this.opt_float();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_DOUBLE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 9591;
				this.match(PostgreSQLParser.KW_DOUBLE);
				this.state = 9592;
				this.match(PostgreSQLParser.KW_PRECISION);
				}
				break;
			case PostgreSQLParser.KW_DECIMAL:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 9593;
				this.match(PostgreSQLParser.KW_DECIMAL);
				this.state = 9595;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 974, this._ctx) ) {
				case 1:
					{
					this.state = 9594;
					this.opt_type_modifiers();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_DEC:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 9597;
				this.match(PostgreSQLParser.KW_DEC);
				this.state = 9599;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 975, this._ctx) ) {
				case 1:
					{
					this.state = 9598;
					this.opt_type_modifiers();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_NUMERIC:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 9601;
				this.match(PostgreSQLParser.KW_NUMERIC);
				this.state = 9603;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 976, this._ctx) ) {
				case 1:
					{
					this.state = 9602;
					this.opt_type_modifiers();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_BOOLEAN:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 9605;
				this.match(PostgreSQLParser.KW_BOOLEAN);
				}
				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 opt_float(): Opt_floatContext {
		let _localctx: Opt_floatContext = new Opt_floatContext(this._ctx, this.state);
		this.enterRule(_localctx, 1182, PostgreSQLParser.RULE_opt_float);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9608;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9609;
			this.iconst();
			this.state = 9610;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public bit(): BitContext {
		let _localctx: BitContext = new BitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1184, PostgreSQLParser.RULE_bit);
		try {
			this.state = 9614;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 978, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9612;
				this.bitwithlength();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9613;
				this.bitwithoutlength();
				}
				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 constbit(): ConstbitContext {
		let _localctx: ConstbitContext = new ConstbitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1186, PostgreSQLParser.RULE_constbit);
		try {
			this.state = 9618;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 979, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9616;
				this.bitwithlength();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9617;
				this.bitwithoutlength();
				}
				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 bitwithlength(): BitwithlengthContext {
		let _localctx: BitwithlengthContext = new BitwithlengthContext(this._ctx, this.state);
		this.enterRule(_localctx, 1188, PostgreSQLParser.RULE_bitwithlength);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9620;
			this.match(PostgreSQLParser.KW_BIT);
			this.state = 9622;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_VARYING) {
				{
				this.state = 9621;
				this.opt_varying();
				}
			}

			this.state = 9624;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 9625;
			this.expr_list();
			this.state = 9626;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public bitwithoutlength(): BitwithoutlengthContext {
		let _localctx: BitwithoutlengthContext = new BitwithoutlengthContext(this._ctx, this.state);
		this.enterRule(_localctx, 1190, PostgreSQLParser.RULE_bitwithoutlength);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9628;
			this.match(PostgreSQLParser.KW_BIT);
			this.state = 9630;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 981, this._ctx) ) {
			case 1:
				{
				this.state = 9629;
				this.opt_varying();
				}
				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 character(): CharacterContext {
		let _localctx: CharacterContext = new CharacterContext(this._ctx, this.state);
		this.enterRule(_localctx, 1192, PostgreSQLParser.RULE_character);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9632;
			this.character_c();
			this.state = 9637;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 982, this._ctx) ) {
			case 1:
				{
				this.state = 9633;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9634;
				this.iconst();
				this.state = 9635;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 constcharacter(): ConstcharacterContext {
		let _localctx: ConstcharacterContext = new ConstcharacterContext(this._ctx, this.state);
		this.enterRule(_localctx, 1194, PostgreSQLParser.RULE_constcharacter);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9639;
			this.character_c();
			this.state = 9644;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 9640;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9641;
				this.iconst();
				this.state = 9642;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public character_c(): Character_cContext {
		let _localctx: Character_cContext = new Character_cContext(this._ctx, this.state);
		this.enterRule(_localctx, 1196, PostgreSQLParser.RULE_character_c);
		let _la: number;
		try {
			this.state = 9656;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_NCHAR:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9646;
				_la = this._input.LA(1);
				if (!(((((_la - 391)) & ~0x1F) === 0 && ((1 << (_la - 391)) & ((1 << (PostgreSQLParser.KW_CHAR - 391)) | (1 << (PostgreSQLParser.KW_CHARACTER - 391)) | (1 << (PostgreSQLParser.KW_NCHAR - 391)))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 9648;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 984, this._ctx) ) {
				case 1:
					{
					this.state = 9647;
					this.opt_varying();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_VARCHAR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9650;
				this.match(PostgreSQLParser.KW_VARCHAR);
				}
				break;
			case PostgreSQLParser.KW_NATIONAL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9651;
				this.match(PostgreSQLParser.KW_NATIONAL);
				this.state = 9652;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_CHAR || _la === PostgreSQLParser.KW_CHARACTER)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 9654;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 985, this._ctx) ) {
				case 1:
					{
					this.state = 9653;
					this.opt_varying();
					}
					break;
				}
				}
				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 opt_varying(): Opt_varyingContext {
		let _localctx: Opt_varyingContext = new Opt_varyingContext(this._ctx, this.state);
		this.enterRule(_localctx, 1198, PostgreSQLParser.RULE_opt_varying);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9658;
			this.match(PostgreSQLParser.KW_VARYING);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public constdatetime(): ConstdatetimeContext {
		let _localctx: ConstdatetimeContext = new ConstdatetimeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1200, PostgreSQLParser.RULE_constdatetime);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9660;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_TIME || _la === PostgreSQLParser.KW_TIMESTAMP)) {
			this._errHandler.recoverInline(this);
			} else {
				if (this._input.LA(1) === Token.EOF) {
					this.matchedEOF = true;
				}

				this._errHandler.reportMatch(this);
				this.consume();
			}
			this.state = 9665;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 987, this._ctx) ) {
			case 1:
				{
				this.state = 9661;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9662;
				this.iconst();
				this.state = 9663;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			}
			this.state = 9668;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 988, this._ctx) ) {
			case 1:
				{
				this.state = 9667;
				this.opt_timezone();
				}
				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 constinterval(): ConstintervalContext {
		let _localctx: ConstintervalContext = new ConstintervalContext(this._ctx, this.state);
		this.enterRule(_localctx, 1202, PostgreSQLParser.RULE_constinterval);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9670;
			this.match(PostgreSQLParser.KW_INTERVAL);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_timezone(): Opt_timezoneContext {
		let _localctx: Opt_timezoneContext = new Opt_timezoneContext(this._ctx, this.state);
		this.enterRule(_localctx, 1204, PostgreSQLParser.RULE_opt_timezone);
		try {
			this.state = 9678;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_WITH:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9672;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 9673;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 9674;
				this.match(PostgreSQLParser.KW_ZONE);
				}
				break;
			case PostgreSQLParser.KW_WITHOUT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9675;
				this.match(PostgreSQLParser.KW_WITHOUT);
				this.state = 9676;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 9677;
				this.match(PostgreSQLParser.KW_ZONE);
				}
				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 opt_interval(): Opt_intervalContext {
		let _localctx: Opt_intervalContext = new Opt_intervalContext(this._ctx, this.state);
		this.enterRule(_localctx, 1206, PostgreSQLParser.RULE_opt_interval);
		try {
			this.state = 9705;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 992, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9680;
				this.match(PostgreSQLParser.KW_YEAR);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9681;
				this.match(PostgreSQLParser.KW_MONTH);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9682;
				this.match(PostgreSQLParser.KW_DAY);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 9683;
				this.match(PostgreSQLParser.KW_HOUR);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 9684;
				this.match(PostgreSQLParser.KW_MINUTE);
				}
				break;

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

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 9686;
				this.match(PostgreSQLParser.KW_YEAR);
				this.state = 9687;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 9688;
				this.match(PostgreSQLParser.KW_MONTH);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 9689;
				this.match(PostgreSQLParser.KW_DAY);
				this.state = 9690;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 9694;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_HOUR:
					{
					this.state = 9691;
					this.match(PostgreSQLParser.KW_HOUR);
					}
					break;
				case PostgreSQLParser.KW_MINUTE:
					{
					this.state = 9692;
					this.match(PostgreSQLParser.KW_MINUTE);
					}
					break;
				case PostgreSQLParser.KW_SECOND:
					{
					this.state = 9693;
					this.interval_second();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 9696;
				this.match(PostgreSQLParser.KW_HOUR);
				this.state = 9697;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 9700;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_MINUTE:
					{
					this.state = 9698;
					this.match(PostgreSQLParser.KW_MINUTE);
					}
					break;
				case PostgreSQLParser.KW_SECOND:
					{
					this.state = 9699;
					this.interval_second();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 9702;
				this.match(PostgreSQLParser.KW_MINUTE);
				this.state = 9703;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 9704;
				this.interval_second();
				}
				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 interval_second(): Interval_secondContext {
		let _localctx: Interval_secondContext = new Interval_secondContext(this._ctx, this.state);
		this.enterRule(_localctx, 1208, PostgreSQLParser.RULE_interval_second);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9707;
			this.match(PostgreSQLParser.KW_SECOND);
			this.state = 9712;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 993, this._ctx) ) {
			case 1:
				{
				this.state = 9708;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9709;
				this.iconst();
				this.state = 9710;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 opt_escape(): Opt_escapeContext {
		let _localctx: Opt_escapeContext = new Opt_escapeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1210, PostgreSQLParser.RULE_opt_escape);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9714;
			this.match(PostgreSQLParser.KW_ESCAPE);
			this.state = 9715;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public a_expr(): A_exprContext {
		let _localctx: A_exprContext = new A_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1212, PostgreSQLParser.RULE_a_expr);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9717;
			this.a_expr_qual();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public a_expr_qual(): A_expr_qualContext {
		let _localctx: A_expr_qualContext = new A_expr_qualContext(this._ctx, this.state);
		this.enterRule(_localctx, 1214, PostgreSQLParser.RULE_a_expr_qual);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9719;
			this.a_expr_lessless();
			this.state = 9721;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 994, this._ctx) ) {
			case 1:
				{
				this.state = 9720;
				this.qual_op();
				}
				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 a_expr_lessless(): A_expr_lesslessContext {
		let _localctx: A_expr_lesslessContext = new A_expr_lesslessContext(this._ctx, this.state);
		this.enterRule(_localctx, 1216, PostgreSQLParser.RULE_a_expr_lessless);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9723;
			this.a_expr_or();
			this.state = 9728;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 995, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9724;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.LESS_LESS || _la === PostgreSQLParser.GREATER_GREATER)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 9725;
					this.a_expr_or();
					}
					}
				}
				this.state = 9730;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 995, 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 a_expr_or(): A_expr_orContext {
		let _localctx: A_expr_orContext = new A_expr_orContext(this._ctx, this.state);
		this.enterRule(_localctx, 1218, PostgreSQLParser.RULE_a_expr_or);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9731;
			this.a_expr_and();
			this.state = 9736;
			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 = 9732;
					this.match(PostgreSQLParser.KW_OR);
					this.state = 9733;
					this.a_expr_and();
					}
					}
				}
				this.state = 9738;
				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 a_expr_and(): A_expr_andContext {
		let _localctx: A_expr_andContext = new A_expr_andContext(this._ctx, this.state);
		this.enterRule(_localctx, 1220, PostgreSQLParser.RULE_a_expr_and);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9739;
			this.a_expr_in();
			this.state = 9744;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 997, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9740;
					this.match(PostgreSQLParser.KW_AND);
					this.state = 9741;
					this.a_expr_in();
					}
					}
				}
				this.state = 9746;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 997, 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 a_expr_in(): A_expr_inContext {
		let _localctx: A_expr_inContext = new A_expr_inContext(this._ctx, this.state);
		this.enterRule(_localctx, 1222, PostgreSQLParser.RULE_a_expr_in);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9747;
			this.a_expr_unary_not();
			this.state = 9753;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 999, this._ctx) ) {
			case 1:
				{
				this.state = 9749;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NOT) {
					{
					this.state = 9748;
					this.match(PostgreSQLParser.KW_NOT);
					}
				}

				this.state = 9751;
				this.match(PostgreSQLParser.KW_IN);
				this.state = 9752;
				this.in_expr();
				}
				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 a_expr_unary_not(): A_expr_unary_notContext {
		let _localctx: A_expr_unary_notContext = new A_expr_unary_notContext(this._ctx, this.state);
		this.enterRule(_localctx, 1224, PostgreSQLParser.RULE_a_expr_unary_not);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9756;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_NOT) {
				{
				this.state = 9755;
				this.match(PostgreSQLParser.KW_NOT);
				}
			}

			this.state = 9758;
			this.a_expr_isnull();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public a_expr_isnull(): A_expr_isnullContext {
		let _localctx: A_expr_isnullContext = new A_expr_isnullContext(this._ctx, this.state);
		this.enterRule(_localctx, 1226, PostgreSQLParser.RULE_a_expr_isnull);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9760;
			this.a_expr_is_not();
			this.state = 9762;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1001, this._ctx) ) {
			case 1:
				{
				this.state = 9761;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_ISNULL || _la === PostgreSQLParser.KW_NOTNULL)) {
				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 a_expr_is_not(): A_expr_is_notContext {
		let _localctx: A_expr_is_notContext = new A_expr_is_notContext(this._ctx, this.state);
		this.enterRule(_localctx, 1228, PostgreSQLParser.RULE_a_expr_is_not);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9764;
			this.a_expr_compare();
			this.state = 9788;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1005, this._ctx) ) {
			case 1:
				{
				this.state = 9765;
				this.match(PostgreSQLParser.KW_IS);
				this.state = 9767;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NOT) {
					{
					this.state = 9766;
					this.match(PostgreSQLParser.KW_NOT);
					}
				}

				this.state = 9786;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_NULL:
					{
					this.state = 9769;
					this.match(PostgreSQLParser.KW_NULL);
					}
					break;
				case PostgreSQLParser.KW_TRUE:
					{
					this.state = 9770;
					this.match(PostgreSQLParser.KW_TRUE);
					}
					break;
				case PostgreSQLParser.KW_FALSE:
					{
					this.state = 9771;
					this.match(PostgreSQLParser.KW_FALSE);
					}
					break;
				case PostgreSQLParser.KW_UNKNOWN:
					{
					this.state = 9772;
					this.match(PostgreSQLParser.KW_UNKNOWN);
					}
					break;
				case PostgreSQLParser.KW_DISTINCT:
					{
					this.state = 9773;
					this.match(PostgreSQLParser.KW_DISTINCT);
					this.state = 9774;
					this.match(PostgreSQLParser.KW_FROM);
					this.state = 9775;
					this.a_expr();
					}
					break;
				case PostgreSQLParser.KW_OF:
					{
					this.state = 9776;
					this.match(PostgreSQLParser.KW_OF);
					this.state = 9777;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9778;
					this.type_list();
					this.state = 9779;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				case PostgreSQLParser.KW_DOCUMENT:
					{
					this.state = 9781;
					this.match(PostgreSQLParser.KW_DOCUMENT);
					}
					break;
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
					{
					this.state = 9783;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & ((1 << (PostgreSQLParser.KW_NFC - 483)) | (1 << (PostgreSQLParser.KW_NFD - 483)) | (1 << (PostgreSQLParser.KW_NFKC - 483)) | (1 << (PostgreSQLParser.KW_NFKD - 483)))) !== 0)) {
						{
						this.state = 9782;
						this.unicode_normal_form();
						}
					}

					this.state = 9785;
					this.match(PostgreSQLParser.KW_NORMALIZED);
					}
					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 a_expr_compare(): A_expr_compareContext {
		let _localctx: A_expr_compareContext = new A_expr_compareContext(this._ctx, this.state);
		this.enterRule(_localctx, 1230, PostgreSQLParser.RULE_a_expr_compare);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9790;
			this.a_expr_like();
			this.state = 9802;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1007, this._ctx) ) {
			case 1:
				{
				this.state = 9791;
				_la = this._input.LA(1);
				if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.EQUAL) | (1 << PostgreSQLParser.LT) | (1 << PostgreSQLParser.GT) | (1 << PostgreSQLParser.LESS_EQUALS) | (1 << PostgreSQLParser.GREATER_EQUALS) | (1 << PostgreSQLParser.NOT_EQUALS))) !== 0))) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 9792;
				this.a_expr_like();
				}
				break;

			case 2:
				{
				this.state = 9793;
				this.subquery_Op();
				this.state = 9794;
				this.sub_type();
				this.state = 9800;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1006, this._ctx) ) {
				case 1:
					{
					this.state = 9795;
					this.select_with_parens();
					}
					break;

				case 2:
					{
					this.state = 9796;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 9797;
					this.a_expr();
					this.state = 9798;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					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 a_expr_like(): A_expr_likeContext {
		let _localctx: A_expr_likeContext = new A_expr_likeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1232, PostgreSQLParser.RULE_a_expr_like);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9804;
			this.a_expr_qual_op();
			this.state = 9822;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1012, this._ctx) ) {
			case 1:
				{
				this.state = 9806;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NOT) {
					{
					this.state = 9805;
					this.match(PostgreSQLParser.KW_NOT);
					}
				}

				this.state = 9816;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_LIKE:
					{
					this.state = 9808;
					this.match(PostgreSQLParser.KW_LIKE);
					}
					break;
				case PostgreSQLParser.KW_ILIKE:
					{
					this.state = 9809;
					this.match(PostgreSQLParser.KW_ILIKE);
					}
					break;
				case PostgreSQLParser.KW_SIMILAR:
					{
					this.state = 9810;
					this.match(PostgreSQLParser.KW_SIMILAR);
					this.state = 9811;
					this.match(PostgreSQLParser.KW_TO);
					}
					break;
				case PostgreSQLParser.KW_BETWEEN:
					{
					this.state = 9812;
					this.match(PostgreSQLParser.KW_BETWEEN);
					this.state = 9814;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_SYMMETRIC) {
						{
						this.state = 9813;
						this.match(PostgreSQLParser.KW_SYMMETRIC);
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 9818;
				this.a_expr_qual_op();
				this.state = 9820;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1011, this._ctx) ) {
				case 1:
					{
					this.state = 9819;
					this.opt_escape();
					}
					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 a_expr_qual_op(): A_expr_qual_opContext {
		let _localctx: A_expr_qual_opContext = new A_expr_qual_opContext(this._ctx, this.state);
		this.enterRule(_localctx, 1234, PostgreSQLParser.RULE_a_expr_qual_op);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9824;
			this.a_expr_unary_qualop();
			this.state = 9830;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1013, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9825;
					this.qual_op();
					this.state = 9826;
					this.a_expr_unary_qualop();
					}
					}
				}
				this.state = 9832;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1013, 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 a_expr_unary_qualop(): A_expr_unary_qualopContext {
		let _localctx: A_expr_unary_qualopContext = new A_expr_unary_qualopContext(this._ctx, this.state);
		this.enterRule(_localctx, 1236, PostgreSQLParser.RULE_a_expr_unary_qualop);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9834;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1014, this._ctx) ) {
			case 1:
				{
				this.state = 9833;
				this.qual_op();
				}
				break;
			}
			this.state = 9836;
			this.a_expr_add();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public a_expr_add(): A_expr_addContext {
		let _localctx: A_expr_addContext = new A_expr_addContext(this._ctx, this.state);
		this.enterRule(_localctx, 1238, PostgreSQLParser.RULE_a_expr_add);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9838;
			this.a_expr_mul();
			this.state = 9843;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1015, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9839;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 9840;
					this.a_expr_mul();
					}
					}
				}
				this.state = 9845;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1015, 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 a_expr_mul(): A_expr_mulContext {
		let _localctx: A_expr_mulContext = new A_expr_mulContext(this._ctx, this.state);
		this.enterRule(_localctx, 1240, PostgreSQLParser.RULE_a_expr_mul);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9846;
			this.a_expr_caret();
			this.state = 9851;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1016, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 9847;
					_la = this._input.LA(1);
					if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.STAR) | (1 << PostgreSQLParser.SLASH) | (1 << PostgreSQLParser.PERCENT))) !== 0))) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

						this._errHandler.reportMatch(this);
						this.consume();
					}
					this.state = 9848;
					this.a_expr_caret();
					}
					}
				}
				this.state = 9853;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1016, 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 a_expr_caret(): A_expr_caretContext {
		let _localctx: A_expr_caretContext = new A_expr_caretContext(this._ctx, this.state);
		this.enterRule(_localctx, 1242, PostgreSQLParser.RULE_a_expr_caret);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9854;
			this.a_expr_unary_sign();
			this.state = 9857;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1017, this._ctx) ) {
			case 1:
				{
				this.state = 9855;
				this.match(PostgreSQLParser.CARET);
				this.state = 9856;
				this.a_expr();
				}
				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 a_expr_unary_sign(): A_expr_unary_signContext {
		let _localctx: A_expr_unary_signContext = new A_expr_unary_signContext(this._ctx, this.state);
		this.enterRule(_localctx, 1244, PostgreSQLParser.RULE_a_expr_unary_sign);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9860;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS) {
				{
				this.state = 9859;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

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

			this.state = 9862;
			this.a_expr_at_time_zone();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public a_expr_at_time_zone(): A_expr_at_time_zoneContext {
		let _localctx: A_expr_at_time_zoneContext = new A_expr_at_time_zoneContext(this._ctx, this.state);
		this.enterRule(_localctx, 1246, PostgreSQLParser.RULE_a_expr_at_time_zone);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9864;
			this.a_expr_collate();
			this.state = 9869;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1019, this._ctx) ) {
			case 1:
				{
				this.state = 9865;
				this.match(PostgreSQLParser.KW_AT);
				this.state = 9866;
				this.match(PostgreSQLParser.KW_TIME);
				this.state = 9867;
				this.match(PostgreSQLParser.KW_ZONE);
				this.state = 9868;
				this.a_expr();
				}
				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 a_expr_collate(): A_expr_collateContext {
		let _localctx: A_expr_collateContext = new A_expr_collateContext(this._ctx, this.state);
		this.enterRule(_localctx, 1248, PostgreSQLParser.RULE_a_expr_collate);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9871;
			this.a_expr_typecast();
			this.state = 9874;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1020, this._ctx) ) {
			case 1:
				{
				this.state = 9872;
				this.match(PostgreSQLParser.KW_COLLATE);
				this.state = 9873;
				this.any_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 a_expr_typecast(): A_expr_typecastContext {
		let _localctx: A_expr_typecastContext = new A_expr_typecastContext(this._ctx, this.state);
		this.enterRule(_localctx, 1250, PostgreSQLParser.RULE_a_expr_typecast);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9876;
			this.c_expr();
			this.state = 9881;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.TYPECAST) {
				{
				{
				this.state = 9877;
				this.match(PostgreSQLParser.TYPECAST);
				this.state = 9878;
				this.typename();
				}
				}
				this.state = 9883;
				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;
	}

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

		let _parentctx: ParserRuleContext = this._ctx;
		let _parentState: number = this.state;
		let _localctx: B_exprContext = new B_exprContext(this._ctx, _parentState);
		let _prevctx: B_exprContext = _localctx;
		let _startState: number = 1252;
		this.enterRecursionRule(_localctx, 1252, PostgreSQLParser.RULE_b_expr, _p);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9891;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1022, this._ctx) ) {
			case 1:
				{
				this.state = 9885;
				this.c_expr();
				}
				break;

			case 2:
				{
				this.state = 9886;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 9887;
				this.b_expr(9);
				}
				break;

			case 3:
				{
				this.state = 9888;
				this.qual_op();
				this.state = 9889;
				this.b_expr(3);
				}
				break;
			}
			this._ctx._stop = this._input.tryLT(-1);
			this.state = 9932;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1026, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					if (this._parseListeners != null) {
						this.triggerExitRuleEvent();
					}
					_prevctx = _localctx;
					{
					this.state = 9930;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1025, this._ctx) ) {
					case 1:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9893;
						if (!(this.precpred(this._ctx, 8))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 8)");
						}
						this.state = 9894;
						this.match(PostgreSQLParser.CARET);
						this.state = 9895;
						this.b_expr(9);
						}
						break;

					case 2:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9896;
						if (!(this.precpred(this._ctx, 7))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 7)");
						}
						this.state = 9897;
						_la = this._input.LA(1);
						if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.STAR) | (1 << PostgreSQLParser.SLASH) | (1 << PostgreSQLParser.PERCENT))) !== 0))) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 9898;
						this.b_expr(8);
						}
						break;

					case 3:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9899;
						if (!(this.precpred(this._ctx, 6))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 6)");
						}
						this.state = 9900;
						_la = this._input.LA(1);
						if (!(_la === PostgreSQLParser.PLUS || _la === PostgreSQLParser.MINUS)) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 9901;
						this.b_expr(7);
						}
						break;

					case 4:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9902;
						if (!(this.precpred(this._ctx, 5))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 5)");
						}
						this.state = 9903;
						this.qual_op();
						this.state = 9904;
						this.b_expr(6);
						}
						break;

					case 5:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9906;
						if (!(this.precpred(this._ctx, 4))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 4)");
						}
						this.state = 9907;
						_la = this._input.LA(1);
						if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.EQUAL) | (1 << PostgreSQLParser.LT) | (1 << PostgreSQLParser.GT) | (1 << PostgreSQLParser.LESS_EQUALS) | (1 << PostgreSQLParser.GREATER_EQUALS) | (1 << PostgreSQLParser.NOT_EQUALS))) !== 0))) {
						this._errHandler.recoverInline(this);
						} else {
							if (this._input.LA(1) === Token.EOF) {
								this.matchedEOF = true;
							}

							this._errHandler.reportMatch(this);
							this.consume();
						}
						this.state = 9908;
						this.b_expr(5);
						}
						break;

					case 6:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9909;
						if (!(this.precpred(this._ctx, 10))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
						}
						this.state = 9910;
						this.match(PostgreSQLParser.TYPECAST);
						this.state = 9911;
						this.typename();
						}
						break;

					case 7:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9912;
						if (!(this.precpred(this._ctx, 2))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 2)");
						}
						this.state = 9913;
						this.qual_op();
						}
						break;

					case 8:
						{
						_localctx = new B_exprContext(_parentctx, _parentState);
						this.pushNewRecursionContext(_localctx, _startState, PostgreSQLParser.RULE_b_expr);
						this.state = 9914;
						if (!(this.precpred(this._ctx, 1))) {
							throw this.createFailedPredicateException("this.precpred(this._ctx, 1)");
						}
						this.state = 9915;
						this.match(PostgreSQLParser.KW_IS);
						this.state = 9917;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la === PostgreSQLParser.KW_NOT) {
							{
							this.state = 9916;
							this.match(PostgreSQLParser.KW_NOT);
							}
						}

						this.state = 9928;
						this._errHandler.sync(this);
						switch (this._input.LA(1)) {
						case PostgreSQLParser.KW_DISTINCT:
							{
							this.state = 9919;
							this.match(PostgreSQLParser.KW_DISTINCT);
							this.state = 9920;
							this.match(PostgreSQLParser.KW_FROM);
							this.state = 9921;
							this.b_expr(0);
							}
							break;
						case PostgreSQLParser.KW_OF:
							{
							this.state = 9922;
							this.match(PostgreSQLParser.KW_OF);
							this.state = 9923;
							this.match(PostgreSQLParser.OPEN_PAREN);
							this.state = 9924;
							this.type_list();
							this.state = 9925;
							this.match(PostgreSQLParser.CLOSE_PAREN);
							}
							break;
						case PostgreSQLParser.KW_DOCUMENT:
							{
							this.state = 9927;
							this.match(PostgreSQLParser.KW_DOCUMENT);
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						break;
					}
					}
				}
				this.state = 9934;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1026, 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 c_expr(): C_exprContext {
		let _localctx: C_exprContext = new C_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1254, PostgreSQLParser.RULE_c_expr);
		try {
			this.state = 9971;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1029, this._ctx) ) {
			case 1:
				_localctx = new C_expr_existsContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 9935;
				this.match(PostgreSQLParser.KW_EXISTS);
				this.state = 9936;
				this.select_with_parens();
				}
				break;

			case 2:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 9937;
				this.match(PostgreSQLParser.KW_ARRAY);
				this.state = 9940;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 9938;
					this.select_with_parens();
					}
					break;
				case PostgreSQLParser.OPEN_BRACKET:
					{
					this.state = 9939;
					this.array_expr();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 9942;
				this.match(PostgreSQLParser.PARAM);
				this.state = 9943;
				this.opt_indirection();
				}
				break;

			case 4:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 9944;
				this.match(PostgreSQLParser.KW_GROUPING);
				this.state = 9945;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9946;
				this.expr_list();
				this.state = 9947;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 5:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 9949;
				this.match(PostgreSQLParser.KW_UNIQUE);
				this.state = 9950;
				this.select_with_parens();
				}
				break;

			case 6:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 9951;
				this.columnref();
				}
				break;

			case 7:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 9952;
				this.aexprconst();
				}
				break;

			case 8:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 9953;
				this.plsqlvariablename();
				}
				break;

			case 9:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 9954;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9955;
				(_localctx as C_expr_exprContext)._a_expr_in_parens = this.a_expr();
				this.state = 9956;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 9957;
				this.opt_indirection();
				}
				break;

			case 10:
				_localctx = new C_expr_caseContext(_localctx);
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 9959;
				this.case_expr();
				}
				break;

			case 11:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 9960;
				this.func_expr();
				}
				break;

			case 12:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 9961;
				this.select_with_parens();
				this.state = 9963;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1028, this._ctx) ) {
				case 1:
					{
					this.state = 9962;
					this.indirection();
					}
					break;
				}
				}
				break;

			case 13:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 9965;
				this.explicit_row();
				}
				break;

			case 14:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 9966;
				this.implicit_row();
				}
				break;

			case 15:
				_localctx = new C_expr_exprContext(_localctx);
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 9967;
				this.row();
				this.state = 9968;
				this.match(PostgreSQLParser.KW_OVERLAPS);
				this.state = 9969;
				this.row();
				}
				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 plsqlvariablename(): PlsqlvariablenameContext {
		let _localctx: PlsqlvariablenameContext = new PlsqlvariablenameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1256, PostgreSQLParser.RULE_plsqlvariablename);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9973;
			this.match(PostgreSQLParser.PLSQLVARIABLENAME);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public func_application(): Func_applicationContext {
		let _localctx: Func_applicationContext = new Func_applicationContext(this._ctx, this.state);
		this.enterRule(_localctx, 1258, PostgreSQLParser.RULE_func_application);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 9975;
			this.function_name();
			this.state = 10001;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1035, this._ctx) ) {
			case 1:
				{
				this.state = 9976;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 9998;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.OPEN_PAREN:
				case PostgreSQLParser.PLUS:
				case PostgreSQLParser.MINUS:
				case PostgreSQLParser.PARAM:
				case PostgreSQLParser.Operator:
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_CASE:
				case PostgreSQLParser.KW_CAST:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_CURRENT_CATALOG:
				case PostgreSQLParser.KW_CURRENT_DATE:
				case PostgreSQLParser.KW_CURRENT_ROLE:
				case PostgreSQLParser.KW_CURRENT_TIME:
				case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
				case PostgreSQLParser.KW_CURRENT_USER:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FALSE:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_LOCALTIME:
				case PostgreSQLParser.KW_LOCALTIMESTAMP:
				case PostgreSQLParser.KW_NOT:
				case PostgreSQLParser.KW_NULL:
				case PostgreSQLParser.KW_SESSION_USER:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_TRUE:
				case PostgreSQLParser.KW_UNIQUE:
				case PostgreSQLParser.KW_USER:
				case PostgreSQLParser.KW_AUTHORIZATION:
				case PostgreSQLParser.KW_BINARY:
				case PostgreSQLParser.KW_COLLATION:
				case PostgreSQLParser.KW_CONCURRENTLY:
				case PostgreSQLParser.KW_CROSS:
				case PostgreSQLParser.KW_CURRENT_SCHEMA:
				case PostgreSQLParser.KW_FREEZE:
				case PostgreSQLParser.KW_FULL:
				case PostgreSQLParser.KW_ILIKE:
				case PostgreSQLParser.KW_INNER:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_ISNULL:
				case PostgreSQLParser.KW_JOIN:
				case PostgreSQLParser.KW_LEFT:
				case PostgreSQLParser.KW_LIKE:
				case PostgreSQLParser.KW_NATURAL:
				case PostgreSQLParser.KW_NOTNULL:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_OVERLAPS:
				case PostgreSQLParser.KW_RIGHT:
				case PostgreSQLParser.KW_SIMILAR:
				case PostgreSQLParser.KW_VERBOSE:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_TABLESAMPLE:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.BinaryStringConstant:
				case PostgreSQLParser.HexadecimalStringConstant:
				case PostgreSQLParser.Integral:
				case PostgreSQLParser.Numeric:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 9977;
					this.func_arg_list();
					this.state = 9981;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.COMMA) {
						{
						this.state = 9978;
						this.match(PostgreSQLParser.COMMA);
						this.state = 9979;
						this.match(PostgreSQLParser.KW_VARIADIC);
						this.state = 9980;
						this.func_arg_expr();
						}
					}

					this.state = 9984;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_ORDER) {
						{
						this.state = 9983;
						this.opt_sort_clause();
						}
					}

					}
					break;
				case PostgreSQLParser.KW_VARIADIC:
					{
					this.state = 9986;
					this.match(PostgreSQLParser.KW_VARIADIC);
					this.state = 9987;
					this.func_arg_expr();
					this.state = 9989;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_ORDER) {
						{
						this.state = 9988;
						this.opt_sort_clause();
						}
					}

					}
					break;
				case PostgreSQLParser.KW_ALL:
				case PostgreSQLParser.KW_DISTINCT:
					{
					this.state = 9991;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.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 = 9992;
					this.func_arg_list();
					this.state = 9994;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_ORDER) {
						{
						this.state = 9993;
						this.opt_sort_clause();
						}
					}

					}
					break;
				case PostgreSQLParser.STAR:
					{
					this.state = 9996;
					this.match(PostgreSQLParser.STAR);
					}
					break;
				case PostgreSQLParser.CLOSE_PAREN:
					// tslint:disable-next-line:no-empty
					{
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 10000;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 func_expr(): Func_exprContext {
		let _localctx: Func_exprContext = new Func_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1260, PostgreSQLParser.RULE_func_expr);
		try {
			this.state = 10014;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1039, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10003;
				this.func_application();
				this.state = 10005;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1036, this._ctx) ) {
				case 1:
					{
					this.state = 10004;
					this.within_group_clause();
					}
					break;
				}
				this.state = 10008;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1037, this._ctx) ) {
				case 1:
					{
					this.state = 10007;
					this.filter_clause();
					}
					break;
				}
				this.state = 10011;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1038, this._ctx) ) {
				case 1:
					{
					this.state = 10010;
					this.over_clause();
					}
					break;
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10013;
				this.func_expr_common_subexpr();
				}
				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 func_expr_windowless(): Func_expr_windowlessContext {
		let _localctx: Func_expr_windowlessContext = new Func_expr_windowlessContext(this._ctx, this.state);
		this.enterRule(_localctx, 1262, PostgreSQLParser.RULE_func_expr_windowless);
		try {
			this.state = 10018;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1040, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10016;
				this.func_application();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10017;
				this.func_expr_common_subexpr();
				}
				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 func_expr_common_subexpr(): Func_expr_common_subexprContext {
		let _localctx: Func_expr_common_subexprContext = new Func_expr_common_subexprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1264, PostgreSQLParser.RULE_func_expr_common_subexpr);
		let _la: number;
		try {
			this.state = 10204;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_COLLATION:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10020;
				this.match(PostgreSQLParser.KW_COLLATION);
				this.state = 10021;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 10022;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10023;
				this.a_expr();
				this.state = 10024;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_DATE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10026;
				this.match(PostgreSQLParser.KW_CURRENT_DATE);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_TIME:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10027;
				this.match(PostgreSQLParser.KW_CURRENT_TIME);
				this.state = 10032;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1041, this._ctx) ) {
				case 1:
					{
					this.state = 10028;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10029;
					this.iconst();
					this.state = 10030;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10034;
				this.match(PostgreSQLParser.KW_CURRENT_TIMESTAMP);
				this.state = 10039;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1042, this._ctx) ) {
				case 1:
					{
					this.state = 10035;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10036;
					this.iconst();
					this.state = 10037;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_LOCALTIME:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10041;
				this.match(PostgreSQLParser.KW_LOCALTIME);
				this.state = 10046;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1043, this._ctx) ) {
				case 1:
					{
					this.state = 10042;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10043;
					this.iconst();
					this.state = 10044;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10048;
				this.match(PostgreSQLParser.KW_LOCALTIMESTAMP);
				this.state = 10053;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1044, this._ctx) ) {
				case 1:
					{
					this.state = 10049;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10050;
					this.iconst();
					this.state = 10051;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_CURRENT_ROLE:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 10055;
				this.match(PostgreSQLParser.KW_CURRENT_ROLE);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_USER:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 10056;
				this.match(PostgreSQLParser.KW_CURRENT_USER);
				}
				break;
			case PostgreSQLParser.KW_SESSION_USER:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 10057;
				this.match(PostgreSQLParser.KW_SESSION_USER);
				}
				break;
			case PostgreSQLParser.KW_USER:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 10058;
				this.match(PostgreSQLParser.KW_USER);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_CATALOG:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 10059;
				this.match(PostgreSQLParser.KW_CURRENT_CATALOG);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 10060;
				this.match(PostgreSQLParser.KW_CURRENT_SCHEMA);
				}
				break;
			case PostgreSQLParser.KW_CAST:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 10061;
				this.match(PostgreSQLParser.KW_CAST);
				this.state = 10062;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10063;
				this.a_expr();
				this.state = 10064;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 10065;
				this.typename();
				this.state = 10066;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_EXTRACT:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 10068;
				this.match(PostgreSQLParser.KW_EXTRACT);
				this.state = 10069;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10071;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (PostgreSQLParser.KW_ABSOLUTE - 130)) | (1 << (PostgreSQLParser.KW_BACKWARD - 130)) | (1 << (PostgreSQLParser.KW_CHAIN - 130)) | (1 << (PostgreSQLParser.KW_CLOSE - 130)) | (1 << (PostgreSQLParser.KW_COMMIT - 130)))) !== 0) || ((((_la - 167)) & ~0x1F) === 0 && ((1 << (_la - 167)) & ((1 << (PostgreSQLParser.KW_CONTINUE - 167)) | (1 << (PostgreSQLParser.KW_CURSOR - 167)) | (1 << (PostgreSQLParser.KW_DAY - 167)))) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & ((1 << (PostgreSQLParser.KW_FIRST - 207)) | (1 << (PostgreSQLParser.KW_FORWARD - 207)) | (1 << (PostgreSQLParser.KW_HOUR - 207)))) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (PostgreSQLParser.KW_INSERT - 241)) | (1 << (PostgreSQLParser.KW_LAST - 241)) | (1 << (PostgreSQLParser.KW_MINUTE - 241)) | (1 << (PostgreSQLParser.KW_MONTH - 241)) | (1 << (PostgreSQLParser.KW_MOVE - 241)) | (1 << (PostgreSQLParser.KW_NEXT - 241)) | (1 << (PostgreSQLParser.KW_NO - 241)))) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & ((1 << (PostgreSQLParser.KW_OPTION - 279)) | (1 << (PostgreSQLParser.KW_PRIOR - 279)) | (1 << (PostgreSQLParser.KW_RELATIVE - 279)))) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & ((1 << (PostgreSQLParser.KW_RESET - 313)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 313)) | (1 << (PostgreSQLParser.KW_SCHEMA - 313)) | (1 << (PostgreSQLParser.KW_SCROLL - 313)) | (1 << (PostgreSQLParser.KW_SECOND - 313)) | (1 << (PostgreSQLParser.KW_SET - 313)))) !== 0) || _la === PostgreSQLParser.KW_TYPE || _la === PostgreSQLParser.KW_YEAR || _la === PostgreSQLParser.KW_CALL || _la === PostgreSQLParser.KW_CURRENT || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & ((1 << (PostgreSQLParser.KW_ROWTYPE - 477)) | (1 << (PostgreSQLParser.KW_DUMP - 477)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 477)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 477)) | (1 << (PostgreSQLParser.KW_ERROR - 477)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 477)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 477)) | (1 << (PostgreSQLParser.KW_ALIAS - 477)) | (1 << (PostgreSQLParser.KW_CONSTANT - 477)) | (1 << (PostgreSQLParser.KW_PERFORM - 477)) | (1 << (PostgreSQLParser.KW_GET - 477)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 477)) | (1 << (PostgreSQLParser.KW_STACKED - 477)) | (1 << (PostgreSQLParser.KW_ELSIF - 477)) | (1 << (PostgreSQLParser.KW_REVERSE - 477)) | (1 << (PostgreSQLParser.KW_SLICE - 477)) | (1 << (PostgreSQLParser.KW_EXIT - 477)) | (1 << (PostgreSQLParser.KW_RETURN - 477)))) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & ((1 << (PostgreSQLParser.KW_QUERY - 509)) | (1 << (PostgreSQLParser.KW_RAISE - 509)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 509)) | (1 << (PostgreSQLParser.KW_DEBUG - 509)) | (1 << (PostgreSQLParser.KW_LOG - 509)) | (1 << (PostgreSQLParser.KW_INFO - 509)) | (1 << (PostgreSQLParser.KW_NOTICE - 509)) | (1 << (PostgreSQLParser.KW_WARNING - 509)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 509)) | (1 << (PostgreSQLParser.KW_ASSERT - 509)) | (1 << (PostgreSQLParser.KW_OPEN - 509)))) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & ((1 << (PostgreSQLParser.Identifier - 549)) | (1 << (PostgreSQLParser.QuotedIdentifier - 549)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 549)) | (1 << (PostgreSQLParser.StringConstant - 549)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 549)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 549)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 549)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 549)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 10070;
					this.extract_list();
					}
				}

				this.state = 10073;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_NORMALIZE:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 10074;
				this.match(PostgreSQLParser.KW_NORMALIZE);
				this.state = 10075;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10076;
				this.a_expr();
				this.state = 10079;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.COMMA) {
					{
					this.state = 10077;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10078;
					this.unicode_normal_form();
					}
				}

				this.state = 10081;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_OVERLAY:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 10083;
				this.match(PostgreSQLParser.KW_OVERLAY);
				this.state = 10084;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10085;
				this.overlay_list();
				this.state = 10086;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_POSITION:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 10088;
				this.match(PostgreSQLParser.KW_POSITION);
				this.state = 10089;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10091;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 10090;
					this.position_list();
					}
				}

				this.state = 10093;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_SUBSTRING:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 10094;
				this.match(PostgreSQLParser.KW_SUBSTRING);
				this.state = 10095;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10097;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 10096;
					this.substr_list();
					}
				}

				this.state = 10099;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_TREAT:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 10100;
				this.match(PostgreSQLParser.KW_TREAT);
				this.state = 10101;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10102;
				this.a_expr();
				this.state = 10103;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 10104;
				this.typename();
				this.state = 10105;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_TRIM:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 10107;
				this.match(PostgreSQLParser.KW_TRIM);
				this.state = 10108;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10110;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_BOTH || _la === PostgreSQLParser.KW_LEADING || _la === PostgreSQLParser.KW_TRAILING) {
					{
					this.state = 10109;
					_la = this._input.LA(1);
					if (!(_la === PostgreSQLParser.KW_BOTH || _la === PostgreSQLParser.KW_LEADING || _la === PostgreSQLParser.KW_TRAILING)) {
					this._errHandler.recoverInline(this);
					} else {
						if (this._input.LA(1) === Token.EOF) {
							this.matchedEOF = true;
						}

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

				this.state = 10112;
				this.trim_list();
				this.state = 10113;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_NULLIF:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 10115;
				this.match(PostgreSQLParser.KW_NULLIF);
				this.state = 10116;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10117;
				this.a_expr();
				this.state = 10118;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10119;
				this.a_expr();
				this.state = 10120;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_COALESCE:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 10122;
				this.match(PostgreSQLParser.KW_COALESCE);
				this.state = 10123;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10124;
				this.expr_list();
				this.state = 10125;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_GREATEST:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 10127;
				this.match(PostgreSQLParser.KW_GREATEST);
				this.state = 10128;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10129;
				this.expr_list();
				this.state = 10130;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_LEAST:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 10132;
				this.match(PostgreSQLParser.KW_LEAST);
				this.state = 10133;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10134;
				this.expr_list();
				this.state = 10135;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLCONCAT:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 10137;
				this.match(PostgreSQLParser.KW_XMLCONCAT);
				this.state = 10138;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10139;
				this.expr_list();
				this.state = 10140;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLELEMENT:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 10142;
				this.match(PostgreSQLParser.KW_XMLELEMENT);
				this.state = 10143;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10144;
				this.match(PostgreSQLParser.KW_NAME);
				this.state = 10145;
				this.collabel();
				this.state = 10151;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.COMMA) {
					{
					this.state = 10146;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10149;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1050, this._ctx) ) {
					case 1:
						{
						this.state = 10147;
						this.xml_attributes();
						}
						break;

					case 2:
						{
						this.state = 10148;
						this.expr_list();
						}
						break;
					}
					}
				}

				this.state = 10153;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLEXISTS:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 10155;
				this.match(PostgreSQLParser.KW_XMLEXISTS);
				this.state = 10156;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10157;
				this.c_expr();
				this.state = 10158;
				this.xmlexists_argument();
				this.state = 10159;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLFOREST:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 10161;
				this.match(PostgreSQLParser.KW_XMLFOREST);
				this.state = 10162;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10163;
				this.xml_attribute_list();
				this.state = 10164;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLPARSE:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 10166;
				this.match(PostgreSQLParser.KW_XMLPARSE);
				this.state = 10167;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10168;
				this.document_or_content();
				this.state = 10169;
				this.a_expr();
				this.state = 10171;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_PRESERVE || _la === PostgreSQLParser.KW_STRIP) {
					{
					this.state = 10170;
					this.xml_whitespace_option();
					}
				}

				this.state = 10173;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLPI:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 10175;
				this.match(PostgreSQLParser.KW_XMLPI);
				this.state = 10176;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10177;
				this.match(PostgreSQLParser.KW_NAME);
				this.state = 10178;
				this.collabel();
				this.state = 10181;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.COMMA) {
					{
					this.state = 10179;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10180;
					this.a_expr();
					}
				}

				this.state = 10183;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLROOT:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 10185;
				this.match(PostgreSQLParser.KW_XMLROOT);
				this.state = 10186;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10187;
				this.match(PostgreSQLParser.KW_XML);
				this.state = 10188;
				this.a_expr();
				this.state = 10189;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10190;
				this.xml_root_version();
				this.state = 10192;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.COMMA) {
					{
					this.state = 10191;
					this.opt_xml_root_standalone();
					}
				}

				this.state = 10194;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.KW_XMLSERIALIZE:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 10196;
				this.match(PostgreSQLParser.KW_XMLSERIALIZE);
				this.state = 10197;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10198;
				this.document_or_content();
				this.state = 10199;
				this.a_expr();
				this.state = 10200;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 10201;
				this.simpletypename();
				this.state = 10202;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 xml_root_version(): Xml_root_versionContext {
		let _localctx: Xml_root_versionContext = new Xml_root_versionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1266, PostgreSQLParser.RULE_xml_root_version);
		try {
			this.state = 10211;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1056, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10206;
				this.match(PostgreSQLParser.KW_VERSION);
				this.state = 10207;
				this.a_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10208;
				this.match(PostgreSQLParser.KW_VERSION);
				this.state = 10209;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 10210;
				this.match(PostgreSQLParser.KW_VALUE);
				}
				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 opt_xml_root_standalone(): Opt_xml_root_standaloneContext {
		let _localctx: Opt_xml_root_standaloneContext = new Opt_xml_root_standaloneContext(this._ctx, this.state);
		this.enterRule(_localctx, 1268, PostgreSQLParser.RULE_opt_xml_root_standalone);
		try {
			this.state = 10223;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1057, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10213;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10214;
				this.match(PostgreSQLParser.KW_STANDALONE);
				this.state = 10215;
				this.match(PostgreSQLParser.KW_YES);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10216;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10217;
				this.match(PostgreSQLParser.KW_STANDALONE);
				this.state = 10218;
				this.match(PostgreSQLParser.KW_NO);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10219;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10220;
				this.match(PostgreSQLParser.KW_STANDALONE);
				this.state = 10221;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 10222;
				this.match(PostgreSQLParser.KW_VALUE);
				}
				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 xml_attributes(): Xml_attributesContext {
		let _localctx: Xml_attributesContext = new Xml_attributesContext(this._ctx, this.state);
		this.enterRule(_localctx, 1270, PostgreSQLParser.RULE_xml_attributes);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10225;
			this.match(PostgreSQLParser.KW_XMLATTRIBUTES);
			this.state = 10226;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10227;
			this.xml_attribute_list();
			this.state = 10228;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public xml_attribute_list(): Xml_attribute_listContext {
		let _localctx: Xml_attribute_listContext = new Xml_attribute_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1272, PostgreSQLParser.RULE_xml_attribute_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10230;
			this.xml_attribute_el();
			this.state = 10235;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10231;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10232;
				this.xml_attribute_el();
				}
				}
				this.state = 10237;
				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 xml_attribute_el(): Xml_attribute_elContext {
		let _localctx: Xml_attribute_elContext = new Xml_attribute_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1274, PostgreSQLParser.RULE_xml_attribute_el);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10238;
			this.a_expr();
			this.state = 10241;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AS) {
				{
				this.state = 10239;
				this.match(PostgreSQLParser.KW_AS);
				this.state = 10240;
				this.collabel();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public document_or_content(): Document_or_contentContext {
		let _localctx: Document_or_contentContext = new Document_or_contentContext(this._ctx, this.state);
		this.enterRule(_localctx, 1276, PostgreSQLParser.RULE_document_or_content);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10243;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_CONTENT || _la === PostgreSQLParser.KW_DOCUMENT)) {
			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 xml_whitespace_option(): Xml_whitespace_optionContext {
		let _localctx: Xml_whitespace_optionContext = new Xml_whitespace_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1278, PostgreSQLParser.RULE_xml_whitespace_option);
		try {
			this.state = 10249;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_PRESERVE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10245;
				this.match(PostgreSQLParser.KW_PRESERVE);
				this.state = 10246;
				this.match(PostgreSQLParser.KW_WHITESPACE);
				}
				break;
			case PostgreSQLParser.KW_STRIP:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10247;
				this.match(PostgreSQLParser.KW_STRIP);
				this.state = 10248;
				this.match(PostgreSQLParser.KW_WHITESPACE);
				}
				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 xmlexists_argument(): Xmlexists_argumentContext {
		let _localctx: Xmlexists_argumentContext = new Xmlexists_argumentContext(this._ctx, this.state);
		this.enterRule(_localctx, 1280, PostgreSQLParser.RULE_xmlexists_argument);
		try {
			this.state = 10266;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1061, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10251;
				this.match(PostgreSQLParser.KW_PASSING);
				this.state = 10252;
				this.c_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10253;
				this.match(PostgreSQLParser.KW_PASSING);
				this.state = 10254;
				this.c_expr();
				this.state = 10255;
				this.xml_passing_mech();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10257;
				this.match(PostgreSQLParser.KW_PASSING);
				this.state = 10258;
				this.xml_passing_mech();
				this.state = 10259;
				this.c_expr();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10261;
				this.match(PostgreSQLParser.KW_PASSING);
				this.state = 10262;
				this.xml_passing_mech();
				this.state = 10263;
				this.c_expr();
				this.state = 10264;
				this.xml_passing_mech();
				}
				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 xml_passing_mech(): Xml_passing_mechContext {
		let _localctx: Xml_passing_mechContext = new Xml_passing_mechContext(this._ctx, this.state);
		this.enterRule(_localctx, 1282, PostgreSQLParser.RULE_xml_passing_mech);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10268;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 10269;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_REF || _la === PostgreSQLParser.KW_VALUE)) {
			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 within_group_clause(): Within_group_clauseContext {
		let _localctx: Within_group_clauseContext = new Within_group_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1284, PostgreSQLParser.RULE_within_group_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10271;
			this.match(PostgreSQLParser.KW_WITHIN);
			this.state = 10272;
			this.match(PostgreSQLParser.KW_GROUP);
			this.state = 10273;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10274;
			this.sort_clause();
			this.state = 10275;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public filter_clause(): Filter_clauseContext {
		let _localctx: Filter_clauseContext = new Filter_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1286, PostgreSQLParser.RULE_filter_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10277;
			this.match(PostgreSQLParser.KW_FILTER);
			this.state = 10278;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10279;
			this.match(PostgreSQLParser.KW_WHERE);
			this.state = 10280;
			this.a_expr();
			this.state = 10281;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_clause(): Window_clauseContext {
		let _localctx: Window_clauseContext = new Window_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1288, PostgreSQLParser.RULE_window_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10283;
			this.match(PostgreSQLParser.KW_WINDOW);
			this.state = 10284;
			this.window_definition_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public window_definition_list(): Window_definition_listContext {
		let _localctx: Window_definition_listContext = new Window_definition_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1290, PostgreSQLParser.RULE_window_definition_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10286;
			this.window_definition();
			this.state = 10291;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1062, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 10287;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10288;
					this.window_definition();
					}
					}
				}
				this.state = 10293;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1062, 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 window_definition(): Window_definitionContext {
		let _localctx: Window_definitionContext = new Window_definitionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1292, PostgreSQLParser.RULE_window_definition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10294;
			this.colid();
			this.state = 10295;
			this.match(PostgreSQLParser.KW_AS);
			this.state = 10296;
			this.window_specification();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public over_clause(): Over_clauseContext {
		let _localctx: Over_clauseContext = new Over_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1294, PostgreSQLParser.RULE_over_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10298;
			this.match(PostgreSQLParser.KW_OVER);
			this.state = 10301;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
				{
				this.state = 10299;
				this.window_specification();
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 10300;
				this.colid();
				}
				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 window_specification(): Window_specificationContext {
		let _localctx: Window_specificationContext = new Window_specificationContext(this._ctx, this.state);
		this.enterRule(_localctx, 1296, PostgreSQLParser.RULE_window_specification);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10303;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10305;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1064, this._ctx) ) {
			case 1:
				{
				this.state = 10304;
				this.opt_existing_window_name();
				}
				break;
			}
			this.state = 10308;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_PARTITION) {
				{
				this.state = 10307;
				this.opt_partition_clause();
				}
			}

			this.state = 10311;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ORDER) {
				{
				this.state = 10310;
				this.opt_sort_clause();
				}
			}

			this.state = 10314;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_RANGE || _la === PostgreSQLParser.KW_ROWS || _la === PostgreSQLParser.KW_GROUPS) {
				{
				this.state = 10313;
				this.opt_frame_clause();
				}
			}

			this.state = 10316;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_existing_window_name(): Opt_existing_window_nameContext {
		let _localctx: Opt_existing_window_nameContext = new Opt_existing_window_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1298, PostgreSQLParser.RULE_opt_existing_window_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10318;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_partition_clause(): Opt_partition_clauseContext {
		let _localctx: Opt_partition_clauseContext = new Opt_partition_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1300, PostgreSQLParser.RULE_opt_partition_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10320;
			this.match(PostgreSQLParser.KW_PARTITION);
			this.state = 10321;
			this.match(PostgreSQLParser.KW_BY);
			this.state = 10322;
			this.expr_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_frame_clause(): Opt_frame_clauseContext {
		let _localctx: Opt_frame_clauseContext = new Opt_frame_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1302, PostgreSQLParser.RULE_opt_frame_clause);
		let _la: number;
		try {
			this.state = 10339;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_RANGE:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10324;
				this.match(PostgreSQLParser.KW_RANGE);
				this.state = 10325;
				this.frame_extent();
				this.state = 10327;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_EXCLUDE) {
					{
					this.state = 10326;
					this.opt_window_exclusion_clause();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_ROWS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10329;
				this.match(PostgreSQLParser.KW_ROWS);
				this.state = 10330;
				this.frame_extent();
				this.state = 10332;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_EXCLUDE) {
					{
					this.state = 10331;
					this.opt_window_exclusion_clause();
					}
				}

				}
				break;
			case PostgreSQLParser.KW_GROUPS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10334;
				this.match(PostgreSQLParser.KW_GROUPS);
				this.state = 10335;
				this.frame_extent();
				this.state = 10337;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_EXCLUDE) {
					{
					this.state = 10336;
					this.opt_window_exclusion_clause();
					}
				}

				}
				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 frame_extent(): Frame_extentContext {
		let _localctx: Frame_extentContext = new Frame_extentContext(this._ctx, this.state);
		this.enterRule(_localctx, 1304, PostgreSQLParser.RULE_frame_extent);
		try {
			this.state = 10347;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1072, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10341;
				this.frame_bound();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10342;
				this.match(PostgreSQLParser.KW_BETWEEN);
				this.state = 10343;
				this.frame_bound();
				this.state = 10344;
				this.match(PostgreSQLParser.KW_AND);
				this.state = 10345;
				this.frame_bound();
				}
				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 frame_bound(): Frame_boundContext {
		let _localctx: Frame_boundContext = new Frame_boundContext(this._ctx, this.state);
		this.enterRule(_localctx, 1306, PostgreSQLParser.RULE_frame_bound);
		let _la: number;
		try {
			this.state = 10356;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1073, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10349;
				this.match(PostgreSQLParser.KW_UNBOUNDED);
				this.state = 10350;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_FOLLOWING || _la === PostgreSQLParser.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 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10351;
				this.match(PostgreSQLParser.KW_CURRENT);
				this.state = 10352;
				this.match(PostgreSQLParser.KW_ROW);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10353;
				this.a_expr();
				this.state = 10354;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_FOLLOWING || _la === PostgreSQLParser.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 opt_window_exclusion_clause(): Opt_window_exclusion_clauseContext {
		let _localctx: Opt_window_exclusion_clauseContext = new Opt_window_exclusion_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1308, PostgreSQLParser.RULE_opt_window_exclusion_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10358;
			this.match(PostgreSQLParser.KW_EXCLUDE);
			this.state = 10365;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CURRENT:
				{
				this.state = 10359;
				this.match(PostgreSQLParser.KW_CURRENT);
				this.state = 10360;
				this.match(PostgreSQLParser.KW_ROW);
				}
				break;
			case PostgreSQLParser.KW_GROUP:
				{
				this.state = 10361;
				this.match(PostgreSQLParser.KW_GROUP);
				}
				break;
			case PostgreSQLParser.KW_TIES:
				{
				this.state = 10362;
				this.match(PostgreSQLParser.KW_TIES);
				}
				break;
			case PostgreSQLParser.KW_NO:
				{
				this.state = 10363;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 10364;
				this.match(PostgreSQLParser.KW_OTHERS);
				}
				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 row(): RowContext {
		let _localctx: RowContext = new RowContext(this._ctx, this.state);
		this.enterRule(_localctx, 1310, PostgreSQLParser.RULE_row);
		let _la: number;
		try {
			this.state = 10379;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_ROW:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10367;
				this.match(PostgreSQLParser.KW_ROW);
				this.state = 10368;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10370;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
					{
					this.state = 10369;
					this.expr_list();
					}
				}

				this.state = 10372;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10373;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10374;
				this.expr_list();
				this.state = 10375;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10376;
				this.a_expr();
				this.state = 10377;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 explicit_row(): Explicit_rowContext {
		let _localctx: Explicit_rowContext = new Explicit_rowContext(this._ctx, this.state);
		this.enterRule(_localctx, 1312, PostgreSQLParser.RULE_explicit_row);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10381;
			this.match(PostgreSQLParser.KW_ROW);
			this.state = 10382;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10384;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 10383;
				this.expr_list();
				}
			}

			this.state = 10386;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public implicit_row(): Implicit_rowContext {
		let _localctx: Implicit_rowContext = new Implicit_rowContext(this._ctx, this.state);
		this.enterRule(_localctx, 1314, PostgreSQLParser.RULE_implicit_row);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10388;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 10389;
			this.expr_list();
			this.state = 10390;
			this.match(PostgreSQLParser.COMMA);
			this.state = 10391;
			this.a_expr();
			this.state = 10392;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sub_type(): Sub_typeContext {
		let _localctx: Sub_typeContext = new Sub_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1316, PostgreSQLParser.RULE_sub_type);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10394;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_ALL || _la === PostgreSQLParser.KW_ANY || _la === PostgreSQLParser.KW_SOME)) {
			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 all_op(): All_opContext {
		let _localctx: All_opContext = new All_opContext(this._ctx, this.state);
		this.enterRule(_localctx, 1318, PostgreSQLParser.RULE_all_op);
		try {
			this.state = 10398;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.Operator:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10396;
				this.match(PostgreSQLParser.Operator);
				}
				break;
			case PostgreSQLParser.STAR:
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.SLASH:
			case PostgreSQLParser.CARET:
			case PostgreSQLParser.LT:
			case PostgreSQLParser.GT:
			case PostgreSQLParser.LESS_EQUALS:
			case PostgreSQLParser.GREATER_EQUALS:
			case PostgreSQLParser.NOT_EQUALS:
			case PostgreSQLParser.PERCENT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10397;
				this.mathop();
				}
				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 mathop(): MathopContext {
		let _localctx: MathopContext = new MathopContext(this._ctx, this.state);
		this.enterRule(_localctx, 1320, PostgreSQLParser.RULE_mathop);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10400;
			_la = this._input.LA(1);
			if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.STAR) | (1 << PostgreSQLParser.EQUAL) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.SLASH) | (1 << PostgreSQLParser.CARET) | (1 << PostgreSQLParser.LT) | (1 << PostgreSQLParser.GT) | (1 << PostgreSQLParser.LESS_EQUALS) | (1 << PostgreSQLParser.GREATER_EQUALS) | (1 << PostgreSQLParser.NOT_EQUALS) | (1 << PostgreSQLParser.PERCENT))) !== 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 qual_op(): Qual_opContext {
		let _localctx: Qual_opContext = new Qual_opContext(this._ctx, this.state);
		this.enterRule(_localctx, 1322, PostgreSQLParser.RULE_qual_op);
		try {
			this.state = 10408;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.Operator:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10402;
				this.match(PostgreSQLParser.Operator);
				}
				break;
			case PostgreSQLParser.KW_OPERATOR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10403;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 10404;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10405;
				this.any_operator();
				this.state = 10406;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 qual_all_op(): Qual_all_opContext {
		let _localctx: Qual_all_opContext = new Qual_all_opContext(this._ctx, this.state);
		this.enterRule(_localctx, 1324, PostgreSQLParser.RULE_qual_all_op);
		try {
			this.state = 10416;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.STAR:
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.SLASH:
			case PostgreSQLParser.CARET:
			case PostgreSQLParser.LT:
			case PostgreSQLParser.GT:
			case PostgreSQLParser.LESS_EQUALS:
			case PostgreSQLParser.GREATER_EQUALS:
			case PostgreSQLParser.NOT_EQUALS:
			case PostgreSQLParser.PERCENT:
			case PostgreSQLParser.Operator:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10410;
				this.all_op();
				}
				break;
			case PostgreSQLParser.KW_OPERATOR:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10411;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 10412;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10413;
				this.any_operator();
				this.state = 10414;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 subquery_Op(): Subquery_OpContext {
		let _localctx: Subquery_OpContext = new Subquery_OpContext(this._ctx, this.state);
		this.enterRule(_localctx, 1326, PostgreSQLParser.RULE_subquery_Op);
		try {
			this.state = 10430;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1081, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10418;
				this.all_op();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10419;
				this.match(PostgreSQLParser.KW_OPERATOR);
				this.state = 10420;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10421;
				this.any_operator();
				this.state = 10422;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10424;
				this.match(PostgreSQLParser.KW_LIKE);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10425;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 10426;
				this.match(PostgreSQLParser.KW_LIKE);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10427;
				this.match(PostgreSQLParser.KW_ILIKE);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10428;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 10429;
				this.match(PostgreSQLParser.KW_ILIKE);
				}
				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 expr_list(): Expr_listContext {
		let _localctx: Expr_listContext = new Expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1328, PostgreSQLParser.RULE_expr_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10432;
			this.a_expr();
			this.state = 10437;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1082, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 10433;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10434;
					this.a_expr();
					}
					}
				}
				this.state = 10439;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1082, 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 column_expr_list_noparen(): Column_expr_list_noparenContext {
		let _localctx: Column_expr_list_noparenContext = new Column_expr_list_noparenContext(this._ctx, this.state);
		this.enterRule(_localctx, 1330, PostgreSQLParser.RULE_column_expr_list_noparen);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10440;
			this.column_expr_noparen();
			this.state = 10445;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10441;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10442;
				this.column_expr_noparen();
				}
				}
				this.state = 10447;
				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 column_expr_list(): Column_expr_listContext {
		let _localctx: Column_expr_listContext = new Column_expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1332, PostgreSQLParser.RULE_column_expr_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10448;
			this.column_expr();
			this.state = 10453;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10449;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10450;
				this.column_expr();
				}
				}
				this.state = 10455;
				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 column_expr(): Column_exprContext {
		let _localctx: Column_exprContext = new Column_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1334, PostgreSQLParser.RULE_column_expr);
		try {
			this.state = 10461;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10456;
				this.column_name();
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 10457;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10458;
				this.a_expr();
				this.state = 10459;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				}
				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 column_expr_noparen(): Column_expr_noparenContext {
		let _localctx: Column_expr_noparenContext = new Column_expr_noparenContext(this._ctx, this.state);
		this.enterRule(_localctx, 1336, PostgreSQLParser.RULE_column_expr_noparen);
		try {
			this.state = 10465;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1086, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10463;
				this.column_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10464;
				this.a_expr();
				}
				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 func_arg_list(): Func_arg_listContext {
		let _localctx: Func_arg_listContext = new Func_arg_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1338, PostgreSQLParser.RULE_func_arg_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10467;
			this.func_arg_expr();
			this.state = 10472;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1087, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 10468;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10469;
					this.func_arg_expr();
					}
					}
				}
				this.state = 10474;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1087, 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 func_arg_expr(): Func_arg_exprContext {
		let _localctx: Func_arg_exprContext = new Func_arg_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1340, PostgreSQLParser.RULE_func_arg_expr);
		let _la: number;
		try {
			this.state = 10480;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1088, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10475;
				this.a_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10476;
				this.param_name();
				this.state = 10477;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.COLON_EQUALS || _la === PostgreSQLParser.EQUALS_GREATER)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 10478;
				this.a_expr();
				}
				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 type_list(): Type_listContext {
		let _localctx: Type_listContext = new Type_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1342, PostgreSQLParser.RULE_type_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10482;
			this.typename();
			this.state = 10487;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10483;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10484;
				this.typename();
				}
				}
				this.state = 10489;
				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 array_expr(): Array_exprContext {
		let _localctx: Array_exprContext = new Array_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1344, PostgreSQLParser.RULE_array_expr);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10490;
			this.match(PostgreSQLParser.OPEN_BRACKET);
			this.state = 10493;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.Operator:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.BinaryStringConstant:
			case PostgreSQLParser.HexadecimalStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 10491;
				this.expr_list();
				}
				break;
			case PostgreSQLParser.OPEN_BRACKET:
				{
				this.state = 10492;
				this.array_expr_list();
				}
				break;
			case PostgreSQLParser.CLOSE_BRACKET:
				break;
			default:
				break;
			}
			this.state = 10495;
			this.match(PostgreSQLParser.CLOSE_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 array_expr_list(): Array_expr_listContext {
		let _localctx: Array_expr_listContext = new Array_expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1346, PostgreSQLParser.RULE_array_expr_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10497;
			this.array_expr();
			this.state = 10502;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10498;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10499;
				this.array_expr();
				}
				}
				this.state = 10504;
				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 extract_list(): Extract_listContext {
		let _localctx: Extract_listContext = new Extract_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1348, PostgreSQLParser.RULE_extract_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10505;
			this.extract_arg();
			this.state = 10506;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 10507;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public extract_arg(): Extract_argContext {
		let _localctx: Extract_argContext = new Extract_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 1350, PostgreSQLParser.RULE_extract_arg);
		try {
			this.state = 10517;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1092, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10509;
				this.identifier();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10510;
				this.match(PostgreSQLParser.KW_YEAR);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10511;
				this.match(PostgreSQLParser.KW_MONTH);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10512;
				this.match(PostgreSQLParser.KW_DAY);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10513;
				this.match(PostgreSQLParser.KW_HOUR);
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10514;
				this.match(PostgreSQLParser.KW_MINUTE);
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 10515;
				this.match(PostgreSQLParser.KW_SECOND);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 10516;
				this.sconst();
				}
				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 unicode_normal_form(): Unicode_normal_formContext {
		let _localctx: Unicode_normal_formContext = new Unicode_normal_formContext(this._ctx, this.state);
		this.enterRule(_localctx, 1352, PostgreSQLParser.RULE_unicode_normal_form);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10519;
			_la = this._input.LA(1);
			if (!(((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & ((1 << (PostgreSQLParser.KW_NFC - 483)) | (1 << (PostgreSQLParser.KW_NFD - 483)) | (1 << (PostgreSQLParser.KW_NFKC - 483)) | (1 << (PostgreSQLParser.KW_NFKD - 483)))) !== 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 overlay_list(): Overlay_listContext {
		let _localctx: Overlay_listContext = new Overlay_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1354, PostgreSQLParser.RULE_overlay_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10521;
			this.a_expr();
			this.state = 10522;
			this.match(PostgreSQLParser.KW_PLACING);
			this.state = 10523;
			this.a_expr();
			this.state = 10524;
			this.match(PostgreSQLParser.KW_FROM);
			this.state = 10525;
			this.a_expr();
			this.state = 10528;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FOR) {
				{
				this.state = 10526;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 10527;
				this.a_expr();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public position_list(): Position_listContext {
		let _localctx: Position_listContext = new Position_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1356, PostgreSQLParser.RULE_position_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10530;
			this.b_expr(0);
			this.state = 10531;
			this.match(PostgreSQLParser.KW_IN);
			this.state = 10532;
			this.b_expr(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 substr_list(): Substr_listContext {
		let _localctx: Substr_listContext = new Substr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1358, PostgreSQLParser.RULE_substr_list);
		try {
			this.state = 10561;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1094, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10534;
				this.a_expr();
				this.state = 10535;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 10536;
				this.a_expr();
				this.state = 10537;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 10538;
				this.a_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10540;
				this.a_expr();
				this.state = 10541;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 10542;
				this.a_expr();
				this.state = 10543;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 10544;
				this.a_expr();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10546;
				this.a_expr();
				this.state = 10547;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 10548;
				this.a_expr();
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10550;
				this.a_expr();
				this.state = 10551;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 10552;
				this.a_expr();
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10554;
				this.a_expr();
				this.state = 10555;
				this.match(PostgreSQLParser.KW_SIMILAR);
				this.state = 10556;
				this.a_expr();
				this.state = 10557;
				this.match(PostgreSQLParser.KW_ESCAPE);
				this.state = 10558;
				this.a_expr();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10560;
				this.expr_list();
				}
				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 trim_list(): Trim_listContext {
		let _localctx: Trim_listContext = new Trim_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1360, PostgreSQLParser.RULE_trim_list);
		try {
			this.state = 10570;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1095, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10563;
				this.a_expr();
				this.state = 10564;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 10565;
				this.expr_list();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10567;
				this.match(PostgreSQLParser.KW_FROM);
				this.state = 10568;
				this.expr_list();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10569;
				this.expr_list();
				}
				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 in_expr(): In_exprContext {
		let _localctx: In_exprContext = new In_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1362, PostgreSQLParser.RULE_in_expr);
		try {
			this.state = 10577;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1096, this._ctx) ) {
			case 1:
				_localctx = new In_expr_selectContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10572;
				this.select_with_parens();
				}
				break;

			case 2:
				_localctx = new In_expr_listContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10573;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10574;
				this.expr_list();
				this.state = 10575;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 case_expr(): Case_exprContext {
		let _localctx: Case_exprContext = new Case_exprContext(this._ctx, this.state);
		this.enterRule(_localctx, 1364, PostgreSQLParser.RULE_case_expr);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10579;
			this.match(PostgreSQLParser.KW_CASE);
			this.state = 10581;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 10580;
				this.case_arg();
				}
			}

			this.state = 10583;
			this.when_clause_list();
			this.state = 10585;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ELSE) {
				{
				this.state = 10584;
				this.case_default();
				}
			}

			this.state = 10587;
			this.match(PostgreSQLParser.KW_END);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public when_clause_list(): When_clause_listContext {
		let _localctx: When_clause_listContext = new When_clause_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1366, PostgreSQLParser.RULE_when_clause_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10590;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 10589;
				this.when_clause();
				}
				}
				this.state = 10592;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_WHEN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public when_clause(): When_clauseContext {
		let _localctx: When_clauseContext = new When_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1368, PostgreSQLParser.RULE_when_clause);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10594;
			this.match(PostgreSQLParser.KW_WHEN);
			this.state = 10595;
			this.a_expr();
			this.state = 10596;
			this.match(PostgreSQLParser.KW_THEN);
			this.state = 10597;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public case_default(): Case_defaultContext {
		let _localctx: Case_defaultContext = new Case_defaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 1370, PostgreSQLParser.RULE_case_default);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10599;
			this.match(PostgreSQLParser.KW_ELSE);
			this.state = 10600;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public case_arg(): Case_argContext {
		let _localctx: Case_argContext = new Case_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 1372, PostgreSQLParser.RULE_case_arg);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10602;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public columnref(): ColumnrefContext {
		let _localctx: ColumnrefContext = new ColumnrefContext(this._ctx, this.state);
		this.enterRule(_localctx, 1374, PostgreSQLParser.RULE_columnref);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10604;
			this.colid();
			this.state = 10606;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1100, this._ctx) ) {
			case 1:
				{
				this.state = 10605;
				this.indirection();
				}
				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 indirection_el(): Indirection_elContext {
		let _localctx: Indirection_elContext = new Indirection_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1376, PostgreSQLParser.RULE_indirection_el);
		let _la: number;
		try {
			this.state = 10625;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.DOT:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10608;
				this.match(PostgreSQLParser.DOT);
				this.state = 10611;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_ALL:
				case PostgreSQLParser.KW_ANALYSE:
				case PostgreSQLParser.KW_ANALYZE:
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ANY:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_AS:
				case PostgreSQLParser.KW_ASC:
				case PostgreSQLParser.KW_ASYMMETRIC:
				case PostgreSQLParser.KW_BOTH:
				case PostgreSQLParser.KW_CASE:
				case PostgreSQLParser.KW_CAST:
				case PostgreSQLParser.KW_CHECK:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_CREATE:
				case PostgreSQLParser.KW_CURRENT_CATALOG:
				case PostgreSQLParser.KW_CURRENT_DATE:
				case PostgreSQLParser.KW_CURRENT_ROLE:
				case PostgreSQLParser.KW_CURRENT_TIME:
				case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
				case PostgreSQLParser.KW_CURRENT_USER:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DEFERRABLE:
				case PostgreSQLParser.KW_DESC:
				case PostgreSQLParser.KW_DISTINCT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_ELSE:
				case PostgreSQLParser.KW_EXCEPT:
				case PostgreSQLParser.KW_FALSE:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_FOR:
				case PostgreSQLParser.KW_FOREIGN:
				case PostgreSQLParser.KW_FROM:
				case PostgreSQLParser.KW_GRANT:
				case PostgreSQLParser.KW_GROUP:
				case PostgreSQLParser.KW_HAVING:
				case PostgreSQLParser.KW_IN:
				case PostgreSQLParser.KW_INITIALLY:
				case PostgreSQLParser.KW_INTERSECT:
				case PostgreSQLParser.KW_LATERAL:
				case PostgreSQLParser.KW_LEADING:
				case PostgreSQLParser.KW_LIMIT:
				case PostgreSQLParser.KW_LOCALTIME:
				case PostgreSQLParser.KW_LOCALTIMESTAMP:
				case PostgreSQLParser.KW_NOT:
				case PostgreSQLParser.KW_NULL:
				case PostgreSQLParser.KW_OFFSET:
				case PostgreSQLParser.KW_ON:
				case PostgreSQLParser.KW_ONLY:
				case PostgreSQLParser.KW_OR:
				case PostgreSQLParser.KW_ORDER:
				case PostgreSQLParser.KW_PLACING:
				case PostgreSQLParser.KW_PRIMARY:
				case PostgreSQLParser.KW_REFERENCES:
				case PostgreSQLParser.KW_RETURNING:
				case PostgreSQLParser.KW_SELECT:
				case PostgreSQLParser.KW_SESSION_USER:
				case PostgreSQLParser.KW_SOME:
				case PostgreSQLParser.KW_SYMMETRIC:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_THEN:
				case PostgreSQLParser.KW_TO:
				case PostgreSQLParser.KW_TRAILING:
				case PostgreSQLParser.KW_TRUE:
				case PostgreSQLParser.KW_UNION:
				case PostgreSQLParser.KW_UNIQUE:
				case PostgreSQLParser.KW_USER:
				case PostgreSQLParser.KW_USING:
				case PostgreSQLParser.KW_VARIADIC:
				case PostgreSQLParser.KW_WHEN:
				case PostgreSQLParser.KW_WHERE:
				case PostgreSQLParser.KW_WINDOW:
				case PostgreSQLParser.KW_WITH:
				case PostgreSQLParser.KW_AUTHORIZATION:
				case PostgreSQLParser.KW_BINARY:
				case PostgreSQLParser.KW_COLLATION:
				case PostgreSQLParser.KW_CONCURRENTLY:
				case PostgreSQLParser.KW_CROSS:
				case PostgreSQLParser.KW_CURRENT_SCHEMA:
				case PostgreSQLParser.KW_FREEZE:
				case PostgreSQLParser.KW_FULL:
				case PostgreSQLParser.KW_ILIKE:
				case PostgreSQLParser.KW_INNER:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_ISNULL:
				case PostgreSQLParser.KW_JOIN:
				case PostgreSQLParser.KW_LEFT:
				case PostgreSQLParser.KW_LIKE:
				case PostgreSQLParser.KW_NATURAL:
				case PostgreSQLParser.KW_NOTNULL:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_OVERLAPS:
				case PostgreSQLParser.KW_RIGHT:
				case PostgreSQLParser.KW_SIMILAR:
				case PostgreSQLParser.KW_VERBOSE:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_END:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_TABLESAMPLE:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 10609;
					this.attr_name();
					}
					break;
				case PostgreSQLParser.STAR:
					{
					this.state = 10610;
					this.match(PostgreSQLParser.STAR);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case PostgreSQLParser.OPEN_BRACKET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10613;
				this.match(PostgreSQLParser.OPEN_BRACKET);
				this.state = 10622;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1104, this._ctx) ) {
				case 1:
					{
					this.state = 10614;
					this.a_expr();
					}
					break;

				case 2:
					{
					this.state = 10616;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
						{
						this.state = 10615;
						this.opt_slice_bound();
						}
					}

					this.state = 10618;
					this.match(PostgreSQLParser.COLON);
					this.state = 10620;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
						{
						this.state = 10619;
						this.opt_slice_bound();
						}
					}

					}
					break;
				}
				this.state = 10624;
				this.match(PostgreSQLParser.CLOSE_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 opt_slice_bound(): Opt_slice_boundContext {
		let _localctx: Opt_slice_boundContext = new Opt_slice_boundContext(this._ctx, this.state);
		this.enterRule(_localctx, 1378, PostgreSQLParser.RULE_opt_slice_bound);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10627;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public indirection(): IndirectionContext {
		let _localctx: IndirectionContext = new IndirectionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1380, PostgreSQLParser.RULE_indirection);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10630;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 10629;
					this.indirection_el();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 10632;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1106, 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 opt_indirection(): Opt_indirectionContext {
		let _localctx: Opt_indirectionContext = new Opt_indirectionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1382, PostgreSQLParser.RULE_opt_indirection);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10637;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1107, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 10634;
					this.indirection_el();
					}
					}
				}
				this.state = 10639;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1107, 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 opt_target_list(): Opt_target_listContext {
		let _localctx: Opt_target_listContext = new Opt_target_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1384, PostgreSQLParser.RULE_opt_target_list);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10640;
			this.target_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public target_list(): Target_listContext {
		let _localctx: Target_listContext = new Target_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1386, PostgreSQLParser.RULE_target_list);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10642;
			this.target_el();
			this.state = 10647;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1108, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 10643;
					this.match(PostgreSQLParser.COMMA);
					this.state = 10644;
					this.target_el();
					}
					}
				}
				this.state = 10649;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1108, 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 target_el(): Target_elContext {
		let _localctx: Target_elContext = new Target_elContext(this._ctx, this.state);
		this.enterRule(_localctx, 1388, PostgreSQLParser.RULE_target_el);
		try {
			this.state = 10658;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.Operator:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.BinaryStringConstant:
			case PostgreSQLParser.HexadecimalStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				_localctx = new Target_labelContext(_localctx);
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10650;
				this.column_expr_noparen();
				this.state = 10655;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1109, this._ctx) ) {
				case 1:
					{
					this.state = 10651;
					this.match(PostgreSQLParser.KW_AS);
					this.state = 10652;
					this.collabel();
					}
					break;

				case 2:
					{
					this.state = 10653;
					this.identifier();
					}
					break;

				case 3:
					// tslint:disable-next-line:no-empty
					{
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.STAR:
				_localctx = new Target_starContext(_localctx);
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10657;
				this.match(PostgreSQLParser.STAR);
				}
				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 qualified_name_list(): Qualified_name_listContext {
		let _localctx: Qualified_name_listContext = new Qualified_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1390, PostgreSQLParser.RULE_qualified_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10660;
			this.qualified_name();
			this.state = 10665;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10661;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10662;
				this.qualified_name();
				}
				}
				this.state = 10667;
				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 table_name_list(): Table_name_listContext {
		let _localctx: Table_name_listContext = new Table_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1392, PostgreSQLParser.RULE_table_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10668;
			this.table_name();
			this.state = 10673;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10669;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10670;
				this.table_name();
				}
				}
				this.state = 10675;
				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 schema_name_list(): Schema_name_listContext {
		let _localctx: Schema_name_listContext = new Schema_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1394, PostgreSQLParser.RULE_schema_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10676;
			this.schema_name();
			this.state = 10681;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10677;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10678;
				this.schema_name();
				}
				}
				this.state = 10683;
				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 database_nameList(): Database_nameListContext {
		let _localctx: Database_nameListContext = new Database_nameListContext(this._ctx, this.state);
		this.enterRule(_localctx, 1396, PostgreSQLParser.RULE_database_nameList);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10684;
			this.database_name();
			this.state = 10689;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10685;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10686;
				this.database_name();
				}
				}
				this.state = 10691;
				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 procedure_name_list(): Procedure_name_listContext {
		let _localctx: Procedure_name_listContext = new Procedure_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1398, PostgreSQLParser.RULE_procedure_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10692;
			this.procedure_name();
			this.state = 10697;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10693;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10694;
				this.procedure_name();
				}
				}
				this.state = 10699;
				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 tablespace_name_create(): Tablespace_name_createContext {
		let _localctx: Tablespace_name_createContext = new Tablespace_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1400, PostgreSQLParser.RULE_tablespace_name_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10700;
			this.colid();
			this.state = 10702;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
				{
				this.state = 10701;
				this.indirection();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablespace_name(): Tablespace_nameContext {
		let _localctx: Tablespace_nameContext = new Tablespace_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1402, PostgreSQLParser.RULE_tablespace_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10704;
			this.colid();
			this.state = 10706;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
				{
				this.state = 10705;
				this.indirection();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public table_name_create(): Table_name_createContext {
		let _localctx: Table_name_createContext = new Table_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1404, PostgreSQLParser.RULE_table_name_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10708;
			this.colid();
			this.state = 10710;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
				{
				this.state = 10709;
				this.indirection();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public table_name(): Table_nameContext {
		let _localctx: Table_nameContext = new Table_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1406, PostgreSQLParser.RULE_table_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10712;
			this.colid();
			this.state = 10714;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1119, this._ctx) ) {
			case 1:
				{
				this.state = 10713;
				this.indirection();
				}
				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 view_name_create(): View_name_createContext {
		let _localctx: View_name_createContext = new View_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1408, PostgreSQLParser.RULE_view_name_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10716;
			this.colid();
			this.state = 10718;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
				{
				this.state = 10717;
				this.indirection();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public view_name(): View_nameContext {
		let _localctx: View_nameContext = new View_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1410, PostgreSQLParser.RULE_view_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10720;
			this.colid();
			this.state = 10722;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 10721;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public qualified_name(): Qualified_nameContext {
		let _localctx: Qualified_nameContext = new Qualified_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1412, PostgreSQLParser.RULE_qualified_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10724;
			this.colid();
			this.state = 10726;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_BRACKET || _la === PostgreSQLParser.DOT) {
				{
				this.state = 10725;
				this.indirection();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public tablespace_name_list(): Tablespace_name_listContext {
		let _localctx: Tablespace_name_listContext = new Tablespace_name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1414, PostgreSQLParser.RULE_tablespace_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10728;
			this.tablespace_name();
			this.state = 10733;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10729;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10730;
				this.tablespace_name();
				}
				}
				this.state = 10735;
				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 name_list(): Name_listContext {
		let _localctx: Name_listContext = new Name_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1416, PostgreSQLParser.RULE_name_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10736;
			this.name();
			this.state = 10741;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10737;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10738;
				this.name();
				}
				}
				this.state = 10743;
				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 database_name_create(): Database_name_createContext {
		let _localctx: Database_name_createContext = new Database_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1418, PostgreSQLParser.RULE_database_name_create);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10744;
			this.colid();
			this.state = 10746;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 10745;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public database_name(): Database_nameContext {
		let _localctx: Database_nameContext = new Database_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1420, PostgreSQLParser.RULE_database_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10748;
			this.colid();
			this.state = 10750;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 10749;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public schema_name(): Schema_nameContext {
		let _localctx: Schema_nameContext = new Schema_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1422, PostgreSQLParser.RULE_schema_name);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10752;
			this.colid();
			this.state = 10754;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.DOT) {
				{
				this.state = 10753;
				this.attrs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public routine_name_create(): Routine_name_createContext {
		let _localctx: Routine_name_createContext = new Routine_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1424, PostgreSQLParser.RULE_routine_name_create);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10756;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public routine_name(): Routine_nameContext {
		let _localctx: Routine_nameContext = new Routine_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1426, PostgreSQLParser.RULE_routine_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10758;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public procedure_name(): Procedure_nameContext {
		let _localctx: Procedure_nameContext = new Procedure_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1428, PostgreSQLParser.RULE_procedure_name);
		try {
			this.state = 10764;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1128, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10760;
				this.type_function_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10761;
				this.colid();
				this.state = 10762;
				this.indirection();
				}
				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 procedure_name_create(): Procedure_name_createContext {
		let _localctx: Procedure_name_createContext = new Procedure_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1430, PostgreSQLParser.RULE_procedure_name_create);
		try {
			this.state = 10770;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1129, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10766;
				this.type_function_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10767;
				this.colid();
				this.state = 10768;
				this.indirection();
				}
				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 column_name(): Column_nameContext {
		let _localctx: Column_nameContext = new Column_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1432, PostgreSQLParser.RULE_column_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10772;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public column_name_create(): Column_name_createContext {
		let _localctx: Column_name_createContext = new Column_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1434, PostgreSQLParser.RULE_column_name_create);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10774;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public name(): NameContext {
		let _localctx: NameContext = new NameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1436, PostgreSQLParser.RULE_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10776;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public attr_name(): Attr_nameContext {
		let _localctx: Attr_nameContext = new Attr_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1438, PostgreSQLParser.RULE_attr_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10778;
			this.collabel();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public file_name(): File_nameContext {
		let _localctx: File_nameContext = new File_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1440, PostgreSQLParser.RULE_file_name);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10780;
			this.sconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public function_name_create(): Function_name_createContext {
		let _localctx: Function_name_createContext = new Function_name_createContext(this._ctx, this.state);
		this.enterRule(_localctx, 1442, PostgreSQLParser.RULE_function_name_create);
		try {
			this.state = 10786;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1130, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10782;
				this.type_function_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10783;
				this.colid();
				this.state = 10784;
				this.indirection();
				}
				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 function_name(): Function_nameContext {
		let _localctx: Function_nameContext = new Function_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1444, PostgreSQLParser.RULE_function_name);
		try {
			this.state = 10792;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1131, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10788;
				this.type_function_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10789;
				this.colid();
				this.state = 10790;
				this.indirection();
				}
				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 usual_name(): Usual_nameContext {
		let _localctx: Usual_nameContext = new Usual_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1446, PostgreSQLParser.RULE_usual_name);
		try {
			this.state = 10798;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1132, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10794;
				this.type_usual_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10795;
				this.colid();
				this.state = 10796;
				this.indirection();
				}
				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 aexprconst(): AexprconstContext {
		let _localctx: AexprconstContext = new AexprconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1448, PostgreSQLParser.RULE_aexprconst);
		let _la: number;
		try {
			this.state = 10835;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1137, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10800;
				this.iconst();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10805;
				this.function_name();
				this.state = 10815;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 10806;
					this.sconst();
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 10807;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10808;
					this.func_arg_list();
					this.state = 10810;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la === PostgreSQLParser.KW_ORDER) {
						{
						this.state = 10809;
						this.opt_sort_clause();
						}
					}

					this.state = 10812;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 10813;
					this.sconst();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 10817;
				this.consttypename();
				this.state = 10818;
				this.sconst();
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 10820;
				this.constinterval();
				this.state = 10830;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 10821;
					this.sconst();
					this.state = 10823;
					this._errHandler.sync(this);
					switch ( this.interpreter.adaptivePredict(this._input, 1135, this._ctx) ) {
					case 1:
						{
						this.state = 10822;
						this.opt_interval();
						}
						break;
					}
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
					{
					this.state = 10825;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 10826;
					this.iconst();
					this.state = 10827;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 10828;
					this.sconst();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 10832;
				this.match(PostgreSQLParser.KW_TRUE);
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 10833;
				this.match(PostgreSQLParser.KW_FALSE);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 10834;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 xconst(): XconstContext {
		let _localctx: XconstContext = new XconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1450, PostgreSQLParser.RULE_xconst);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10837;
			this.match(PostgreSQLParser.HexadecimalStringConstant);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public bconst(): BconstContext {
		let _localctx: BconstContext = new BconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1452, PostgreSQLParser.RULE_bconst);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10839;
			this.match(PostgreSQLParser.BinaryStringConstant);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public fconst(): FconstContext {
		let _localctx: FconstContext = new FconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1454, PostgreSQLParser.RULE_fconst);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10841;
			this.match(PostgreSQLParser.Numeric);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public iconst(): IconstContext {
		let _localctx: IconstContext = new IconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1456, PostgreSQLParser.RULE_iconst);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10843;
			this.match(PostgreSQLParser.Integral);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public sconst(): SconstContext {
		let _localctx: SconstContext = new SconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1458, PostgreSQLParser.RULE_sconst);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10845;
			this.anysconst();
			this.state = 10847;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1138, this._ctx) ) {
			case 1:
				{
				this.state = 10846;
				this.opt_uescape();
				}
				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 anysconst(): AnysconstContext {
		let _localctx: AnysconstContext = new AnysconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1460, PostgreSQLParser.RULE_anysconst);
		let _la: number;
		try {
			this.state = 10860;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.StringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10849;
				this.match(PostgreSQLParser.StringConstant);
				}
				break;
			case PostgreSQLParser.UnicodeEscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10850;
				this.match(PostgreSQLParser.UnicodeEscapeStringConstant);
				}
				break;
			case PostgreSQLParser.BeginDollarStringConstant:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10851;
				this.match(PostgreSQLParser.BeginDollarStringConstant);
				this.state = 10855;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === PostgreSQLParser.DollarText) {
					{
					{
					this.state = 10852;
					this.match(PostgreSQLParser.DollarText);
					}
					}
					this.state = 10857;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 10858;
				this.match(PostgreSQLParser.EndDollarStringConstant);
				}
				break;
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10859;
				this.match(PostgreSQLParser.EscapeStringConstant);
				}
				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 opt_uescape(): Opt_uescapeContext {
		let _localctx: Opt_uescapeContext = new Opt_uescapeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1462, PostgreSQLParser.RULE_opt_uescape);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10862;
			this.match(PostgreSQLParser.KW_UESCAPE);
			this.state = 10863;
			this.anysconst();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public signediconst(): SignediconstContext {
		let _localctx: SignediconstContext = new SignediconstContext(this._ctx, this.state);
		this.enterRule(_localctx, 1464, PostgreSQLParser.RULE_signediconst);
		try {
			this.state = 10870;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.Integral:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10865;
				this.iconst();
				}
				break;
			case PostgreSQLParser.PLUS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10866;
				this.match(PostgreSQLParser.PLUS);
				this.state = 10867;
				this.iconst();
				}
				break;
			case PostgreSQLParser.MINUS:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10868;
				this.match(PostgreSQLParser.MINUS);
				this.state = 10869;
				this.iconst();
				}
				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 groupname(): GroupnameContext {
		let _localctx: GroupnameContext = new GroupnameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1466, PostgreSQLParser.RULE_groupname);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10872;
			this.rolespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public roleid(): RoleidContext {
		let _localctx: RoleidContext = new RoleidContext(this._ctx, this.state);
		this.enterRule(_localctx, 1468, PostgreSQLParser.RULE_roleid);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10874;
			this.rolespec();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public rolespec(): RolespecContext {
		let _localctx: RolespecContext = new RolespecContext(this._ctx, this.state);
		this.enterRule(_localctx, 1470, PostgreSQLParser.RULE_rolespec);
		try {
			this.state = 10881;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10876;
				this.nonreservedword();
				}
				break;
			case PostgreSQLParser.KW_CURRENT_USER:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10877;
				this.match(PostgreSQLParser.KW_CURRENT_USER);
				}
				break;
			case PostgreSQLParser.KW_CURRENT_ROLE:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10878;
				this.match(PostgreSQLParser.KW_CURRENT_ROLE);
				}
				break;
			case PostgreSQLParser.KW_SESSION_USER:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10879;
				this.match(PostgreSQLParser.KW_SESSION_USER);
				}
				break;
			case PostgreSQLParser.KW_PUBLIC:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10880;
				this.match(PostgreSQLParser.KW_PUBLIC);
				}
				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 role_list(): Role_listContext {
		let _localctx: Role_listContext = new Role_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1472, PostgreSQLParser.RULE_role_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10883;
			this.rolespec();
			this.state = 10888;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 10884;
				this.match(PostgreSQLParser.COMMA);
				this.state = 10885;
				this.rolespec();
				}
				}
				this.state = 10890;
				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 colid(): ColidContext {
		let _localctx: ColidContext = new ColidContext(this._ctx, this.state);
		this.enterRule(_localctx, 1474, PostgreSQLParser.RULE_colid);
		try {
			this.state = 10895;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1144, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10891;
				this.identifier();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10894;
				this.plsql_unreserved_keyword();
				}
				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 index_method_choices(): Index_method_choicesContext {
		let _localctx: Index_method_choicesContext = new Index_method_choicesContext(this._ctx, this.state);
		this.enterRule(_localctx, 1476, PostgreSQLParser.RULE_index_method_choices);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10897;
			this.identifier();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public exclude_element(): Exclude_elementContext {
		let _localctx: Exclude_elementContext = new Exclude_elementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1478, PostgreSQLParser.RULE_exclude_element);
		let _la: number;
		try {
			this.state = 10911;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_WITH:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10899;
				this.opt_definition();
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				{
				this.state = 10900;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 10901;
				this.a_expr();
				this.state = 10902;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				this.state = 10904;
				this.identifier();
				this.state = 10906;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ASC || _la === PostgreSQLParser.KW_DESC) {
					{
					this.state = 10905;
					this.opt_asc_desc();
					}
				}

				this.state = 10909;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_NULLS) {
					{
					this.state = 10908;
					this.opt_nulls_order();
					}
				}

				}
				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 index_paramenters(): Index_paramentersContext {
		let _localctx: Index_paramentersContext = new Index_paramentersContext(this._ctx, this.state);
		this.enterRule(_localctx, 1480, PostgreSQLParser.RULE_index_paramenters);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10915;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 10913;
				this.match(PostgreSQLParser.KW_WITH);
				this.state = 10914;
				this.reloptions();
				}
			}

			this.state = 10918;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_USING) {
				{
				this.state = 10917;
				this.optconstablespace();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public type_function_name(): Type_function_nameContext {
		let _localctx: Type_function_nameContext = new Type_function_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1482, PostgreSQLParser.RULE_type_function_name);
		try {
			this.state = 10924;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1150, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10920;
				this.identifier();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10923;
				this.type_func_name_keyword();
				}
				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 type_usual_name(): Type_usual_nameContext {
		let _localctx: Type_usual_nameContext = new Type_usual_nameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1484, PostgreSQLParser.RULE_type_usual_name);
		try {
			this.state = 10930;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1151, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10926;
				this.identifier();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10929;
				this.type_func_name_keyword();
				}
				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 nonreservedword_column(): Nonreservedword_columnContext {
		let _localctx: Nonreservedword_columnContext = new Nonreservedword_columnContext(this._ctx, this.state);
		this.enterRule(_localctx, 1486, PostgreSQLParser.RULE_nonreservedword_column);
		try {
			this.state = 10934;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1152, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10932;
				this.column_name();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10933;
				this.type_func_name_keyword();
				}
				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 nonreservedword(): NonreservedwordContext {
		let _localctx: NonreservedwordContext = new NonreservedwordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1488, PostgreSQLParser.RULE_nonreservedword);
		try {
			this.state = 10940;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1153, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10936;
				this.identifier();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10939;
				this.type_func_name_keyword();
				}
				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 collabel(): CollabelContext {
		let _localctx: CollabelContext = new CollabelContext(this._ctx, this.state);
		this.enterRule(_localctx, 1490, PostgreSQLParser.RULE_collabel);
		try {
			this.state = 10948;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1154, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10942;
				this.identifier();
				}
				break;

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

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

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

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

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10947;
				this.reserved_keyword();
				}
				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 identifier(): IdentifierContext {
		let _localctx: IdentifierContext = new IdentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 1492, PostgreSQLParser.RULE_identifier);
		try {
			this.state = 10960;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.Identifier:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10950;
				this.match(PostgreSQLParser.Identifier);
				this.state = 10952;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1155, this._ctx) ) {
				case 1:
					{
					this.state = 10951;
					this.opt_uescape();
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10954;
				this.sconst();
				}
				break;
			case PostgreSQLParser.QuotedIdentifier:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 10955;
				this.match(PostgreSQLParser.QuotedIdentifier);
				}
				break;
			case PostgreSQLParser.UnicodeQuotedIdentifier:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10956;
				this.match(PostgreSQLParser.UnicodeQuotedIdentifier);
				}
				break;
			case PostgreSQLParser.PLSQLVARIABLENAME:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10957;
				this.plsqlvariablename();
				}
				break;
			case PostgreSQLParser.PLSQLIDENTIFIER:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 10958;
				this.plsqlidentifier();
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 10959;
				this.plsql_unreserved_keyword();
				}
				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 plsqlidentifier(): PlsqlidentifierContext {
		let _localctx: PlsqlidentifierContext = new PlsqlidentifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 1494, PostgreSQLParser.RULE_plsqlidentifier);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10962;
			this.match(PostgreSQLParser.PLSQLIDENTIFIER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public unreserved_keyword(): Unreserved_keywordContext {
		let _localctx: Unreserved_keywordContext = new Unreserved_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1496, PostgreSQLParser.RULE_unreserved_keyword);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 10964;
			_la = this._input.LA(1);
			if (!(((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)))) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & ((1 << (PostgreSQLParser.KW_CALL - 433)) | (1 << (PostgreSQLParser.KW_CURRENT - 433)) | (1 << (PostgreSQLParser.KW_ATTACH - 433)) | (1 << (PostgreSQLParser.KW_DETACH - 433)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 433)) | (1 << (PostgreSQLParser.KW_GENERATED - 433)) | (1 << (PostgreSQLParser.KW_LOGGED - 433)) | (1 << (PostgreSQLParser.KW_STORED - 433)) | (1 << (PostgreSQLParser.KW_INCLUDE - 433)) | (1 << (PostgreSQLParser.KW_ROUTINE - 433)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 433)) | (1 << (PostgreSQLParser.KW_IMPORT - 433)) | (1 << (PostgreSQLParser.KW_POLICY - 433)) | (1 << (PostgreSQLParser.KW_METHOD - 433)) | (1 << (PostgreSQLParser.KW_REFERENCING - 433)) | (1 << (PostgreSQLParser.KW_NEW - 433)) | (1 << (PostgreSQLParser.KW_OLD - 433)) | (1 << (PostgreSQLParser.KW_VALUE - 433)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 433)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 433)) | (1 << (PostgreSQLParser.KW_ROUTINES - 433)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 433)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 433)) | (1 << (PostgreSQLParser.KW_INPUT - 433)) | (1 << (PostgreSQLParser.KW_SUPPORT - 433)) | (1 << (PostgreSQLParser.KW_PARALLEL - 433)) | (1 << (PostgreSQLParser.KW_SQL - 433)) | (1 << (PostgreSQLParser.KW_DEPENDS - 433)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 433)) | (1 << (PostgreSQLParser.KW_CONFLICT - 433)))) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & ((1 << (PostgreSQLParser.KW_SKIP - 465)) | (1 << (PostgreSQLParser.KW_LOCKED - 465)) | (1 << (PostgreSQLParser.KW_TIES - 465)) | (1 << (PostgreSQLParser.KW_ROLLUP - 465)) | (1 << (PostgreSQLParser.KW_CUBE - 465)) | (1 << (PostgreSQLParser.KW_SETS - 465)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 465)) | (1 << (PostgreSQLParser.KW_COLUMNS - 465)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 465)) | (1 << (PostgreSQLParser.KW_WITHIN - 465)) | (1 << (PostgreSQLParser.KW_FILTER - 465)) | (1 << (PostgreSQLParser.KW_GROUPS - 465)) | (1 << (PostgreSQLParser.KW_OTHERS - 465)) | (1 << (PostgreSQLParser.KW_NFC - 465)) | (1 << (PostgreSQLParser.KW_NFD - 465)) | (1 << (PostgreSQLParser.KW_NFKC - 465)) | (1 << (PostgreSQLParser.KW_NFKD - 465)) | (1 << (PostgreSQLParser.KW_UESCAPE - 465)) | (1 << (PostgreSQLParser.KW_VIEWS - 465)))) !== 0) || _la === PostgreSQLParser.KW_SKIP_LOCKED || _la === PostgreSQLParser.KW_BUFFER_USAGE_LIMIT)) {
			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 col_name_keyword(): Col_name_keywordContext {
		let _localctx: Col_name_keywordContext = new Col_name_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1498, PostgreSQLParser.RULE_col_name_keyword);
		try {
			this.state = 11017;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1157, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 10966;
				this.match(PostgreSQLParser.KW_BETWEEN);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 10967;
				this.match(PostgreSQLParser.KW_BIGINT);
				}
				break;

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 10969;
				this.match(PostgreSQLParser.KW_BOOLEAN);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 10970;
				this.match(PostgreSQLParser.KW_CHAR);
				}
				break;

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

			case 7:
				this.enterOuterAlt(_localctx, 7);
				{
				this.state = 10972;
				this.match(PostgreSQLParser.KW_COALESCE);
				}
				break;

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 10973;
				this.match(PostgreSQLParser.KW_DEC);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 10974;
				this.match(PostgreSQLParser.KW_DECIMAL);
				}
				break;

			case 10:
				this.enterOuterAlt(_localctx, 10);
				{
				this.state = 10975;
				this.match(PostgreSQLParser.KW_EXISTS);
				}
				break;

			case 11:
				this.enterOuterAlt(_localctx, 11);
				{
				this.state = 10976;
				this.match(PostgreSQLParser.KW_EXTRACT);
				}
				break;

			case 12:
				this.enterOuterAlt(_localctx, 12);
				{
				this.state = 10977;
				this.match(PostgreSQLParser.KW_FLOAT);
				}
				break;

			case 13:
				this.enterOuterAlt(_localctx, 13);
				{
				this.state = 10978;
				this.match(PostgreSQLParser.KW_GREATEST);
				}
				break;

			case 14:
				this.enterOuterAlt(_localctx, 14);
				{
				this.state = 10979;
				this.match(PostgreSQLParser.KW_GROUPING);
				}
				break;

			case 15:
				this.enterOuterAlt(_localctx, 15);
				{
				this.state = 10980;
				this.match(PostgreSQLParser.KW_INOUT);
				}
				break;

			case 16:
				this.enterOuterAlt(_localctx, 16);
				{
				this.state = 10981;
				this.match(PostgreSQLParser.KW_INT);
				}
				break;

			case 17:
				this.enterOuterAlt(_localctx, 17);
				{
				this.state = 10982;
				this.match(PostgreSQLParser.KW_INTEGER);
				}
				break;

			case 18:
				this.enterOuterAlt(_localctx, 18);
				{
				this.state = 10983;
				this.match(PostgreSQLParser.KW_INTERVAL);
				}
				break;

			case 19:
				this.enterOuterAlt(_localctx, 19);
				{
				this.state = 10984;
				this.match(PostgreSQLParser.KW_LEAST);
				}
				break;

			case 20:
				this.enterOuterAlt(_localctx, 20);
				{
				this.state = 10985;
				this.match(PostgreSQLParser.KW_NATIONAL);
				}
				break;

			case 21:
				this.enterOuterAlt(_localctx, 21);
				{
				this.state = 10986;
				this.match(PostgreSQLParser.KW_NCHAR);
				}
				break;

			case 22:
				this.enterOuterAlt(_localctx, 22);
				{
				this.state = 10987;
				this.match(PostgreSQLParser.KW_NONE);
				}
				break;

			case 23:
				this.enterOuterAlt(_localctx, 23);
				{
				this.state = 10988;
				this.match(PostgreSQLParser.KW_NORMALIZE);
				}
				break;

			case 24:
				this.enterOuterAlt(_localctx, 24);
				{
				this.state = 10989;
				this.match(PostgreSQLParser.KW_NULLIF);
				}
				break;

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

			case 26:
				this.enterOuterAlt(_localctx, 26);
				{
				this.state = 10991;
				this.match(PostgreSQLParser.KW_OUT);
				}
				break;

			case 27:
				this.enterOuterAlt(_localctx, 27);
				{
				this.state = 10992;
				this.match(PostgreSQLParser.KW_OVERLAY);
				}
				break;

			case 28:
				this.enterOuterAlt(_localctx, 28);
				{
				this.state = 10993;
				this.match(PostgreSQLParser.KW_POSITION);
				}
				break;

			case 29:
				this.enterOuterAlt(_localctx, 29);
				{
				this.state = 10994;
				this.match(PostgreSQLParser.KW_PRECISION);
				}
				break;

			case 30:
				this.enterOuterAlt(_localctx, 30);
				{
				this.state = 10995;
				this.match(PostgreSQLParser.KW_REAL);
				}
				break;

			case 31:
				this.enterOuterAlt(_localctx, 31);
				{
				this.state = 10996;
				this.match(PostgreSQLParser.KW_ROW);
				}
				break;

			case 32:
				this.enterOuterAlt(_localctx, 32);
				{
				this.state = 10997;
				this.match(PostgreSQLParser.KW_SETOF);
				}
				break;

			case 33:
				this.enterOuterAlt(_localctx, 33);
				{
				this.state = 10998;
				this.match(PostgreSQLParser.KW_SMALLINT);
				}
				break;

			case 34:
				this.enterOuterAlt(_localctx, 34);
				{
				this.state = 10999;
				this.match(PostgreSQLParser.KW_SUBSTRING);
				}
				break;

			case 35:
				this.enterOuterAlt(_localctx, 35);
				{
				this.state = 11000;
				this.match(PostgreSQLParser.KW_TIME);
				}
				break;

			case 36:
				this.enterOuterAlt(_localctx, 36);
				{
				this.state = 11001;
				this.match(PostgreSQLParser.KW_TIMESTAMP);
				}
				break;

			case 37:
				this.enterOuterAlt(_localctx, 37);
				{
				this.state = 11002;
				this.match(PostgreSQLParser.KW_TREAT);
				}
				break;

			case 38:
				this.enterOuterAlt(_localctx, 38);
				{
				this.state = 11003;
				this.match(PostgreSQLParser.KW_TRIM);
				}
				break;

			case 39:
				this.enterOuterAlt(_localctx, 39);
				{
				this.state = 11004;
				this.match(PostgreSQLParser.KW_VALUES);
				}
				break;

			case 40:
				this.enterOuterAlt(_localctx, 40);
				{
				this.state = 11005;
				this.match(PostgreSQLParser.KW_VARCHAR);
				}
				break;

			case 41:
				this.enterOuterAlt(_localctx, 41);
				{
				this.state = 11006;
				this.match(PostgreSQLParser.KW_XMLATTRIBUTES);
				}
				break;

			case 42:
				this.enterOuterAlt(_localctx, 42);
				{
				this.state = 11007;
				this.match(PostgreSQLParser.KW_XMLCONCAT);
				}
				break;

			case 43:
				this.enterOuterAlt(_localctx, 43);
				{
				this.state = 11008;
				this.match(PostgreSQLParser.KW_XMLELEMENT);
				}
				break;

			case 44:
				this.enterOuterAlt(_localctx, 44);
				{
				this.state = 11009;
				this.match(PostgreSQLParser.KW_XMLEXISTS);
				}
				break;

			case 45:
				this.enterOuterAlt(_localctx, 45);
				{
				this.state = 11010;
				this.match(PostgreSQLParser.KW_XMLFOREST);
				}
				break;

			case 46:
				this.enterOuterAlt(_localctx, 46);
				{
				this.state = 11011;
				this.match(PostgreSQLParser.KW_XMLNAMESPACES);
				}
				break;

			case 47:
				this.enterOuterAlt(_localctx, 47);
				{
				this.state = 11012;
				this.match(PostgreSQLParser.KW_XMLPARSE);
				}
				break;

			case 48:
				this.enterOuterAlt(_localctx, 48);
				{
				this.state = 11013;
				this.match(PostgreSQLParser.KW_XMLPI);
				}
				break;

			case 49:
				this.enterOuterAlt(_localctx, 49);
				{
				this.state = 11014;
				this.match(PostgreSQLParser.KW_XMLROOT);
				}
				break;

			case 50:
				this.enterOuterAlt(_localctx, 50);
				{
				this.state = 11015;
				this.match(PostgreSQLParser.KW_XMLSERIALIZE);
				}
				break;

			case 51:
				this.enterOuterAlt(_localctx, 51);
				{
				this.state = 11016;
				this.match(PostgreSQLParser.KW_XMLTABLE);
				}
				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 type_func_name_keyword(): Type_func_name_keywordContext {
		let _localctx: Type_func_name_keywordContext = new Type_func_name_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1500, PostgreSQLParser.RULE_type_func_name_keyword);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11019;
			_la = this._input.LA(1);
			if (!(((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & ((1 << (PostgreSQLParser.KW_AUTHORIZATION - 106)) | (1 << (PostgreSQLParser.KW_BINARY - 106)) | (1 << (PostgreSQLParser.KW_COLLATION - 106)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 106)) | (1 << (PostgreSQLParser.KW_CROSS - 106)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 106)) | (1 << (PostgreSQLParser.KW_FREEZE - 106)) | (1 << (PostgreSQLParser.KW_FULL - 106)) | (1 << (PostgreSQLParser.KW_ILIKE - 106)) | (1 << (PostgreSQLParser.KW_INNER - 106)) | (1 << (PostgreSQLParser.KW_IS - 106)) | (1 << (PostgreSQLParser.KW_ISNULL - 106)) | (1 << (PostgreSQLParser.KW_JOIN - 106)) | (1 << (PostgreSQLParser.KW_LEFT - 106)) | (1 << (PostgreSQLParser.KW_LIKE - 106)) | (1 << (PostgreSQLParser.KW_NATURAL - 106)) | (1 << (PostgreSQLParser.KW_NOTNULL - 106)) | (1 << (PostgreSQLParser.KW_OUTER - 106)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 106)) | (1 << (PostgreSQLParser.KW_RIGHT - 106)) | (1 << (PostgreSQLParser.KW_SIMILAR - 106)) | (1 << (PostgreSQLParser.KW_VERBOSE - 106)))) !== 0) || _la === PostgreSQLParser.KW_TABLESAMPLE)) {
			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 reserved_keyword(): Reserved_keywordContext {
		let _localctx: Reserved_keywordContext = new Reserved_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1502, PostgreSQLParser.RULE_reserved_keyword);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11021;
			_la = this._input.LA(1);
			if (!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & ((1 << (PostgreSQLParser.KW_ALL - 30)) | (1 << (PostgreSQLParser.KW_ANALYSE - 30)) | (1 << (PostgreSQLParser.KW_ANALYZE - 30)) | (1 << (PostgreSQLParser.KW_AND - 30)) | (1 << (PostgreSQLParser.KW_ANY - 30)) | (1 << (PostgreSQLParser.KW_ARRAY - 30)) | (1 << (PostgreSQLParser.KW_AS - 30)) | (1 << (PostgreSQLParser.KW_ASC - 30)) | (1 << (PostgreSQLParser.KW_ASYMMETRIC - 30)) | (1 << (PostgreSQLParser.KW_BOTH - 30)) | (1 << (PostgreSQLParser.KW_CASE - 30)) | (1 << (PostgreSQLParser.KW_CAST - 30)) | (1 << (PostgreSQLParser.KW_CHECK - 30)) | (1 << (PostgreSQLParser.KW_COLLATE - 30)) | (1 << (PostgreSQLParser.KW_COLUMN - 30)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 30)) | (1 << (PostgreSQLParser.KW_CREATE - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 30)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 30)) | (1 << (PostgreSQLParser.KW_DEFERRABLE - 30)) | (1 << (PostgreSQLParser.KW_DESC - 30)) | (1 << (PostgreSQLParser.KW_DISTINCT - 30)) | (1 << (PostgreSQLParser.KW_DO - 30)) | (1 << (PostgreSQLParser.KW_ELSE - 30)) | (1 << (PostgreSQLParser.KW_EXCEPT - 30)) | (1 << (PostgreSQLParser.KW_FALSE - 30)) | (1 << (PostgreSQLParser.KW_FETCH - 30)))) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & ((1 << (PostgreSQLParser.KW_FOR - 62)) | (1 << (PostgreSQLParser.KW_FOREIGN - 62)) | (1 << (PostgreSQLParser.KW_FROM - 62)) | (1 << (PostgreSQLParser.KW_GRANT - 62)) | (1 << (PostgreSQLParser.KW_GROUP - 62)) | (1 << (PostgreSQLParser.KW_HAVING - 62)) | (1 << (PostgreSQLParser.KW_IN - 62)) | (1 << (PostgreSQLParser.KW_INITIALLY - 62)) | (1 << (PostgreSQLParser.KW_INTERSECT - 62)) | (1 << (PostgreSQLParser.KW_LATERAL - 62)) | (1 << (PostgreSQLParser.KW_LEADING - 62)) | (1 << (PostgreSQLParser.KW_LIMIT - 62)) | (1 << (PostgreSQLParser.KW_LOCALTIME - 62)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 62)) | (1 << (PostgreSQLParser.KW_NOT - 62)) | (1 << (PostgreSQLParser.KW_NULL - 62)) | (1 << (PostgreSQLParser.KW_OFFSET - 62)) | (1 << (PostgreSQLParser.KW_ON - 62)) | (1 << (PostgreSQLParser.KW_ONLY - 62)) | (1 << (PostgreSQLParser.KW_OR - 62)) | (1 << (PostgreSQLParser.KW_ORDER - 62)) | (1 << (PostgreSQLParser.KW_PLACING - 62)) | (1 << (PostgreSQLParser.KW_PRIMARY - 62)) | (1 << (PostgreSQLParser.KW_REFERENCES - 62)) | (1 << (PostgreSQLParser.KW_RETURNING - 62)) | (1 << (PostgreSQLParser.KW_SELECT - 62)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 62)) | (1 << (PostgreSQLParser.KW_SOME - 62)) | (1 << (PostgreSQLParser.KW_SYMMETRIC - 62)) | (1 << (PostgreSQLParser.KW_TABLE - 62)) | (1 << (PostgreSQLParser.KW_THEN - 62)))) !== 0) || ((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & ((1 << (PostgreSQLParser.KW_TO - 94)) | (1 << (PostgreSQLParser.KW_TRAILING - 94)) | (1 << (PostgreSQLParser.KW_TRUE - 94)) | (1 << (PostgreSQLParser.KW_UNION - 94)) | (1 << (PostgreSQLParser.KW_UNIQUE - 94)) | (1 << (PostgreSQLParser.KW_USER - 94)) | (1 << (PostgreSQLParser.KW_USING - 94)) | (1 << (PostgreSQLParser.KW_VARIADIC - 94)) | (1 << (PostgreSQLParser.KW_WHEN - 94)) | (1 << (PostgreSQLParser.KW_WHERE - 94)) | (1 << (PostgreSQLParser.KW_WINDOW - 94)) | (1 << (PostgreSQLParser.KW_WITH - 94)))) !== 0) || _la === PostgreSQLParser.KW_END)) {
			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 pl_function(): Pl_functionContext {
		let _localctx: Pl_functionContext = new Pl_functionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1504, PostgreSQLParser.RULE_pl_function);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11023;
			this.comp_options();
			this.state = 11024;
			this.pl_block();
			this.state = 11025;
			this.opt_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 comp_options(): Comp_optionsContext {
		let _localctx: Comp_optionsContext = new Comp_optionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1506, PostgreSQLParser.RULE_comp_options);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11030;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.Operator) {
				{
				{
				this.state = 11027;
				this.comp_option();
				}
				}
				this.state = 11032;
				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 comp_option(): Comp_optionContext {
		let _localctx: Comp_optionContext = new Comp_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1508, PostgreSQLParser.RULE_comp_option);
		try {
			this.state = 11053;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1159, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11033;
				this.sharp();
				this.state = 11034;
				this.match(PostgreSQLParser.KW_OPTION);
				this.state = 11035;
				this.match(PostgreSQLParser.KW_DUMP);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11037;
				this.sharp();
				this.state = 11038;
				this.match(PostgreSQLParser.KW_PRINT_STRICT_PARAMS);
				this.state = 11039;
				this.option_value();
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11041;
				this.sharp();
				this.state = 11042;
				this.match(PostgreSQLParser.KW_VARIABLE_CONFLICT);
				this.state = 11043;
				this.match(PostgreSQLParser.KW_ERROR);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 11045;
				this.sharp();
				this.state = 11046;
				this.match(PostgreSQLParser.KW_VARIABLE_CONFLICT);
				this.state = 11047;
				this.match(PostgreSQLParser.KW_USE_VARIABLE);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 11049;
				this.sharp();
				this.state = 11050;
				this.match(PostgreSQLParser.KW_VARIABLE_CONFLICT);
				this.state = 11051;
				this.match(PostgreSQLParser.KW_USE_COLUMN);
				}
				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 sharp(): SharpContext {
		let _localctx: SharpContext = new SharpContext(this._ctx, this.state);
		this.enterRule(_localctx, 1510, PostgreSQLParser.RULE_sharp);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11055;
			this.match(PostgreSQLParser.Operator);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public option_value(): Option_valueContext {
		let _localctx: Option_valueContext = new Option_valueContext(this._ctx, this.state);
		this.enterRule(_localctx, 1512, PostgreSQLParser.RULE_option_value);
		try {
			this.state = 11061;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1160, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11057;
				this.sconst();
				}
				break;

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

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

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 11060;
				this.unreserved_keyword();
				}
				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 opt_semi(): Opt_semiContext {
		let _localctx: Opt_semiContext = new Opt_semiContext(this._ctx, this.state);
		this.enterRule(_localctx, 1514, PostgreSQLParser.RULE_opt_semi);
		try {
			this.state = 11065;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.EOF:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.SEMI:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11064;
				this.match(PostgreSQLParser.SEMI);
				}
				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 pl_block(): Pl_blockContext {
		let _localctx: Pl_blockContext = new Pl_blockContext(this._ctx, this.state);
		this.enterRule(_localctx, 1516, PostgreSQLParser.RULE_pl_block);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11067;
			this.decl_sect();
			this.state = 11068;
			this.match(PostgreSQLParser.KW_BEGIN);
			this.state = 11069;
			this.proc_sect();
			this.state = 11070;
			this.exception_sect();
			this.state = 11071;
			this.match(PostgreSQLParser.KW_END);
			this.state = 11072;
			this.opt_label();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_sect(): Decl_sectContext {
		let _localctx: Decl_sectContext = new Decl_sectContext(this._ctx, this.state);
		this.enterRule(_localctx, 1518, PostgreSQLParser.RULE_decl_sect);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11074;
			this.opt_block_label();
			this.state = 11079;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_DECLARE) {
				{
				this.state = 11075;
				this.decl_start();
				this.state = 11077;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1162, this._ctx) ) {
				case 1:
					{
					this.state = 11076;
					this.decl_stmts();
					}
					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 decl_start(): Decl_startContext {
		let _localctx: Decl_startContext = new Decl_startContext(this._ctx, this.state);
		this.enterRule(_localctx, 1520, PostgreSQLParser.RULE_decl_start);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11081;
			this.match(PostgreSQLParser.KW_DECLARE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_stmts(): Decl_stmtsContext {
		let _localctx: Decl_stmtsContext = new Decl_stmtsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1522, PostgreSQLParser.RULE_decl_stmts);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11084;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 11083;
					this.decl_stmt();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 11086;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1164, 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 label_decl(): Label_declContext {
		let _localctx: Label_declContext = new Label_declContext(this._ctx, this.state);
		this.enterRule(_localctx, 1524, PostgreSQLParser.RULE_label_decl);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11088;
			this.match(PostgreSQLParser.LESS_LESS);
			this.state = 11089;
			this.any_identifier();
			this.state = 11090;
			this.match(PostgreSQLParser.GREATER_GREATER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_stmt(): Decl_stmtContext {
		let _localctx: Decl_stmtContext = new Decl_stmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 1526, PostgreSQLParser.RULE_decl_stmt);
		try {
			this.state = 11095;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1165, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11092;
				this.decl_statement();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11093;
				this.match(PostgreSQLParser.KW_DECLARE);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11094;
				this.label_decl();
				}
				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 decl_statement(): Decl_statementContext {
		let _localctx: Decl_statementContext = new Decl_statementContext(this._ctx, this.state);
		this.enterRule(_localctx, 1528, PostgreSQLParser.RULE_decl_statement);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11097;
			this.decl_varname();
			this.state = 11113;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1166, this._ctx) ) {
			case 1:
				{
				this.state = 11098;
				this.match(PostgreSQLParser.KW_ALIAS);
				this.state = 11099;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 11100;
				this.decl_aliasitem();
				}
				break;

			case 2:
				{
				this.state = 11101;
				this.decl_const();
				this.state = 11102;
				this.decl_datatype();
				this.state = 11103;
				this.decl_collate();
				this.state = 11104;
				this.decl_notnull();
				this.state = 11105;
				this.decl_defval();
				}
				break;

			case 3:
				{
				this.state = 11107;
				this.opt_scrollable();
				this.state = 11108;
				this.match(PostgreSQLParser.KW_CURSOR);
				this.state = 11109;
				this.decl_cursor_args();
				this.state = 11110;
				this.decl_is_for();
				this.state = 11111;
				this.decl_cursor_query();
				}
				break;
			}
			this.state = 11115;
			this.match(PostgreSQLParser.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 opt_scrollable(): Opt_scrollableContext {
		let _localctx: Opt_scrollableContext = new Opt_scrollableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1530, PostgreSQLParser.RULE_opt_scrollable);
		try {
			this.state = 11121;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CURSOR:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_NO:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11118;
				this.match(PostgreSQLParser.KW_NO);
				this.state = 11119;
				this.match(PostgreSQLParser.KW_SCROLL);
				}
				break;
			case PostgreSQLParser.KW_SCROLL:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11120;
				this.match(PostgreSQLParser.KW_SCROLL);
				}
				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 decl_cursor_query(): Decl_cursor_queryContext {
		let _localctx: Decl_cursor_queryContext = new Decl_cursor_queryContext(this._ctx, this.state);
		this.enterRule(_localctx, 1532, PostgreSQLParser.RULE_decl_cursor_query);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11123;
			this.selectstmt();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_cursor_args(): Decl_cursor_argsContext {
		let _localctx: Decl_cursor_argsContext = new Decl_cursor_argsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1534, PostgreSQLParser.RULE_decl_cursor_args);
		try {
			this.state = 11130;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FOR:
			case PostgreSQLParser.KW_IS:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11126;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 11127;
				this.decl_cursor_arglist();
				this.state = 11128;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 decl_cursor_arglist(): Decl_cursor_arglistContext {
		let _localctx: Decl_cursor_arglistContext = new Decl_cursor_arglistContext(this._ctx, this.state);
		this.enterRule(_localctx, 1536, PostgreSQLParser.RULE_decl_cursor_arglist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11132;
			this.decl_cursor_arg();
			this.state = 11137;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11133;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11134;
				this.decl_cursor_arg();
				}
				}
				this.state = 11139;
				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 decl_cursor_arg(): Decl_cursor_argContext {
		let _localctx: Decl_cursor_argContext = new Decl_cursor_argContext(this._ctx, this.state);
		this.enterRule(_localctx, 1538, PostgreSQLParser.RULE_decl_cursor_arg);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11140;
			this.decl_varname();
			this.state = 11141;
			this.decl_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 decl_is_for(): Decl_is_forContext {
		let _localctx: Decl_is_forContext = new Decl_is_forContext(this._ctx, this.state);
		this.enterRule(_localctx, 1540, PostgreSQLParser.RULE_decl_is_for);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11143;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_FOR || _la === PostgreSQLParser.KW_IS)) {
			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 decl_aliasitem(): Decl_aliasitemContext {
		let _localctx: Decl_aliasitemContext = new Decl_aliasitemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1542, PostgreSQLParser.RULE_decl_aliasitem);
		try {
			this.state = 11147;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.PARAM:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11145;
				this.match(PostgreSQLParser.PARAM);
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11146;
				this.colid();
				}
				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 decl_varname(): Decl_varnameContext {
		let _localctx: Decl_varnameContext = new Decl_varnameContext(this._ctx, this.state);
		this.enterRule(_localctx, 1544, PostgreSQLParser.RULE_decl_varname);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11149;
			this.any_identifier();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_const(): Decl_constContext {
		let _localctx: Decl_constContext = new Decl_constContext(this._ctx, this.state);
		this.enterRule(_localctx, 1546, PostgreSQLParser.RULE_decl_const);
		try {
			this.state = 11153;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1171, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11152;
				this.match(PostgreSQLParser.KW_CONSTANT);
				}
				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 decl_datatype(): Decl_datatypeContext {
		let _localctx: Decl_datatypeContext = new Decl_datatypeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1548, PostgreSQLParser.RULE_decl_datatype);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11155;
			this.typename();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_collate(): Decl_collateContext {
		let _localctx: Decl_collateContext = new Decl_collateContext(this._ctx, this.state);
		this.enterRule(_localctx, 1550, PostgreSQLParser.RULE_decl_collate);
		try {
			this.state = 11160;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.COLON_EQUALS:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_NOT:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_COLLATE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11158;
				this.match(PostgreSQLParser.KW_COLLATE);
				this.state = 11159;
				this.any_name();
				}
				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 decl_notnull(): Decl_notnullContext {
		let _localctx: Decl_notnullContext = new Decl_notnullContext(this._ctx, this.state);
		this.enterRule(_localctx, 1552, PostgreSQLParser.RULE_decl_notnull);
		try {
			this.state = 11165;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.COLON_EQUALS:
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_NOT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11163;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 11164;
				this.match(PostgreSQLParser.KW_NULL);
				}
				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 decl_defval(): Decl_defvalContext {
		let _localctx: Decl_defvalContext = new Decl_defvalContext(this._ctx, this.state);
		this.enterRule(_localctx, 1554, PostgreSQLParser.RULE_decl_defval);
		try {
			this.state = 11171;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.COLON_EQUALS:
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11168;
				this.decl_defkey();
				this.state = 11169;
				this.sql_expression();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public decl_defkey(): Decl_defkeyContext {
		let _localctx: Decl_defkeyContext = new Decl_defkeyContext(this._ctx, this.state);
		this.enterRule(_localctx, 1556, PostgreSQLParser.RULE_decl_defkey);
		try {
			this.state = 11175;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.EQUAL:
			case PostgreSQLParser.COLON_EQUALS:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11173;
				this.assign_operator();
				}
				break;
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11174;
				this.match(PostgreSQLParser.KW_DEFAULT);
				}
				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 assign_operator(): Assign_operatorContext {
		let _localctx: Assign_operatorContext = new Assign_operatorContext(this._ctx, this.state);
		this.enterRule(_localctx, 1558, PostgreSQLParser.RULE_assign_operator);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11177;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.EQUAL || _la === PostgreSQLParser.COLON_EQUALS)) {
			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 proc_sect(): Proc_sectContext {
		let _localctx: Proc_sectContext = new Proc_sectContext(this._ctx, this.state);
		this.enterRule(_localctx, 1560, PostgreSQLParser.RULE_proc_sect);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11182;
			this._errHandler.sync(this);
			_alt = this.interpreter.adaptivePredict(this._input, 1176, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 11179;
					this.proc_stmt();
					}
					}
				}
				this.state = 11184;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1176, 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 proc_stmt(): Proc_stmtContext {
		let _localctx: Proc_stmtContext = new Proc_stmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 1562, PostgreSQLParser.RULE_proc_stmt);
		try {
			this.state = 11212;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1177, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11185;
				this.pl_block();
				this.state = 11186;
				this.match(PostgreSQLParser.SEMI);
				}
				break;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			case 25:
				this.enterOuterAlt(_localctx, 25);
				{
				this.state = 11211;
				this.stmt_set();
				}
				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 stmt_perform(): Stmt_performContext {
		let _localctx: Stmt_performContext = new Stmt_performContext(this._ctx, this.state);
		this.enterRule(_localctx, 1564, PostgreSQLParser.RULE_stmt_perform);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11214;
			this.match(PostgreSQLParser.KW_PERFORM);
			this.state = 11215;
			this.expr_until_semi();
			this.state = 11216;
			this.match(PostgreSQLParser.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 stmt_call(): Stmt_callContext {
		let _localctx: Stmt_callContext = new Stmt_callContext(this._ctx, this.state);
		this.enterRule(_localctx, 1566, PostgreSQLParser.RULE_stmt_call);
		try {
			this.state = 11234;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_CALL:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11218;
				this.match(PostgreSQLParser.KW_CALL);
				this.state = 11219;
				this.any_identifier();
				this.state = 11225;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1178, this._ctx) ) {
				case 1:
					{
					this.state = 11220;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 11221;
					this.opt_expr_list();
					this.state = 11222;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					this.state = 11223;
					this.match(PostgreSQLParser.SEMI);
					}
					break;
				}
				}
				break;
			case PostgreSQLParser.KW_DO:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11227;
				this.match(PostgreSQLParser.KW_DO);
				this.state = 11228;
				this.any_identifier();
				this.state = 11229;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 11230;
				this.opt_expr_list();
				this.state = 11231;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				this.state = 11232;
				this.match(PostgreSQLParser.SEMI);
				}
				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 opt_expr_list(): Opt_expr_listContext {
		let _localctx: Opt_expr_listContext = new Opt_expr_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1568, PostgreSQLParser.RULE_opt_expr_list);
		try {
			this.state = 11238;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.CLOSE_PAREN:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
			case PostgreSQLParser.PLUS:
			case PostgreSQLParser.MINUS:
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.Operator:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_CASE:
			case PostgreSQLParser.KW_CAST:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_CURRENT_CATALOG:
			case PostgreSQLParser.KW_CURRENT_DATE:
			case PostgreSQLParser.KW_CURRENT_ROLE:
			case PostgreSQLParser.KW_CURRENT_TIME:
			case PostgreSQLParser.KW_CURRENT_TIMESTAMP:
			case PostgreSQLParser.KW_CURRENT_USER:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FALSE:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_LOCALTIME:
			case PostgreSQLParser.KW_LOCALTIMESTAMP:
			case PostgreSQLParser.KW_NOT:
			case PostgreSQLParser.KW_NULL:
			case PostgreSQLParser.KW_SESSION_USER:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_TRUE:
			case PostgreSQLParser.KW_UNIQUE:
			case PostgreSQLParser.KW_USER:
			case PostgreSQLParser.KW_AUTHORIZATION:
			case PostgreSQLParser.KW_BINARY:
			case PostgreSQLParser.KW_COLLATION:
			case PostgreSQLParser.KW_CONCURRENTLY:
			case PostgreSQLParser.KW_CROSS:
			case PostgreSQLParser.KW_CURRENT_SCHEMA:
			case PostgreSQLParser.KW_FREEZE:
			case PostgreSQLParser.KW_FULL:
			case PostgreSQLParser.KW_ILIKE:
			case PostgreSQLParser.KW_INNER:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_ISNULL:
			case PostgreSQLParser.KW_JOIN:
			case PostgreSQLParser.KW_LEFT:
			case PostgreSQLParser.KW_LIKE:
			case PostgreSQLParser.KW_NATURAL:
			case PostgreSQLParser.KW_NOTNULL:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_OVERLAPS:
			case PostgreSQLParser.KW_RIGHT:
			case PostgreSQLParser.KW_SIMILAR:
			case PostgreSQLParser.KW_VERBOSE:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_TABLESAMPLE:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.BinaryStringConstant:
			case PostgreSQLParser.HexadecimalStringConstant:
			case PostgreSQLParser.Integral:
			case PostgreSQLParser.Numeric:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11237;
				this.expr_list();
				}
				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 stmt_assign(): Stmt_assignContext {
		let _localctx: Stmt_assignContext = new Stmt_assignContext(this._ctx, this.state);
		this.enterRule(_localctx, 1570, PostgreSQLParser.RULE_stmt_assign);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11240;
			this.assign_var();
			this.state = 11241;
			this.assign_operator();
			this.state = 11242;
			this.sql_expression();
			this.state = 11243;
			this.match(PostgreSQLParser.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 stmt_getdiag(): Stmt_getdiagContext {
		let _localctx: Stmt_getdiagContext = new Stmt_getdiagContext(this._ctx, this.state);
		this.enterRule(_localctx, 1572, PostgreSQLParser.RULE_stmt_getdiag);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11245;
			this.match(PostgreSQLParser.KW_GET);
			this.state = 11246;
			this.getdiag_area_opt();
			this.state = 11247;
			this.match(PostgreSQLParser.KW_DIAGNOSTICS);
			this.state = 11248;
			this.getdiag_list();
			this.state = 11249;
			this.match(PostgreSQLParser.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 getdiag_area_opt(): Getdiag_area_optContext {
		let _localctx: Getdiag_area_optContext = new Getdiag_area_optContext(this._ctx, this.state);
		this.enterRule(_localctx, 1574, PostgreSQLParser.RULE_getdiag_area_opt);
		try {
			this.state = 11254;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_DIAGNOSTICS:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_CURRENT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11252;
				this.match(PostgreSQLParser.KW_CURRENT);
				}
				break;
			case PostgreSQLParser.KW_STACKED:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11253;
				this.match(PostgreSQLParser.KW_STACKED);
				}
				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 getdiag_list(): Getdiag_listContext {
		let _localctx: Getdiag_listContext = new Getdiag_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1576, PostgreSQLParser.RULE_getdiag_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11256;
			this.getdiag_list_item();
			this.state = 11261;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11257;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11258;
				this.getdiag_list_item();
				}
				}
				this.state = 11263;
				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 getdiag_list_item(): Getdiag_list_itemContext {
		let _localctx: Getdiag_list_itemContext = new Getdiag_list_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1578, PostgreSQLParser.RULE_getdiag_list_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11264;
			this.getdiag_target();
			this.state = 11265;
			this.assign_operator();
			this.state = 11266;
			this.getdiag_item();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public getdiag_item(): Getdiag_itemContext {
		let _localctx: Getdiag_itemContext = new Getdiag_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1580, PostgreSQLParser.RULE_getdiag_item);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11268;
			this.colid();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public getdiag_target(): Getdiag_targetContext {
		let _localctx: Getdiag_targetContext = new Getdiag_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 1582, PostgreSQLParser.RULE_getdiag_target);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11270;
			this.assign_var();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public assign_var(): Assign_varContext {
		let _localctx: Assign_varContext = new Assign_varContext(this._ctx, this.state);
		this.enterRule(_localctx, 1584, PostgreSQLParser.RULE_assign_var);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11274;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				{
				this.state = 11272;
				this.any_name();
				}
				break;
			case PostgreSQLParser.PARAM:
				{
				this.state = 11273;
				this.match(PostgreSQLParser.PARAM);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 11282;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.OPEN_BRACKET) {
				{
				{
				this.state = 11276;
				this.match(PostgreSQLParser.OPEN_BRACKET);
				this.state = 11277;
				this.expr_until_rightbracket();
				this.state = 11278;
				this.match(PostgreSQLParser.CLOSE_BRACKET);
				}
				}
				this.state = 11284;
				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 stmt_if(): Stmt_ifContext {
		let _localctx: Stmt_ifContext = new Stmt_ifContext(this._ctx, this.state);
		this.enterRule(_localctx, 1586, PostgreSQLParser.RULE_stmt_if);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11285;
			this.match(PostgreSQLParser.KW_IF);
			this.state = 11286;
			this.expr_until_then();
			this.state = 11287;
			this.match(PostgreSQLParser.KW_THEN);
			this.state = 11288;
			this.proc_sect();
			this.state = 11289;
			this.stmt_elsifs();
			this.state = 11290;
			this.stmt_else();
			this.state = 11291;
			this.match(PostgreSQLParser.KW_END);
			this.state = 11292;
			this.match(PostgreSQLParser.KW_IF);
			this.state = 11293;
			this.match(PostgreSQLParser.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 stmt_elsifs(): Stmt_elsifsContext {
		let _localctx: Stmt_elsifsContext = new Stmt_elsifsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1588, PostgreSQLParser.RULE_stmt_elsifs);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11302;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_ELSIF) {
				{
				{
				this.state = 11295;
				this.match(PostgreSQLParser.KW_ELSIF);
				this.state = 11296;
				this.a_expr();
				this.state = 11297;
				this.match(PostgreSQLParser.KW_THEN);
				this.state = 11298;
				this.proc_sect();
				}
				}
				this.state = 11304;
				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 stmt_else(): Stmt_elseContext {
		let _localctx: Stmt_elseContext = new Stmt_elseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1590, PostgreSQLParser.RULE_stmt_else);
		try {
			this.state = 11308;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_END:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_ELSE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11306;
				this.match(PostgreSQLParser.KW_ELSE);
				this.state = 11307;
				this.proc_sect();
				}
				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 stmt_case(): Stmt_caseContext {
		let _localctx: Stmt_caseContext = new Stmt_caseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1592, PostgreSQLParser.RULE_stmt_case);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11310;
			this.match(PostgreSQLParser.KW_CASE);
			this.state = 11311;
			this.opt_expr_until_when();
			this.state = 11312;
			this.case_when_list();
			this.state = 11313;
			this.opt_case_else();
			this.state = 11314;
			this.match(PostgreSQLParser.KW_END);
			this.state = 11315;
			this.match(PostgreSQLParser.KW_CASE);
			this.state = 11316;
			this.match(PostgreSQLParser.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 opt_expr_until_when(): Opt_expr_until_whenContext {
		let _localctx: Opt_expr_until_whenContext = new Opt_expr_until_whenContext(this._ctx, this.state);
		this.enterRule(_localctx, 1594, PostgreSQLParser.RULE_opt_expr_until_when);
		try {
			this.state = 11320;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1187, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11319;
				this.sql_expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public case_when_list(): Case_when_listContext {
		let _localctx: Case_when_listContext = new Case_when_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1596, PostgreSQLParser.RULE_case_when_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11323;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 11322;
				this.case_when();
				}
				}
				this.state = 11325;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_WHEN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public case_when(): Case_whenContext {
		let _localctx: Case_whenContext = new Case_whenContext(this._ctx, this.state);
		this.enterRule(_localctx, 1598, PostgreSQLParser.RULE_case_when);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11327;
			this.match(PostgreSQLParser.KW_WHEN);
			this.state = 11328;
			this.expr_list();
			this.state = 11329;
			this.match(PostgreSQLParser.KW_THEN);
			this.state = 11330;
			this.proc_sect();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_case_else(): Opt_case_elseContext {
		let _localctx: Opt_case_elseContext = new Opt_case_elseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1600, PostgreSQLParser.RULE_opt_case_else);
		try {
			this.state = 11335;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_END:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_ELSE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11333;
				this.match(PostgreSQLParser.KW_ELSE);
				this.state = 11334;
				this.proc_sect();
				}
				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 stmt_loop(): Stmt_loopContext {
		let _localctx: Stmt_loopContext = new Stmt_loopContext(this._ctx, this.state);
		this.enterRule(_localctx, 1602, PostgreSQLParser.RULE_stmt_loop);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11337;
			this.opt_loop_label();
			this.state = 11338;
			this.loop_body();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stmt_while(): Stmt_whileContext {
		let _localctx: Stmt_whileContext = new Stmt_whileContext(this._ctx, this.state);
		this.enterRule(_localctx, 1604, PostgreSQLParser.RULE_stmt_while);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11340;
			this.opt_loop_label();
			this.state = 11341;
			this.match(PostgreSQLParser.KW_WHILE);
			this.state = 11342;
			this.expr_until_loop();
			this.state = 11343;
			this.loop_body();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stmt_for(): Stmt_forContext {
		let _localctx: Stmt_forContext = new Stmt_forContext(this._ctx, this.state);
		this.enterRule(_localctx, 1606, PostgreSQLParser.RULE_stmt_for);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11345;
			this.opt_loop_label();
			this.state = 11346;
			this.match(PostgreSQLParser.KW_FOR);
			this.state = 11347;
			this.for_control();
			this.state = 11348;
			this.loop_body();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public for_control(): For_controlContext {
		let _localctx: For_controlContext = new For_controlContext(this._ctx, this.state);
		this.enterRule(_localctx, 1608, PostgreSQLParser.RULE_for_control);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11350;
			this.for_variable();
			this.state = 11351;
			this.match(PostgreSQLParser.KW_IN);
			this.state = 11367;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1190, this._ctx) ) {
			case 1:
				{
				this.state = 11352;
				this.cursor_name();
				this.state = 11353;
				this.opt_cursor_parameters();
				}
				break;

			case 2:
				{
				this.state = 11355;
				this.selectstmt();
				}
				break;

			case 3:
				{
				this.state = 11356;
				this.explainstmt();
				}
				break;

			case 4:
				{
				this.state = 11357;
				this.match(PostgreSQLParser.KW_EXECUTE);
				this.state = 11358;
				this.a_expr();
				this.state = 11359;
				this.opt_for_using_expression();
				}
				break;

			case 5:
				{
				this.state = 11361;
				this.opt_reverse();
				this.state = 11362;
				this.a_expr();
				this.state = 11363;
				this.match(PostgreSQLParser.DOT_DOT);
				this.state = 11364;
				this.a_expr();
				this.state = 11365;
				this.opt_by_expression();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_for_using_expression(): Opt_for_using_expressionContext {
		let _localctx: Opt_for_using_expressionContext = new Opt_for_using_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1610, PostgreSQLParser.RULE_opt_for_using_expression);
		try {
			this.state = 11372;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.KW_LOOP:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11370;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 11371;
				this.expr_list();
				}
				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 opt_cursor_parameters(): Opt_cursor_parametersContext {
		let _localctx: Opt_cursor_parametersContext = new Opt_cursor_parametersContext(this._ctx, this.state);
		this.enterRule(_localctx, 1612, PostgreSQLParser.RULE_opt_cursor_parameters);
		let _la: number;
		try {
			this.state = 11386;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_LOOP:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.OPEN_PAREN:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11375;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 11376;
				this.a_expr();
				this.state = 11381;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la === PostgreSQLParser.COMMA) {
					{
					{
					this.state = 11377;
					this.match(PostgreSQLParser.COMMA);
					this.state = 11378;
					this.a_expr();
					}
					}
					this.state = 11383;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 11384;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
				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 opt_reverse(): Opt_reverseContext {
		let _localctx: Opt_reverseContext = new Opt_reverseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1614, PostgreSQLParser.RULE_opt_reverse);
		try {
			this.state = 11390;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1194, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11389;
				this.match(PostgreSQLParser.KW_REVERSE);
				}
				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 opt_by_expression(): Opt_by_expressionContext {
		let _localctx: Opt_by_expressionContext = new Opt_by_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1616, PostgreSQLParser.RULE_opt_by_expression);
		try {
			this.state = 11395;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_LOOP:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_BY:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11393;
				this.match(PostgreSQLParser.KW_BY);
				this.state = 11394;
				this.a_expr();
				}
				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 for_variable(): For_variableContext {
		let _localctx: For_variableContext = new For_variableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1618, PostgreSQLParser.RULE_for_variable);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11397;
			this.any_name_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stmt_foreach_a(): Stmt_foreach_aContext {
		let _localctx: Stmt_foreach_aContext = new Stmt_foreach_aContext(this._ctx, this.state);
		this.enterRule(_localctx, 1620, PostgreSQLParser.RULE_stmt_foreach_a);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11399;
			this.opt_loop_label();
			this.state = 11400;
			this.match(PostgreSQLParser.KW_FOREACH);
			this.state = 11401;
			this.for_variable();
			this.state = 11402;
			this.foreach_slice();
			this.state = 11403;
			this.match(PostgreSQLParser.KW_IN);
			this.state = 11404;
			this.match(PostgreSQLParser.KW_ARRAY);
			this.state = 11405;
			this.a_expr();
			this.state = 11406;
			this.loop_body();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public foreach_slice(): Foreach_sliceContext {
		let _localctx: Foreach_sliceContext = new Foreach_sliceContext(this._ctx, this.state);
		this.enterRule(_localctx, 1622, PostgreSQLParser.RULE_foreach_slice);
		try {
			this.state = 11411;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_IN:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_SLICE:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11409;
				this.match(PostgreSQLParser.KW_SLICE);
				this.state = 11410;
				this.iconst();
				}
				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 stmt_exit(): Stmt_exitContext {
		let _localctx: Stmt_exitContext = new Stmt_exitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1624, PostgreSQLParser.RULE_stmt_exit);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11413;
			this.exit_type();
			this.state = 11414;
			this.opt_label();
			this.state = 11416;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHEN) {
				{
				this.state = 11415;
				this.opt_exitcond();
				}
			}

			this.state = 11418;
			this.match(PostgreSQLParser.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 exit_type(): Exit_typeContext {
		let _localctx: Exit_typeContext = new Exit_typeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1626, PostgreSQLParser.RULE_exit_type);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11420;
			_la = this._input.LA(1);
			if (!(_la === PostgreSQLParser.KW_CONTINUE || _la === PostgreSQLParser.KW_EXIT)) {
			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 stmt_return(): Stmt_returnContext {
		let _localctx: Stmt_returnContext = new Stmt_returnContext(this._ctx, this.state);
		this.enterRule(_localctx, 1628, PostgreSQLParser.RULE_stmt_return);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11422;
			this.match(PostgreSQLParser.KW_RETURN);
			this.state = 11434;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1199, this._ctx) ) {
			case 1:
				{
				this.state = 11423;
				this.match(PostgreSQLParser.KW_NEXT);
				this.state = 11424;
				this.sql_expression();
				}
				break;

			case 2:
				{
				this.state = 11425;
				this.match(PostgreSQLParser.KW_QUERY);
				this.state = 11431;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_EXECUTE:
					{
					this.state = 11426;
					this.match(PostgreSQLParser.KW_EXECUTE);
					this.state = 11427;
					this.a_expr();
					this.state = 11428;
					this.opt_for_using_expression();
					}
					break;
				case PostgreSQLParser.OPEN_PAREN:
				case PostgreSQLParser.KW_SELECT:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_WITH:
				case PostgreSQLParser.KW_VALUES:
					{
					this.state = 11430;
					this.selectstmt();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 3:
				{
				this.state = 11433;
				this.opt_return_result();
				}
				break;
			}
			this.state = 11436;
			this.match(PostgreSQLParser.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 opt_return_result(): Opt_return_resultContext {
		let _localctx: Opt_return_resultContext = new Opt_return_resultContext(this._ctx, this.state);
		this.enterRule(_localctx, 1630, PostgreSQLParser.RULE_opt_return_result);
		try {
			this.state = 11440;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1200, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11439;
				this.sql_expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stmt_raise(): Stmt_raiseContext {
		let _localctx: Stmt_raiseContext = new Stmt_raiseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1632, PostgreSQLParser.RULE_stmt_raise);
		let _la: number;
		try {
			this.state = 11476;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1205, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11442;
				this.match(PostgreSQLParser.KW_RAISE);
				this.state = 11444;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & ((1 << (PostgreSQLParser.KW_DEBUG - 512)) | (1 << (PostgreSQLParser.KW_LOG - 512)) | (1 << (PostgreSQLParser.KW_INFO - 512)) | (1 << (PostgreSQLParser.KW_NOTICE - 512)) | (1 << (PostgreSQLParser.KW_WARNING - 512)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 512)))) !== 0)) {
					{
					this.state = 11443;
					this.opt_stmt_raise_level();
					}
				}

				this.state = 11446;
				this.sconst();
				this.state = 11447;
				this.opt_raise_list();
				this.state = 11448;
				this.opt_raise_using();
				this.state = 11449;
				this.match(PostgreSQLParser.SEMI);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11451;
				this.match(PostgreSQLParser.KW_RAISE);
				this.state = 11453;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1202, this._ctx) ) {
				case 1:
					{
					this.state = 11452;
					this.opt_stmt_raise_level();
					}
					break;
				}
				this.state = 11455;
				this.identifier();
				this.state = 11456;
				this.opt_raise_using();
				this.state = 11457;
				this.match(PostgreSQLParser.SEMI);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11459;
				this.match(PostgreSQLParser.KW_RAISE);
				this.state = 11461;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & ((1 << (PostgreSQLParser.KW_DEBUG - 512)) | (1 << (PostgreSQLParser.KW_LOG - 512)) | (1 << (PostgreSQLParser.KW_INFO - 512)) | (1 << (PostgreSQLParser.KW_NOTICE - 512)) | (1 << (PostgreSQLParser.KW_WARNING - 512)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 512)))) !== 0)) {
					{
					this.state = 11460;
					this.opt_stmt_raise_level();
					}
				}

				this.state = 11463;
				this.match(PostgreSQLParser.KW_SQLSTATE);
				this.state = 11464;
				this.sconst();
				this.state = 11465;
				this.opt_raise_using();
				this.state = 11466;
				this.match(PostgreSQLParser.SEMI);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 11468;
				this.match(PostgreSQLParser.KW_RAISE);
				this.state = 11470;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & ((1 << (PostgreSQLParser.KW_DEBUG - 512)) | (1 << (PostgreSQLParser.KW_LOG - 512)) | (1 << (PostgreSQLParser.KW_INFO - 512)) | (1 << (PostgreSQLParser.KW_NOTICE - 512)) | (1 << (PostgreSQLParser.KW_WARNING - 512)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 512)))) !== 0)) {
					{
					this.state = 11469;
					this.opt_stmt_raise_level();
					}
				}

				this.state = 11472;
				this.opt_raise_using();
				this.state = 11473;
				this.match(PostgreSQLParser.SEMI);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 11475;
				this.match(PostgreSQLParser.KW_RAISE);
				}
				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 opt_stmt_raise_level(): Opt_stmt_raise_levelContext {
		let _localctx: Opt_stmt_raise_levelContext = new Opt_stmt_raise_levelContext(this._ctx, this.state);
		this.enterRule(_localctx, 1634, PostgreSQLParser.RULE_opt_stmt_raise_level);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11478;
			_la = this._input.LA(1);
			if (!(((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & ((1 << (PostgreSQLParser.KW_DEBUG - 512)) | (1 << (PostgreSQLParser.KW_LOG - 512)) | (1 << (PostgreSQLParser.KW_INFO - 512)) | (1 << (PostgreSQLParser.KW_NOTICE - 512)) | (1 << (PostgreSQLParser.KW_WARNING - 512)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 512)))) !== 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 opt_raise_list(): Opt_raise_listContext {
		let _localctx: Opt_raise_listContext = new Opt_raise_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1636, PostgreSQLParser.RULE_opt_raise_list);
		let _la: number;
		try {
			this.state = 11487;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.COMMA:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11483;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 11481;
					this.match(PostgreSQLParser.COMMA);
					this.state = 11482;
					this.a_expr();
					}
					}
					this.state = 11485;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la === PostgreSQLParser.COMMA);
				}
				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 opt_raise_using(): Opt_raise_usingContext {
		let _localctx: Opt_raise_usingContext = new Opt_raise_usingContext(this._ctx, this.state);
		this.enterRule(_localctx, 1638, PostgreSQLParser.RULE_opt_raise_using);
		try {
			this.state = 11492;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11490;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 11491;
				this.opt_raise_using_elem_list();
				}
				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 opt_raise_using_elem(): Opt_raise_using_elemContext {
		let _localctx: Opt_raise_using_elemContext = new Opt_raise_using_elemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1640, PostgreSQLParser.RULE_opt_raise_using_elem);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11494;
			this.identifier();
			this.state = 11495;
			this.match(PostgreSQLParser.EQUAL);
			this.state = 11496;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_raise_using_elem_list(): Opt_raise_using_elem_listContext {
		let _localctx: Opt_raise_using_elem_listContext = new Opt_raise_using_elem_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1642, PostgreSQLParser.RULE_opt_raise_using_elem_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11498;
			this.opt_raise_using_elem();
			this.state = 11503;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11499;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11500;
				this.opt_raise_using_elem();
				}
				}
				this.state = 11505;
				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 stmt_assert(): Stmt_assertContext {
		let _localctx: Stmt_assertContext = new Stmt_assertContext(this._ctx, this.state);
		this.enterRule(_localctx, 1644, PostgreSQLParser.RULE_stmt_assert);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11506;
			this.match(PostgreSQLParser.KW_ASSERT);
			this.state = 11507;
			this.sql_expression();
			this.state = 11508;
			this.opt_stmt_assert_message();
			this.state = 11509;
			this.match(PostgreSQLParser.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 opt_stmt_assert_message(): Opt_stmt_assert_messageContext {
		let _localctx: Opt_stmt_assert_messageContext = new Opt_stmt_assert_messageContext(this._ctx, this.state);
		this.enterRule(_localctx, 1646, PostgreSQLParser.RULE_opt_stmt_assert_message);
		try {
			this.state = 11514;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.COMMA:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11512;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11513;
				this.sql_expression();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public loop_body(): Loop_bodyContext {
		let _localctx: Loop_bodyContext = new Loop_bodyContext(this._ctx, this.state);
		this.enterRule(_localctx, 1648, PostgreSQLParser.RULE_loop_body);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11516;
			this.match(PostgreSQLParser.KW_LOOP);
			this.state = 11517;
			this.proc_sect();
			this.state = 11518;
			this.match(PostgreSQLParser.KW_END);
			this.state = 11519;
			this.match(PostgreSQLParser.KW_LOOP);
			this.state = 11520;
			this.opt_label();
			this.state = 11521;
			this.match(PostgreSQLParser.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 stmt_execsql(): Stmt_execsqlContext {
		let _localctx: Stmt_execsqlContext = new Stmt_execsqlContext(this._ctx, this.state);
		this.enterRule(_localctx, 1650, PostgreSQLParser.RULE_stmt_execsql);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11523;
			this.make_execsql_stmt();
			this.state = 11524;
			this.match(PostgreSQLParser.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 stmt_dynexecute(): Stmt_dynexecuteContext {
		let _localctx: Stmt_dynexecuteContext = new Stmt_dynexecuteContext(this._ctx, this.state);
		this.enterRule(_localctx, 1652, PostgreSQLParser.RULE_stmt_dynexecute);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11526;
			this.match(PostgreSQLParser.KW_EXECUTE);
			this.state = 11527;
			this.a_expr();
			this.state = 11535;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1211, this._ctx) ) {
			case 1:
				{
				this.state = 11528;
				this.opt_execute_into();
				this.state = 11529;
				this.opt_execute_using();
				}
				break;

			case 2:
				{
				this.state = 11531;
				this.opt_execute_using();
				this.state = 11532;
				this.opt_execute_into();
				}
				break;

			case 3:
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			}
			this.state = 11537;
			this.match(PostgreSQLParser.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 opt_execute_using(): Opt_execute_usingContext {
		let _localctx: Opt_execute_usingContext = new Opt_execute_usingContext(this._ctx, this.state);
		this.enterRule(_localctx, 1654, PostgreSQLParser.RULE_opt_execute_using);
		try {
			this.state = 11542;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1212, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11540;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 11541;
				this.opt_execute_using_list();
				}
				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 opt_execute_using_list(): Opt_execute_using_listContext {
		let _localctx: Opt_execute_using_listContext = new Opt_execute_using_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1656, PostgreSQLParser.RULE_opt_execute_using_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11544;
			this.a_expr();
			this.state = 11549;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11545;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11546;
				this.a_expr();
				}
				}
				this.state = 11551;
				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 opt_execute_into(): Opt_execute_intoContext {
		let _localctx: Opt_execute_intoContext = new Opt_execute_intoContext(this._ctx, this.state);
		this.enterRule(_localctx, 1658, PostgreSQLParser.RULE_opt_execute_into);
		try {
			this.state = 11558;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1215, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11553;
				this.match(PostgreSQLParser.KW_INTO);
				this.state = 11555;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1214, this._ctx) ) {
				case 1:
					{
					this.state = 11554;
					this.match(PostgreSQLParser.KW_STRICT);
					}
					break;
				}
				this.state = 11557;
				this.into_target();
				}
				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 stmt_open(): Stmt_openContext {
		let _localctx: Stmt_openContext = new Stmt_openContext(this._ctx, this.state);
		this.enterRule(_localctx, 1660, PostgreSQLParser.RULE_stmt_open);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11560;
			this.match(PostgreSQLParser.KW_OPEN);
			this.state = 11578;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1218, this._ctx) ) {
			case 1:
				{
				this.state = 11561;
				this.cursor_variable();
				this.state = 11562;
				this.opt_scroll_option();
				this.state = 11563;
				this.match(PostgreSQLParser.KW_FOR);
				this.state = 11569;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.OPEN_PAREN:
				case PostgreSQLParser.KW_SELECT:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_WITH:
				case PostgreSQLParser.KW_VALUES:
					{
					this.state = 11564;
					this.selectstmt();
					}
					break;
				case PostgreSQLParser.KW_EXECUTE:
					{
					this.state = 11565;
					this.match(PostgreSQLParser.KW_EXECUTE);
					this.state = 11566;
					this.sql_expression();
					this.state = 11567;
					this.opt_open_using();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				{
				this.state = 11571;
				this.colid();
				this.state = 11576;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.OPEN_PAREN) {
					{
					this.state = 11572;
					this.match(PostgreSQLParser.OPEN_PAREN);
					this.state = 11573;
					this.opt_open_bound_list();
					this.state = 11574;
					this.match(PostgreSQLParser.CLOSE_PAREN);
					}
				}

				}
				break;
			}
			this.state = 11580;
			this.match(PostgreSQLParser.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 opt_open_bound_list_item(): Opt_open_bound_list_itemContext {
		let _localctx: Opt_open_bound_list_itemContext = new Opt_open_bound_list_itemContext(this._ctx, this.state);
		this.enterRule(_localctx, 1662, PostgreSQLParser.RULE_opt_open_bound_list_item);
		try {
			this.state = 11587;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1219, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11582;
				this.colid();
				this.state = 11583;
				this.match(PostgreSQLParser.COLON_EQUALS);
				this.state = 11584;
				this.a_expr();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11586;
				this.a_expr();
				}
				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 opt_open_bound_list(): Opt_open_bound_listContext {
		let _localctx: Opt_open_bound_listContext = new Opt_open_bound_listContext(this._ctx, this.state);
		this.enterRule(_localctx, 1664, PostgreSQLParser.RULE_opt_open_bound_list);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11589;
			this.opt_open_bound_list_item();
			this.state = 11594;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11590;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11591;
				this.opt_open_bound_list_item();
				}
				}
				this.state = 11596;
				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 opt_open_using(): Opt_open_usingContext {
		let _localctx: Opt_open_usingContext = new Opt_open_usingContext(this._ctx, this.state);
		this.enterRule(_localctx, 1666, PostgreSQLParser.RULE_opt_open_using);
		try {
			this.state = 11600;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.SEMI:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_USING:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11598;
				this.match(PostgreSQLParser.KW_USING);
				this.state = 11599;
				this.expr_list();
				}
				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 opt_scroll_option(): Opt_scroll_optionContext {
		let _localctx: Opt_scroll_optionContext = new Opt_scroll_optionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1668, PostgreSQLParser.RULE_opt_scroll_option);
		try {
			this.state = 11606;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FOR:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_SCROLL:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11603;
				this.opt_scroll_option_no();
				this.state = 11604;
				this.match(PostgreSQLParser.KW_SCROLL);
				}
				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 opt_scroll_option_no(): Opt_scroll_option_noContext {
		let _localctx: Opt_scroll_option_noContext = new Opt_scroll_option_noContext(this._ctx, this.state);
		this.enterRule(_localctx, 1670, PostgreSQLParser.RULE_opt_scroll_option_no);
		try {
			this.state = 11610;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SCROLL:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_NO:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11609;
				this.match(PostgreSQLParser.KW_NO);
				}
				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 stmt_fetch(): Stmt_fetchContext {
		let _localctx: Stmt_fetchContext = new Stmt_fetchContext(this._ctx, this.state);
		this.enterRule(_localctx, 1672, PostgreSQLParser.RULE_stmt_fetch);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11612;
			this.match(PostgreSQLParser.KW_FETCH);
			this.state = 11614;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1224, this._ctx) ) {
			case 1:
				{
				this.state = 11613;
				_localctx._direction = this.opt_fetch_direction();
				}
				break;
			}
			this.state = 11616;
			this.opt_cursor_from();
			this.state = 11617;
			this.cursor_variable();
			this.state = 11618;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 11619;
			this.into_target();
			this.state = 11620;
			this.match(PostgreSQLParser.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 into_target(): Into_targetContext {
		let _localctx: Into_targetContext = new Into_targetContext(this._ctx, this.state);
		this.enterRule(_localctx, 1674, PostgreSQLParser.RULE_into_target);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11622;
			this.expr_list();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_cursor_from(): Opt_cursor_fromContext {
		let _localctx: Opt_cursor_fromContext = new Opt_cursor_fromContext(this._ctx, this.state);
		this.enterRule(_localctx, 1676, PostgreSQLParser.RULE_opt_cursor_from);
		try {
			this.state = 11627;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.PARAM:
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_FROM:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11625;
				this.match(PostgreSQLParser.KW_FROM);
				}
				break;
			case PostgreSQLParser.KW_IN:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11626;
				this.match(PostgreSQLParser.KW_IN);
				}
				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 opt_fetch_direction(): Opt_fetch_directionContext {
		let _localctx: Opt_fetch_directionContext = new Opt_fetch_directionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1678, PostgreSQLParser.RULE_opt_fetch_direction);
		let _la: number;
		try {
			this.state = 11644;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1227, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11629;
				this.match(PostgreSQLParser.KW_NEXT);
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11630;
				this.match(PostgreSQLParser.KW_PRIOR);
				}
				break;

			case 3:
				this.enterOuterAlt(_localctx, 3);
				{
				this.state = 11631;
				this.match(PostgreSQLParser.KW_FIRST);
				}
				break;

			case 4:
				this.enterOuterAlt(_localctx, 4);
				{
				this.state = 11632;
				this.match(PostgreSQLParser.KW_LAST);
				}
				break;

			case 5:
				this.enterOuterAlt(_localctx, 5);
				{
				this.state = 11633;
				this.match(PostgreSQLParser.KW_ABSOLUTE);
				this.state = 11634;
				this.a_expr();
				}
				break;

			case 6:
				this.enterOuterAlt(_localctx, 6);
				{
				this.state = 11635;
				this.match(PostgreSQLParser.KW_RELATIVE);
				this.state = 11636;
				this.a_expr();
				}
				break;

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

			case 8:
				this.enterOuterAlt(_localctx, 8);
				{
				this.state = 11638;
				this.match(PostgreSQLParser.KW_ALL);
				}
				break;

			case 9:
				this.enterOuterAlt(_localctx, 9);
				{
				this.state = 11639;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_BACKWARD || _la === PostgreSQLParser.KW_FORWARD)) {
				this._errHandler.recoverInline(this);
				} else {
					if (this._input.LA(1) === Token.EOF) {
						this.matchedEOF = true;
					}

					this._errHandler.reportMatch(this);
					this.consume();
				}
				this.state = 11642;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1226, this._ctx) ) {
				case 1:
					{
					this.state = 11640;
					this.a_expr();
					}
					break;

				case 2:
					{
					this.state = 11641;
					this.match(PostgreSQLParser.KW_ALL);
					}
					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 stmt_move(): Stmt_moveContext {
		let _localctx: Stmt_moveContext = new Stmt_moveContext(this._ctx, this.state);
		this.enterRule(_localctx, 1680, PostgreSQLParser.RULE_stmt_move);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11646;
			this.match(PostgreSQLParser.KW_MOVE);
			this.state = 11648;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1228, this._ctx) ) {
			case 1:
				{
				this.state = 11647;
				this.opt_fetch_direction();
				}
				break;
			}
			this.state = 11650;
			this.cursor_variable();
			this.state = 11651;
			this.match(PostgreSQLParser.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 mergestmt(): MergestmtContext {
		let _localctx: MergestmtContext = new MergestmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 1682, PostgreSQLParser.RULE_mergestmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11654;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WITH) {
				{
				this.state = 11653;
				this.with_clause();
				}
			}

			this.state = 11656;
			this.match(PostgreSQLParser.KW_MERGE);
			this.state = 11657;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 11659;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_ONLY) {
				{
				this.state = 11658;
				this.match(PostgreSQLParser.KW_ONLY);
				}
			}

			this.state = 11661;
			this.table_name();
			this.state = 11663;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.STAR) {
				{
				this.state = 11662;
				this.match(PostgreSQLParser.STAR);
				}
			}

			this.state = 11669;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_AS - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 11666;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 11665;
					this.match(PostgreSQLParser.KW_AS);
					}
				}

				this.state = 11668;
				this.colid();
				}
			}

			this.state = 11671;
			this.match(PostgreSQLParser.KW_USING);
			this.state = 11672;
			this.data_source();
			this.state = 11673;
			this.match(PostgreSQLParser.KW_ON);
			this.state = 11674;
			this.join_condition();
			this.state = 11676;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 11675;
				this.merge_when_clause();
				}
				}
				this.state = 11678;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_WHEN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public data_source(): Data_sourceContext {
		let _localctx: Data_sourceContext = new Data_sourceContext(this._ctx, this.state);
		this.enterRule(_localctx, 1684, PostgreSQLParser.RULE_data_source);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11691;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1238, this._ctx) ) {
			case 1:
				{
				this.state = 11681;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_ONLY) {
					{
					this.state = 11680;
					this.match(PostgreSQLParser.KW_ONLY);
					}
				}

				this.state = 11683;
				this.table_name();
				this.state = 11685;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.STAR) {
					{
					this.state = 11684;
					this.match(PostgreSQLParser.STAR);
					}
				}

				}
				break;

			case 2:
				{
				this.state = 11689;
				this._errHandler.sync(this);
				switch ( this.interpreter.adaptivePredict(this._input, 1237, this._ctx) ) {
				case 1:
					{
					this.state = 11687;
					this.select_no_parens();
					}
					break;

				case 2:
					{
					this.state = 11688;
					this.values_clause();
					}
					break;
				}
				}
				break;
			}
			this.state = 11697;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_AS - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & ((1 << (PostgreSQLParser.KW_OVER - 124)) | (1 << (PostgreSQLParser.KW_ABORT - 124)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 124)) | (1 << (PostgreSQLParser.KW_ACCESS - 124)) | (1 << (PostgreSQLParser.KW_ACTION - 124)) | (1 << (PostgreSQLParser.KW_ADD - 124)) | (1 << (PostgreSQLParser.KW_ADMIN - 124)) | (1 << (PostgreSQLParser.KW_AFTER - 124)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 124)) | (1 << (PostgreSQLParser.KW_ALSO - 124)) | (1 << (PostgreSQLParser.KW_ALTER - 124)) | (1 << (PostgreSQLParser.KW_ALWAYS - 124)) | (1 << (PostgreSQLParser.KW_ASSERTION - 124)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 124)) | (1 << (PostgreSQLParser.KW_AT - 124)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 124)) | (1 << (PostgreSQLParser.KW_BACKWARD - 124)) | (1 << (PostgreSQLParser.KW_BEFORE - 124)) | (1 << (PostgreSQLParser.KW_BEGIN - 124)) | (1 << (PostgreSQLParser.KW_BY - 124)) | (1 << (PostgreSQLParser.KW_CACHE - 124)) | (1 << (PostgreSQLParser.KW_CALLED - 124)) | (1 << (PostgreSQLParser.KW_CASCADE - 124)) | (1 << (PostgreSQLParser.KW_CASCADED - 124)) | (1 << (PostgreSQLParser.KW_CATALOG - 124)) | (1 << (PostgreSQLParser.KW_CHAIN - 124)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 124)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 124)))) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & ((1 << (PostgreSQLParser.KW_CLASS - 156)) | (1 << (PostgreSQLParser.KW_CLOSE - 156)) | (1 << (PostgreSQLParser.KW_CLUSTER - 156)) | (1 << (PostgreSQLParser.KW_COMMENT - 156)) | (1 << (PostgreSQLParser.KW_COMMENTS - 156)) | (1 << (PostgreSQLParser.KW_COMMIT - 156)) | (1 << (PostgreSQLParser.KW_COMMITTED - 156)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 156)) | (1 << (PostgreSQLParser.KW_CONNECTION - 156)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 156)) | (1 << (PostgreSQLParser.KW_CONTENT - 156)) | (1 << (PostgreSQLParser.KW_CONTINUE - 156)) | (1 << (PostgreSQLParser.KW_CONVERSION - 156)) | (1 << (PostgreSQLParser.KW_COPY - 156)) | (1 << (PostgreSQLParser.KW_COST - 156)) | (1 << (PostgreSQLParser.KW_CSV - 156)) | (1 << (PostgreSQLParser.KW_CURSOR - 156)) | (1 << (PostgreSQLParser.KW_CYCLE - 156)) | (1 << (PostgreSQLParser.KW_DATA - 156)) | (1 << (PostgreSQLParser.KW_DATABASE - 156)) | (1 << (PostgreSQLParser.KW_DAY - 156)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 156)) | (1 << (PostgreSQLParser.KW_DECLARE - 156)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 156)) | (1 << (PostgreSQLParser.KW_DEFERRED - 156)) | (1 << (PostgreSQLParser.KW_DEFINER - 156)) | (1 << (PostgreSQLParser.KW_DELETE - 156)) | (1 << (PostgreSQLParser.KW_DELIMITER - 156)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 156)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 156)) | (1 << (PostgreSQLParser.KW_DISABLE - 156)) | (1 << (PostgreSQLParser.KW_DISCARD - 156)))) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & ((1 << (PostgreSQLParser.KW_DOCUMENT - 188)) | (1 << (PostgreSQLParser.KW_DOMAIN - 188)) | (1 << (PostgreSQLParser.KW_DOUBLE - 188)) | (1 << (PostgreSQLParser.KW_DROP - 188)) | (1 << (PostgreSQLParser.KW_EACH - 188)) | (1 << (PostgreSQLParser.KW_ENABLE - 188)) | (1 << (PostgreSQLParser.KW_ENCODING - 188)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 188)) | (1 << (PostgreSQLParser.KW_ENUM - 188)) | (1 << (PostgreSQLParser.KW_ESCAPE - 188)) | (1 << (PostgreSQLParser.KW_EVENT - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 188)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 188)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 188)) | (1 << (PostgreSQLParser.KW_EXECUTE - 188)) | (1 << (PostgreSQLParser.KW_EXPLAIN - 188)) | (1 << (PostgreSQLParser.KW_EXTENSION - 188)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 188)) | (1 << (PostgreSQLParser.KW_FAMILY - 188)) | (1 << (PostgreSQLParser.KW_FIRST - 188)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 188)) | (1 << (PostgreSQLParser.KW_FORCE - 188)) | (1 << (PostgreSQLParser.KW_FORWARD - 188)) | (1 << (PostgreSQLParser.KW_FUNCTION - 188)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 188)) | (1 << (PostgreSQLParser.KW_GLOBAL - 188)) | (1 << (PostgreSQLParser.KW_GRANTED - 188)) | (1 << (PostgreSQLParser.KW_HANDLER - 188)) | (1 << (PostgreSQLParser.KW_HEADER - 188)) | (1 << (PostgreSQLParser.KW_HOLD - 188)) | (1 << (PostgreSQLParser.KW_HOUR - 188)) | (1 << (PostgreSQLParser.KW_IDENTITY - 188)))) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & ((1 << (PostgreSQLParser.KW_IF - 220)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 220)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 220)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 220)) | (1 << (PostgreSQLParser.KW_INCLUDING - 220)) | (1 << (PostgreSQLParser.KW_INCREMENT - 220)) | (1 << (PostgreSQLParser.KW_INDEX - 220)) | (1 << (PostgreSQLParser.KW_INDEXES - 220)) | (1 << (PostgreSQLParser.KW_INHERIT - 220)) | (1 << (PostgreSQLParser.KW_INHERITS - 220)) | (1 << (PostgreSQLParser.KW_INLINE - 220)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 220)) | (1 << (PostgreSQLParser.KW_INSERT - 220)) | (1 << (PostgreSQLParser.KW_INSTEAD - 220)) | (1 << (PostgreSQLParser.KW_INVOKER - 220)) | (1 << (PostgreSQLParser.KW_ISOLATION - 220)) | (1 << (PostgreSQLParser.KW_KEY - 220)) | (1 << (PostgreSQLParser.KW_LABEL - 220)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 220)) | (1 << (PostgreSQLParser.KW_LARGE - 220)) | (1 << (PostgreSQLParser.KW_LAST - 220)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 220)) | (1 << (PostgreSQLParser.KW_LEVEL - 220)))) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & ((1 << (PostgreSQLParser.KW_LISTEN - 252)) | (1 << (PostgreSQLParser.KW_LOAD - 252)) | (1 << (PostgreSQLParser.KW_LOCAL - 252)) | (1 << (PostgreSQLParser.KW_LOCATION - 252)) | (1 << (PostgreSQLParser.KW_LOCK - 252)) | (1 << (PostgreSQLParser.KW_MAPPING - 252)) | (1 << (PostgreSQLParser.KW_MATCH - 252)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 252)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 252)) | (1 << (PostgreSQLParser.KW_MINUTE - 252)) | (1 << (PostgreSQLParser.KW_MINVALUE - 252)) | (1 << (PostgreSQLParser.KW_MODE - 252)) | (1 << (PostgreSQLParser.KW_MONTH - 252)) | (1 << (PostgreSQLParser.KW_MOVE - 252)) | (1 << (PostgreSQLParser.KW_NAME - 252)) | (1 << (PostgreSQLParser.KW_NAMES - 252)) | (1 << (PostgreSQLParser.KW_NEXT - 252)) | (1 << (PostgreSQLParser.KW_NO - 252)) | (1 << (PostgreSQLParser.KW_NOTHING - 252)) | (1 << (PostgreSQLParser.KW_NOTIFY - 252)) | (1 << (PostgreSQLParser.KW_NOWAIT - 252)) | (1 << (PostgreSQLParser.KW_NULLS - 252)) | (1 << (PostgreSQLParser.KW_OBJECT - 252)) | (1 << (PostgreSQLParser.KW_OF - 252)) | (1 << (PostgreSQLParser.KW_OFF - 252)) | (1 << (PostgreSQLParser.KW_OIDS - 252)) | (1 << (PostgreSQLParser.KW_OPERATOR - 252)) | (1 << (PostgreSQLParser.KW_OPTION - 252)) | (1 << (PostgreSQLParser.KW_OPTIONS - 252)) | (1 << (PostgreSQLParser.KW_OWNED - 252)) | (1 << (PostgreSQLParser.KW_OWNER - 252)) | (1 << (PostgreSQLParser.KW_PARSER - 252)))) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & ((1 << (PostgreSQLParser.KW_PARTIAL - 284)) | (1 << (PostgreSQLParser.KW_PARTITION - 284)) | (1 << (PostgreSQLParser.KW_PASSING - 284)) | (1 << (PostgreSQLParser.KW_PASSWORD - 284)) | (1 << (PostgreSQLParser.KW_PLANS - 284)) | (1 << (PostgreSQLParser.KW_PRECEDING - 284)) | (1 << (PostgreSQLParser.KW_PREPARE - 284)) | (1 << (PostgreSQLParser.KW_PREPARED - 284)) | (1 << (PostgreSQLParser.KW_PRESERVE - 284)) | (1 << (PostgreSQLParser.KW_PRIOR - 284)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 284)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 284)) | (1 << (PostgreSQLParser.KW_PROGRAM - 284)) | (1 << (PostgreSQLParser.KW_QUOTE - 284)) | (1 << (PostgreSQLParser.KW_RANGE - 284)) | (1 << (PostgreSQLParser.KW_READ - 284)) | (1 << (PostgreSQLParser.KW_REASSIGN - 284)) | (1 << (PostgreSQLParser.KW_RECHECK - 284)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 284)) | (1 << (PostgreSQLParser.KW_REF - 284)) | (1 << (PostgreSQLParser.KW_REFRESH - 284)) | (1 << (PostgreSQLParser.KW_REINDEX - 284)) | (1 << (PostgreSQLParser.KW_RELATIVE - 284)) | (1 << (PostgreSQLParser.KW_RELEASE - 284)) | (1 << (PostgreSQLParser.KW_RENAME - 284)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 284)) | (1 << (PostgreSQLParser.KW_REPLACE - 284)) | (1 << (PostgreSQLParser.KW_REPLICA - 284)) | (1 << (PostgreSQLParser.KW_RESET - 284)) | (1 << (PostgreSQLParser.KW_RESTART - 284)) | (1 << (PostgreSQLParser.KW_RESTRICT - 284)))) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & ((1 << (PostgreSQLParser.KW_RETURNS - 316)) | (1 << (PostgreSQLParser.KW_REVOKE - 316)) | (1 << (PostgreSQLParser.KW_ROLE - 316)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 316)) | (1 << (PostgreSQLParser.KW_ROWS - 316)) | (1 << (PostgreSQLParser.KW_RULE - 316)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 316)) | (1 << (PostgreSQLParser.KW_SCHEMA - 316)) | (1 << (PostgreSQLParser.KW_SCROLL - 316)) | (1 << (PostgreSQLParser.KW_SEARCH - 316)) | (1 << (PostgreSQLParser.KW_SECOND - 316)) | (1 << (PostgreSQLParser.KW_SECURITY - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 316)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 316)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 316)) | (1 << (PostgreSQLParser.KW_SERVER - 316)) | (1 << (PostgreSQLParser.KW_SESSION - 316)) | (1 << (PostgreSQLParser.KW_SET - 316)) | (1 << (PostgreSQLParser.KW_SHARE - 316)) | (1 << (PostgreSQLParser.KW_SHOW - 316)) | (1 << (PostgreSQLParser.KW_SIMPLE - 316)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 316)) | (1 << (PostgreSQLParser.KW_STABLE - 316)) | (1 << (PostgreSQLParser.KW_STANDALONE - 316)) | (1 << (PostgreSQLParser.KW_START - 316)) | (1 << (PostgreSQLParser.KW_STATEMENT - 316)) | (1 << (PostgreSQLParser.KW_STATISTICS - 316)) | (1 << (PostgreSQLParser.KW_STDIN - 316)) | (1 << (PostgreSQLParser.KW_STDOUT - 316)) | (1 << (PostgreSQLParser.KW_STORAGE - 316)) | (1 << (PostgreSQLParser.KW_STRICT - 316)) | (1 << (PostgreSQLParser.KW_STRIP - 316)))) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & ((1 << (PostgreSQLParser.KW_SYSID - 348)) | (1 << (PostgreSQLParser.KW_SYSTEM - 348)) | (1 << (PostgreSQLParser.KW_TABLES - 348)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 348)) | (1 << (PostgreSQLParser.KW_TEMP - 348)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 348)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 348)) | (1 << (PostgreSQLParser.KW_TEXT - 348)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 348)) | (1 << (PostgreSQLParser.KW_TRIGGER - 348)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 348)) | (1 << (PostgreSQLParser.KW_TRUSTED - 348)) | (1 << (PostgreSQLParser.KW_TYPE - 348)) | (1 << (PostgreSQLParser.KW_TYPES - 348)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 348)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 348)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 348)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 348)) | (1 << (PostgreSQLParser.KW_UNLISTEN - 348)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 348)) | (1 << (PostgreSQLParser.KW_UNTIL - 348)) | (1 << (PostgreSQLParser.KW_UPDATE - 348)) | (1 << (PostgreSQLParser.KW_VACUUM - 348)) | (1 << (PostgreSQLParser.KW_VALID - 348)) | (1 << (PostgreSQLParser.KW_VALIDATE - 348)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 348)) | (1 << (PostgreSQLParser.KW_VARYING - 348)) | (1 << (PostgreSQLParser.KW_VERSION - 348)) | (1 << (PostgreSQLParser.KW_VIEW - 348)) | (1 << (PostgreSQLParser.KW_VOLATILE - 348)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 348)) | (1 << (PostgreSQLParser.KW_WITHOUT - 348)))) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & ((1 << (PostgreSQLParser.KW_WORK - 380)) | (1 << (PostgreSQLParser.KW_WRAPPER - 380)) | (1 << (PostgreSQLParser.KW_WRITE - 380)) | (1 << (PostgreSQLParser.KW_XML - 380)) | (1 << (PostgreSQLParser.KW_YEAR - 380)) | (1 << (PostgreSQLParser.KW_YES - 380)) | (1 << (PostgreSQLParser.KW_ZONE - 380)) | (1 << (PostgreSQLParser.KW_BETWEEN - 380)) | (1 << (PostgreSQLParser.KW_BIGINT - 380)) | (1 << (PostgreSQLParser.KW_BIT - 380)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 380)) | (1 << (PostgreSQLParser.KW_CHAR - 380)) | (1 << (PostgreSQLParser.KW_CHARACTER - 380)) | (1 << (PostgreSQLParser.KW_COALESCE - 380)) | (1 << (PostgreSQLParser.KW_DEC - 380)) | (1 << (PostgreSQLParser.KW_DECIMAL - 380)) | (1 << (PostgreSQLParser.KW_EXISTS - 380)) | (1 << (PostgreSQLParser.KW_EXTRACT - 380)) | (1 << (PostgreSQLParser.KW_FLOAT - 380)) | (1 << (PostgreSQLParser.KW_GREATEST - 380)) | (1 << (PostgreSQLParser.KW_INOUT - 380)) | (1 << (PostgreSQLParser.KW_INT - 380)) | (1 << (PostgreSQLParser.KW_INTEGER - 380)) | (1 << (PostgreSQLParser.KW_INTERVAL - 380)) | (1 << (PostgreSQLParser.KW_LEAST - 380)) | (1 << (PostgreSQLParser.KW_NATIONAL - 380)) | (1 << (PostgreSQLParser.KW_NCHAR - 380)) | (1 << (PostgreSQLParser.KW_NONE - 380)) | (1 << (PostgreSQLParser.KW_NULLIF - 380)) | (1 << (PostgreSQLParser.KW_NUMERIC - 380)) | (1 << (PostgreSQLParser.KW_OVERLAY - 380)) | (1 << (PostgreSQLParser.KW_POSITION - 380)))) !== 0) || ((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & ((1 << (PostgreSQLParser.KW_PRECISION - 412)) | (1 << (PostgreSQLParser.KW_REAL - 412)) | (1 << (PostgreSQLParser.KW_ROW - 412)) | (1 << (PostgreSQLParser.KW_SETOF - 412)) | (1 << (PostgreSQLParser.KW_SMALLINT - 412)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 412)) | (1 << (PostgreSQLParser.KW_TIME - 412)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 412)) | (1 << (PostgreSQLParser.KW_TREAT - 412)) | (1 << (PostgreSQLParser.KW_TRIM - 412)) | (1 << (PostgreSQLParser.KW_VALUES - 412)) | (1 << (PostgreSQLParser.KW_VARCHAR - 412)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 412)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 412)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 412)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 412)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 412)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 412)) | (1 << (PostgreSQLParser.KW_XMLPI - 412)) | (1 << (PostgreSQLParser.KW_XMLROOT - 412)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 412)) | (1 << (PostgreSQLParser.KW_CALL - 412)) | (1 << (PostgreSQLParser.KW_CURRENT - 412)) | (1 << (PostgreSQLParser.KW_ATTACH - 412)) | (1 << (PostgreSQLParser.KW_DETACH - 412)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 412)) | (1 << (PostgreSQLParser.KW_GENERATED - 412)) | (1 << (PostgreSQLParser.KW_LOGGED - 412)) | (1 << (PostgreSQLParser.KW_STORED - 412)) | (1 << (PostgreSQLParser.KW_INCLUDE - 412)) | (1 << (PostgreSQLParser.KW_ROUTINE - 412)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 412)))) !== 0) || ((((_la - 444)) & ~0x1F) === 0 && ((1 << (_la - 444)) & ((1 << (PostgreSQLParser.KW_IMPORT - 444)) | (1 << (PostgreSQLParser.KW_POLICY - 444)) | (1 << (PostgreSQLParser.KW_METHOD - 444)) | (1 << (PostgreSQLParser.KW_REFERENCING - 444)) | (1 << (PostgreSQLParser.KW_NEW - 444)) | (1 << (PostgreSQLParser.KW_OLD - 444)) | (1 << (PostgreSQLParser.KW_VALUE - 444)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 444)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 444)) | (1 << (PostgreSQLParser.KW_OUT - 444)) | (1 << (PostgreSQLParser.KW_ROUTINES - 444)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 444)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 444)) | (1 << (PostgreSQLParser.KW_INPUT - 444)) | (1 << (PostgreSQLParser.KW_SUPPORT - 444)) | (1 << (PostgreSQLParser.KW_PARALLEL - 444)) | (1 << (PostgreSQLParser.KW_SQL - 444)) | (1 << (PostgreSQLParser.KW_DEPENDS - 444)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 444)) | (1 << (PostgreSQLParser.KW_CONFLICT - 444)) | (1 << (PostgreSQLParser.KW_SKIP - 444)) | (1 << (PostgreSQLParser.KW_LOCKED - 444)) | (1 << (PostgreSQLParser.KW_TIES - 444)) | (1 << (PostgreSQLParser.KW_ROLLUP - 444)) | (1 << (PostgreSQLParser.KW_CUBE - 444)) | (1 << (PostgreSQLParser.KW_GROUPING - 444)) | (1 << (PostgreSQLParser.KW_SETS - 444)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 444)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 444)) | (1 << (PostgreSQLParser.KW_COLUMNS - 444)))) !== 0) || ((((_la - 476)) & ~0x1F) === 0 && ((1 << (_la - 476)) & ((1 << (PostgreSQLParser.KW_XMLNAMESPACES - 476)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 476)) | (1 << (PostgreSQLParser.KW_WITHIN - 476)) | (1 << (PostgreSQLParser.KW_FILTER - 476)) | (1 << (PostgreSQLParser.KW_GROUPS - 476)) | (1 << (PostgreSQLParser.KW_OTHERS - 476)) | (1 << (PostgreSQLParser.KW_NFC - 476)) | (1 << (PostgreSQLParser.KW_NFD - 476)) | (1 << (PostgreSQLParser.KW_NFKC - 476)) | (1 << (PostgreSQLParser.KW_NFKD - 476)) | (1 << (PostgreSQLParser.KW_UESCAPE - 476)) | (1 << (PostgreSQLParser.KW_VIEWS - 476)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 476)) | (1 << (PostgreSQLParser.KW_DUMP - 476)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 476)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 476)) | (1 << (PostgreSQLParser.KW_ERROR - 476)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 476)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 476)) | (1 << (PostgreSQLParser.KW_ALIAS - 476)) | (1 << (PostgreSQLParser.KW_CONSTANT - 476)) | (1 << (PostgreSQLParser.KW_PERFORM - 476)) | (1 << (PostgreSQLParser.KW_GET - 476)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 476)) | (1 << (PostgreSQLParser.KW_STACKED - 476)) | (1 << (PostgreSQLParser.KW_ELSIF - 476)) | (1 << (PostgreSQLParser.KW_REVERSE - 476)) | (1 << (PostgreSQLParser.KW_SLICE - 476)) | (1 << (PostgreSQLParser.KW_EXIT - 476)))) !== 0) || ((((_la - 508)) & ~0x1F) === 0 && ((1 << (_la - 508)) & ((1 << (PostgreSQLParser.KW_RETURN - 508)) | (1 << (PostgreSQLParser.KW_QUERY - 508)) | (1 << (PostgreSQLParser.KW_RAISE - 508)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 508)) | (1 << (PostgreSQLParser.KW_DEBUG - 508)) | (1 << (PostgreSQLParser.KW_LOG - 508)) | (1 << (PostgreSQLParser.KW_INFO - 508)) | (1 << (PostgreSQLParser.KW_NOTICE - 508)) | (1 << (PostgreSQLParser.KW_WARNING - 508)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 508)) | (1 << (PostgreSQLParser.KW_ASSERT - 508)) | (1 << (PostgreSQLParser.KW_OPEN - 508)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 11694;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AS) {
					{
					this.state = 11693;
					this.match(PostgreSQLParser.KW_AS);
					}
				}

				this.state = 11696;
				this.colid();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public join_condition(): Join_conditionContext {
		let _localctx: Join_conditionContext = new Join_conditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1686, PostgreSQLParser.RULE_join_condition);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11699;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public merge_when_clause(): Merge_when_clauseContext {
		let _localctx: Merge_when_clauseContext = new Merge_when_clauseContext(this._ctx, this.state);
		this.enterRule(_localctx, 1688, PostgreSQLParser.RULE_merge_when_clause);
		let _la: number;
		try {
			this.state = 11727;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1245, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11701;
				this.match(PostgreSQLParser.KW_WHEN);
				this.state = 11702;
				this.match(PostgreSQLParser.KW_MATCHED);
				this.state = 11705;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AND) {
					{
					this.state = 11703;
					this.match(PostgreSQLParser.KW_AND);
					this.state = 11704;
					this.a_expr();
					}
				}

				this.state = 11707;
				this.match(PostgreSQLParser.KW_THEN);
				this.state = 11712;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_UPDATE:
					{
					this.state = 11708;
					this.merge_update();
					}
					break;
				case PostgreSQLParser.KW_DELETE:
					{
					this.state = 11709;
					this.match(PostgreSQLParser.KW_DELETE);
					}
					break;
				case PostgreSQLParser.KW_DO:
					{
					this.state = 11710;
					this.match(PostgreSQLParser.KW_DO);
					this.state = 11711;
					this.match(PostgreSQLParser.KW_NOTHING);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11714;
				this.match(PostgreSQLParser.KW_WHEN);
				this.state = 11715;
				this.match(PostgreSQLParser.KW_NOT);
				this.state = 11716;
				this.match(PostgreSQLParser.KW_MATCHED);
				this.state = 11719;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la === PostgreSQLParser.KW_AND) {
					{
					this.state = 11717;
					this.match(PostgreSQLParser.KW_AND);
					this.state = 11718;
					this.a_expr();
					}
				}

				this.state = 11721;
				this.match(PostgreSQLParser.KW_THEN);
				this.state = 11725;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_INSERT:
					{
					this.state = 11722;
					this.merge_insert();
					}
					break;
				case PostgreSQLParser.KW_DO:
					{
					this.state = 11723;
					this.match(PostgreSQLParser.KW_DO);
					this.state = 11724;
					this.match(PostgreSQLParser.KW_NOTHING);
					}
					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 merge_insert(): Merge_insertContext {
		let _localctx: Merge_insertContext = new Merge_insertContext(this._ctx, this.state);
		this.enterRule(_localctx, 1690, PostgreSQLParser.RULE_merge_insert);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11729;
			this.match(PostgreSQLParser.KW_INSERT);
			this.state = 11734;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.OPEN_PAREN) {
				{
				this.state = 11730;
				this.match(PostgreSQLParser.OPEN_PAREN);
				this.state = 11731;
				this.columnlist();
				this.state = 11732;
				this.match(PostgreSQLParser.CLOSE_PAREN);
				}
			}

			this.state = 11739;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_OVERRIDING) {
				{
				this.state = 11736;
				this.match(PostgreSQLParser.KW_OVERRIDING);
				this.state = 11737;
				_la = this._input.LA(1);
				if (!(_la === PostgreSQLParser.KW_USER || _la === PostgreSQLParser.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 = 11738;
				this.match(PostgreSQLParser.KW_VALUE);
				}
			}

			this.state = 11741;
			this.default_values_or_values();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public merge_update(): Merge_updateContext {
		let _localctx: Merge_updateContext = new Merge_updateContext(this._ctx, this.state);
		this.enterRule(_localctx, 1692, PostgreSQLParser.RULE_merge_update);
		try {
			let _alt: number;
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11743;
			this.match(PostgreSQLParser.KW_UPDATE);
			this.state = 11744;
			this.match(PostgreSQLParser.KW_SET);
			this.state = 11757;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					this.state = 11757;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case PostgreSQLParser.KW_AND:
					case PostgreSQLParser.KW_ARRAY:
					case PostgreSQLParser.KW_COLLATE:
					case PostgreSQLParser.KW_COLUMN:
					case PostgreSQLParser.KW_CONSTRAINT:
					case PostgreSQLParser.KW_DEFAULT:
					case PostgreSQLParser.KW_DO:
					case PostgreSQLParser.KW_FETCH:
					case PostgreSQLParser.KW_TABLE:
					case PostgreSQLParser.KW_IS:
					case PostgreSQLParser.KW_OUTER:
					case PostgreSQLParser.KW_OVER:
					case PostgreSQLParser.KW_ABORT:
					case PostgreSQLParser.KW_ABSOLUTE:
					case PostgreSQLParser.KW_ACCESS:
					case PostgreSQLParser.KW_ACTION:
					case PostgreSQLParser.KW_ADD:
					case PostgreSQLParser.KW_ADMIN:
					case PostgreSQLParser.KW_AFTER:
					case PostgreSQLParser.KW_AGGREGATE:
					case PostgreSQLParser.KW_ALSO:
					case PostgreSQLParser.KW_ALTER:
					case PostgreSQLParser.KW_ALWAYS:
					case PostgreSQLParser.KW_ASSERTION:
					case PostgreSQLParser.KW_ASSIGNMENT:
					case PostgreSQLParser.KW_AT:
					case PostgreSQLParser.KW_ATTRIBUTE:
					case PostgreSQLParser.KW_BACKWARD:
					case PostgreSQLParser.KW_BEFORE:
					case PostgreSQLParser.KW_BEGIN:
					case PostgreSQLParser.KW_BY:
					case PostgreSQLParser.KW_CACHE:
					case PostgreSQLParser.KW_CALLED:
					case PostgreSQLParser.KW_CASCADE:
					case PostgreSQLParser.KW_CASCADED:
					case PostgreSQLParser.KW_CATALOG:
					case PostgreSQLParser.KW_CHAIN:
					case PostgreSQLParser.KW_CHARACTERISTICS:
					case PostgreSQLParser.KW_CHECKPOINT:
					case PostgreSQLParser.KW_CLASS:
					case PostgreSQLParser.KW_CLOSE:
					case PostgreSQLParser.KW_CLUSTER:
					case PostgreSQLParser.KW_COMMENT:
					case PostgreSQLParser.KW_COMMENTS:
					case PostgreSQLParser.KW_COMMIT:
					case PostgreSQLParser.KW_COMMITTED:
					case PostgreSQLParser.KW_CONFIGURATION:
					case PostgreSQLParser.KW_CONNECTION:
					case PostgreSQLParser.KW_CONSTRAINTS:
					case PostgreSQLParser.KW_CONTENT:
					case PostgreSQLParser.KW_CONTINUE:
					case PostgreSQLParser.KW_CONVERSION:
					case PostgreSQLParser.KW_COPY:
					case PostgreSQLParser.KW_COST:
					case PostgreSQLParser.KW_CSV:
					case PostgreSQLParser.KW_CURSOR:
					case PostgreSQLParser.KW_CYCLE:
					case PostgreSQLParser.KW_DATA:
					case PostgreSQLParser.KW_DATABASE:
					case PostgreSQLParser.KW_DAY:
					case PostgreSQLParser.KW_DEALLOCATE:
					case PostgreSQLParser.KW_DECLARE:
					case PostgreSQLParser.KW_DEFAULTS:
					case PostgreSQLParser.KW_DEFERRED:
					case PostgreSQLParser.KW_DEFINER:
					case PostgreSQLParser.KW_DELETE:
					case PostgreSQLParser.KW_DELIMITER:
					case PostgreSQLParser.KW_DELIMITERS:
					case PostgreSQLParser.KW_DICTIONARY:
					case PostgreSQLParser.KW_DISABLE:
					case PostgreSQLParser.KW_DISCARD:
					case PostgreSQLParser.KW_DOCUMENT:
					case PostgreSQLParser.KW_DOMAIN:
					case PostgreSQLParser.KW_DOUBLE:
					case PostgreSQLParser.KW_DROP:
					case PostgreSQLParser.KW_EACH:
					case PostgreSQLParser.KW_ENABLE:
					case PostgreSQLParser.KW_ENCODING:
					case PostgreSQLParser.KW_ENCRYPTED:
					case PostgreSQLParser.KW_ENUM:
					case PostgreSQLParser.KW_ESCAPE:
					case PostgreSQLParser.KW_EVENT:
					case PostgreSQLParser.KW_EXCLUDE:
					case PostgreSQLParser.KW_EXCLUDING:
					case PostgreSQLParser.KW_EXCLUSIVE:
					case PostgreSQLParser.KW_EXECUTE:
					case PostgreSQLParser.KW_EXPLAIN:
					case PostgreSQLParser.KW_EXTENSION:
					case PostgreSQLParser.KW_EXTERNAL:
					case PostgreSQLParser.KW_FAMILY:
					case PostgreSQLParser.KW_FIRST:
					case PostgreSQLParser.KW_FOLLOWING:
					case PostgreSQLParser.KW_FORCE:
					case PostgreSQLParser.KW_FORWARD:
					case PostgreSQLParser.KW_FUNCTION:
					case PostgreSQLParser.KW_FUNCTIONS:
					case PostgreSQLParser.KW_GLOBAL:
					case PostgreSQLParser.KW_GRANTED:
					case PostgreSQLParser.KW_HANDLER:
					case PostgreSQLParser.KW_HEADER:
					case PostgreSQLParser.KW_HOLD:
					case PostgreSQLParser.KW_HOUR:
					case PostgreSQLParser.KW_IDENTITY:
					case PostgreSQLParser.KW_IF:
					case PostgreSQLParser.KW_IMMEDIATE:
					case PostgreSQLParser.KW_IMMUTABLE:
					case PostgreSQLParser.KW_IMPLICIT:
					case PostgreSQLParser.KW_INCLUDING:
					case PostgreSQLParser.KW_INCREMENT:
					case PostgreSQLParser.KW_INDEX:
					case PostgreSQLParser.KW_INDEXES:
					case PostgreSQLParser.KW_INHERIT:
					case PostgreSQLParser.KW_INHERITS:
					case PostgreSQLParser.KW_INLINE:
					case PostgreSQLParser.KW_INSENSITIVE:
					case PostgreSQLParser.KW_INSERT:
					case PostgreSQLParser.KW_INSTEAD:
					case PostgreSQLParser.KW_INVOKER:
					case PostgreSQLParser.KW_ISOLATION:
					case PostgreSQLParser.KW_KEY:
					case PostgreSQLParser.KW_LABEL:
					case PostgreSQLParser.KW_LANGUAGE:
					case PostgreSQLParser.KW_LARGE:
					case PostgreSQLParser.KW_LAST:
					case PostgreSQLParser.KW_LEAKPROOF:
					case PostgreSQLParser.KW_LEVEL:
					case PostgreSQLParser.KW_LISTEN:
					case PostgreSQLParser.KW_LOAD:
					case PostgreSQLParser.KW_LOCAL:
					case PostgreSQLParser.KW_LOCATION:
					case PostgreSQLParser.KW_LOCK:
					case PostgreSQLParser.KW_MAPPING:
					case PostgreSQLParser.KW_MATCH:
					case PostgreSQLParser.KW_MATERIALIZED:
					case PostgreSQLParser.KW_MAXVALUE:
					case PostgreSQLParser.KW_MINUTE:
					case PostgreSQLParser.KW_MINVALUE:
					case PostgreSQLParser.KW_MODE:
					case PostgreSQLParser.KW_MONTH:
					case PostgreSQLParser.KW_MOVE:
					case PostgreSQLParser.KW_NAME:
					case PostgreSQLParser.KW_NAMES:
					case PostgreSQLParser.KW_NEXT:
					case PostgreSQLParser.KW_NO:
					case PostgreSQLParser.KW_NOTHING:
					case PostgreSQLParser.KW_NOTIFY:
					case PostgreSQLParser.KW_NOWAIT:
					case PostgreSQLParser.KW_NULLS:
					case PostgreSQLParser.KW_OBJECT:
					case PostgreSQLParser.KW_OF:
					case PostgreSQLParser.KW_OFF:
					case PostgreSQLParser.KW_OIDS:
					case PostgreSQLParser.KW_OPERATOR:
					case PostgreSQLParser.KW_OPTION:
					case PostgreSQLParser.KW_OPTIONS:
					case PostgreSQLParser.KW_OWNED:
					case PostgreSQLParser.KW_OWNER:
					case PostgreSQLParser.KW_PARSER:
					case PostgreSQLParser.KW_PARTIAL:
					case PostgreSQLParser.KW_PARTITION:
					case PostgreSQLParser.KW_PASSING:
					case PostgreSQLParser.KW_PASSWORD:
					case PostgreSQLParser.KW_PLANS:
					case PostgreSQLParser.KW_PRECEDING:
					case PostgreSQLParser.KW_PREPARE:
					case PostgreSQLParser.KW_PREPARED:
					case PostgreSQLParser.KW_PRESERVE:
					case PostgreSQLParser.KW_PRIOR:
					case PostgreSQLParser.KW_PRIVILEGES:
					case PostgreSQLParser.KW_PROCEDURAL:
					case PostgreSQLParser.KW_PROCEDURE:
					case PostgreSQLParser.KW_PROGRAM:
					case PostgreSQLParser.KW_QUOTE:
					case PostgreSQLParser.KW_RANGE:
					case PostgreSQLParser.KW_READ:
					case PostgreSQLParser.KW_REASSIGN:
					case PostgreSQLParser.KW_RECHECK:
					case PostgreSQLParser.KW_RECURSIVE:
					case PostgreSQLParser.KW_REF:
					case PostgreSQLParser.KW_REFRESH:
					case PostgreSQLParser.KW_REINDEX:
					case PostgreSQLParser.KW_RELATIVE:
					case PostgreSQLParser.KW_RELEASE:
					case PostgreSQLParser.KW_RENAME:
					case PostgreSQLParser.KW_REPEATABLE:
					case PostgreSQLParser.KW_REPLACE:
					case PostgreSQLParser.KW_REPLICA:
					case PostgreSQLParser.KW_RESET:
					case PostgreSQLParser.KW_RESTART:
					case PostgreSQLParser.KW_RESTRICT:
					case PostgreSQLParser.KW_RETURNS:
					case PostgreSQLParser.KW_REVOKE:
					case PostgreSQLParser.KW_ROLE:
					case PostgreSQLParser.KW_ROLLBACK:
					case PostgreSQLParser.KW_ROWS:
					case PostgreSQLParser.KW_RULE:
					case PostgreSQLParser.KW_SAVEPOINT:
					case PostgreSQLParser.KW_SCHEMA:
					case PostgreSQLParser.KW_SCROLL:
					case PostgreSQLParser.KW_SEARCH:
					case PostgreSQLParser.KW_SECOND:
					case PostgreSQLParser.KW_SECURITY:
					case PostgreSQLParser.KW_SEQUENCE:
					case PostgreSQLParser.KW_SEQUENCES:
					case PostgreSQLParser.KW_SERIALIZABLE:
					case PostgreSQLParser.KW_SERVER:
					case PostgreSQLParser.KW_SESSION:
					case PostgreSQLParser.KW_SET:
					case PostgreSQLParser.KW_SHARE:
					case PostgreSQLParser.KW_SHOW:
					case PostgreSQLParser.KW_SIMPLE:
					case PostgreSQLParser.KW_SNAPSHOT:
					case PostgreSQLParser.KW_STABLE:
					case PostgreSQLParser.KW_STANDALONE:
					case PostgreSQLParser.KW_START:
					case PostgreSQLParser.KW_STATEMENT:
					case PostgreSQLParser.KW_STATISTICS:
					case PostgreSQLParser.KW_STDIN:
					case PostgreSQLParser.KW_STDOUT:
					case PostgreSQLParser.KW_STORAGE:
					case PostgreSQLParser.KW_STRICT:
					case PostgreSQLParser.KW_STRIP:
					case PostgreSQLParser.KW_SYSID:
					case PostgreSQLParser.KW_SYSTEM:
					case PostgreSQLParser.KW_TABLES:
					case PostgreSQLParser.KW_TABLESPACE:
					case PostgreSQLParser.KW_TEMP:
					case PostgreSQLParser.KW_TEMPLATE:
					case PostgreSQLParser.KW_TEMPORARY:
					case PostgreSQLParser.KW_TEXT:
					case PostgreSQLParser.KW_TRANSACTION:
					case PostgreSQLParser.KW_TRIGGER:
					case PostgreSQLParser.KW_TRUNCATE:
					case PostgreSQLParser.KW_TRUSTED:
					case PostgreSQLParser.KW_TYPE:
					case PostgreSQLParser.KW_TYPES:
					case PostgreSQLParser.KW_UNBOUNDED:
					case PostgreSQLParser.KW_UNCOMMITTED:
					case PostgreSQLParser.KW_UNENCRYPTED:
					case PostgreSQLParser.KW_UNKNOWN:
					case PostgreSQLParser.KW_UNLISTEN:
					case PostgreSQLParser.KW_UNLOGGED:
					case PostgreSQLParser.KW_UNTIL:
					case PostgreSQLParser.KW_UPDATE:
					case PostgreSQLParser.KW_VACUUM:
					case PostgreSQLParser.KW_VALID:
					case PostgreSQLParser.KW_VALIDATE:
					case PostgreSQLParser.KW_VALIDATOR:
					case PostgreSQLParser.KW_VARYING:
					case PostgreSQLParser.KW_VERSION:
					case PostgreSQLParser.KW_VIEW:
					case PostgreSQLParser.KW_VOLATILE:
					case PostgreSQLParser.KW_WHITESPACE:
					case PostgreSQLParser.KW_WITHOUT:
					case PostgreSQLParser.KW_WORK:
					case PostgreSQLParser.KW_WRAPPER:
					case PostgreSQLParser.KW_WRITE:
					case PostgreSQLParser.KW_XML:
					case PostgreSQLParser.KW_YEAR:
					case PostgreSQLParser.KW_YES:
					case PostgreSQLParser.KW_ZONE:
					case PostgreSQLParser.KW_BETWEEN:
					case PostgreSQLParser.KW_BIGINT:
					case PostgreSQLParser.KW_BIT:
					case PostgreSQLParser.KW_BOOLEAN:
					case PostgreSQLParser.KW_CHAR:
					case PostgreSQLParser.KW_CHARACTER:
					case PostgreSQLParser.KW_COALESCE:
					case PostgreSQLParser.KW_DEC:
					case PostgreSQLParser.KW_DECIMAL:
					case PostgreSQLParser.KW_EXISTS:
					case PostgreSQLParser.KW_EXTRACT:
					case PostgreSQLParser.KW_FLOAT:
					case PostgreSQLParser.KW_GREATEST:
					case PostgreSQLParser.KW_INOUT:
					case PostgreSQLParser.KW_INT:
					case PostgreSQLParser.KW_INTEGER:
					case PostgreSQLParser.KW_INTERVAL:
					case PostgreSQLParser.KW_LEAST:
					case PostgreSQLParser.KW_NATIONAL:
					case PostgreSQLParser.KW_NCHAR:
					case PostgreSQLParser.KW_NONE:
					case PostgreSQLParser.KW_NULLIF:
					case PostgreSQLParser.KW_NUMERIC:
					case PostgreSQLParser.KW_OVERLAY:
					case PostgreSQLParser.KW_POSITION:
					case PostgreSQLParser.KW_PRECISION:
					case PostgreSQLParser.KW_REAL:
					case PostgreSQLParser.KW_ROW:
					case PostgreSQLParser.KW_SETOF:
					case PostgreSQLParser.KW_SMALLINT:
					case PostgreSQLParser.KW_SUBSTRING:
					case PostgreSQLParser.KW_TIME:
					case PostgreSQLParser.KW_TIMESTAMP:
					case PostgreSQLParser.KW_TREAT:
					case PostgreSQLParser.KW_TRIM:
					case PostgreSQLParser.KW_VALUES:
					case PostgreSQLParser.KW_VARCHAR:
					case PostgreSQLParser.KW_XMLATTRIBUTES:
					case PostgreSQLParser.KW_XMLCONCAT:
					case PostgreSQLParser.KW_XMLELEMENT:
					case PostgreSQLParser.KW_XMLEXISTS:
					case PostgreSQLParser.KW_XMLFOREST:
					case PostgreSQLParser.KW_XMLPARSE:
					case PostgreSQLParser.KW_XMLPI:
					case PostgreSQLParser.KW_XMLROOT:
					case PostgreSQLParser.KW_XMLSERIALIZE:
					case PostgreSQLParser.KW_CALL:
					case PostgreSQLParser.KW_CURRENT:
					case PostgreSQLParser.KW_ATTACH:
					case PostgreSQLParser.KW_DETACH:
					case PostgreSQLParser.KW_EXPRESSION:
					case PostgreSQLParser.KW_GENERATED:
					case PostgreSQLParser.KW_LOGGED:
					case PostgreSQLParser.KW_STORED:
					case PostgreSQLParser.KW_INCLUDE:
					case PostgreSQLParser.KW_ROUTINE:
					case PostgreSQLParser.KW_TRANSFORM:
					case PostgreSQLParser.KW_IMPORT:
					case PostgreSQLParser.KW_POLICY:
					case PostgreSQLParser.KW_METHOD:
					case PostgreSQLParser.KW_REFERENCING:
					case PostgreSQLParser.KW_NEW:
					case PostgreSQLParser.KW_OLD:
					case PostgreSQLParser.KW_VALUE:
					case PostgreSQLParser.KW_SUBSCRIPTION:
					case PostgreSQLParser.KW_PUBLICATION:
					case PostgreSQLParser.KW_OUT:
					case PostgreSQLParser.KW_ROUTINES:
					case PostgreSQLParser.KW_SCHEMAS:
					case PostgreSQLParser.KW_PROCEDURES:
					case PostgreSQLParser.KW_INPUT:
					case PostgreSQLParser.KW_SUPPORT:
					case PostgreSQLParser.KW_PARALLEL:
					case PostgreSQLParser.KW_SQL:
					case PostgreSQLParser.KW_DEPENDS:
					case PostgreSQLParser.KW_OVERRIDING:
					case PostgreSQLParser.KW_CONFLICT:
					case PostgreSQLParser.KW_SKIP:
					case PostgreSQLParser.KW_LOCKED:
					case PostgreSQLParser.KW_TIES:
					case PostgreSQLParser.KW_ROLLUP:
					case PostgreSQLParser.KW_CUBE:
					case PostgreSQLParser.KW_GROUPING:
					case PostgreSQLParser.KW_SETS:
					case PostgreSQLParser.KW_ORDINALITY:
					case PostgreSQLParser.KW_XMLTABLE:
					case PostgreSQLParser.KW_COLUMNS:
					case PostgreSQLParser.KW_XMLNAMESPACES:
					case PostgreSQLParser.KW_ROWTYPE:
					case PostgreSQLParser.KW_NORMALIZED:
					case PostgreSQLParser.KW_WITHIN:
					case PostgreSQLParser.KW_FILTER:
					case PostgreSQLParser.KW_GROUPS:
					case PostgreSQLParser.KW_OTHERS:
					case PostgreSQLParser.KW_NFC:
					case PostgreSQLParser.KW_NFD:
					case PostgreSQLParser.KW_NFKC:
					case PostgreSQLParser.KW_NFKD:
					case PostgreSQLParser.KW_UESCAPE:
					case PostgreSQLParser.KW_VIEWS:
					case PostgreSQLParser.KW_NORMALIZE:
					case PostgreSQLParser.KW_DUMP:
					case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
					case PostgreSQLParser.KW_VARIABLE_CONFLICT:
					case PostgreSQLParser.KW_ERROR:
					case PostgreSQLParser.KW_USE_VARIABLE:
					case PostgreSQLParser.KW_USE_COLUMN:
					case PostgreSQLParser.KW_ALIAS:
					case PostgreSQLParser.KW_CONSTANT:
					case PostgreSQLParser.KW_PERFORM:
					case PostgreSQLParser.KW_GET:
					case PostgreSQLParser.KW_DIAGNOSTICS:
					case PostgreSQLParser.KW_STACKED:
					case PostgreSQLParser.KW_ELSIF:
					case PostgreSQLParser.KW_REVERSE:
					case PostgreSQLParser.KW_SLICE:
					case PostgreSQLParser.KW_EXIT:
					case PostgreSQLParser.KW_RETURN:
					case PostgreSQLParser.KW_QUERY:
					case PostgreSQLParser.KW_RAISE:
					case PostgreSQLParser.KW_SQLSTATE:
					case PostgreSQLParser.KW_DEBUG:
					case PostgreSQLParser.KW_LOG:
					case PostgreSQLParser.KW_INFO:
					case PostgreSQLParser.KW_NOTICE:
					case PostgreSQLParser.KW_WARNING:
					case PostgreSQLParser.KW_EXCEPTION:
					case PostgreSQLParser.KW_ASSERT:
					case PostgreSQLParser.KW_OPEN:
					case PostgreSQLParser.KW_SKIP_LOCKED:
					case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
					case PostgreSQLParser.Identifier:
					case PostgreSQLParser.QuotedIdentifier:
					case PostgreSQLParser.UnicodeQuotedIdentifier:
					case PostgreSQLParser.StringConstant:
					case PostgreSQLParser.UnicodeEscapeStringConstant:
					case PostgreSQLParser.BeginDollarStringConstant:
					case PostgreSQLParser.PLSQLVARIABLENAME:
					case PostgreSQLParser.PLSQLIDENTIFIER:
					case PostgreSQLParser.EscapeStringConstant:
						{
						this.state = 11745;
						this.column_name();
						this.state = 11746;
						this.match(PostgreSQLParser.EQUAL);
						this.state = 11747;
						this.exprofdefault();
						}
						break;
					case PostgreSQLParser.OPEN_PAREN:
						{
						this.state = 11749;
						this.match(PostgreSQLParser.OPEN_PAREN);
						this.state = 11750;
						this.columnlist();
						this.state = 11751;
						this.match(PostgreSQLParser.CLOSE_PAREN);
						this.state = 11752;
						this.match(PostgreSQLParser.EQUAL);
						this.state = 11753;
						this.match(PostgreSQLParser.OPEN_PAREN);
						this.state = 11754;
						this.exprofdefaultlist();
						this.state = 11755;
						this.match(PostgreSQLParser.CLOSE_PAREN);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 11759;
				this._errHandler.sync(this);
				_alt = this.interpreter.adaptivePredict(this._input, 1249, 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 default_values_or_values(): Default_values_or_valuesContext {
		let _localctx: Default_values_or_valuesContext = new Default_values_or_valuesContext(this._ctx, this.state);
		this.enterRule(_localctx, 1694, PostgreSQLParser.RULE_default_values_or_values);
		try {
			this.state = 11765;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_VALUES:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11761;
				this.match(PostgreSQLParser.KW_VALUES);
				this.state = 11762;
				this.exprofdefaultlist();
				}
				break;
			case PostgreSQLParser.KW_DEFAULT:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11763;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 11764;
				this.match(PostgreSQLParser.KW_VALUES);
				}
				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 exprofdefaultlist(): ExprofdefaultlistContext {
		let _localctx: ExprofdefaultlistContext = new ExprofdefaultlistContext(this._ctx, this.state);
		this.enterRule(_localctx, 1696, PostgreSQLParser.RULE_exprofdefaultlist);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11767;
			this.match(PostgreSQLParser.OPEN_PAREN);
			this.state = 11768;
			this.exprofdefault();
			this.state = 11773;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.COMMA) {
				{
				{
				this.state = 11769;
				this.match(PostgreSQLParser.COMMA);
				this.state = 11770;
				this.exprofdefault();
				}
				}
				this.state = 11775;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 11776;
			this.match(PostgreSQLParser.CLOSE_PAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public exprofdefault(): ExprofdefaultContext {
		let _localctx: ExprofdefaultContext = new ExprofdefaultContext(this._ctx, this.state);
		this.enterRule(_localctx, 1698, PostgreSQLParser.RULE_exprofdefault);
		try {
			this.state = 11780;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1252, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11778;
				this.sortby();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11779;
				this.match(PostgreSQLParser.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 stmt_close(): Stmt_closeContext {
		let _localctx: Stmt_closeContext = new Stmt_closeContext(this._ctx, this.state);
		this.enterRule(_localctx, 1700, PostgreSQLParser.RULE_stmt_close);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11782;
			this.match(PostgreSQLParser.KW_CLOSE);
			this.state = 11783;
			this.cursor_variable();
			this.state = 11784;
			this.match(PostgreSQLParser.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 stmt_null(): Stmt_nullContext {
		let _localctx: Stmt_nullContext = new Stmt_nullContext(this._ctx, this.state);
		this.enterRule(_localctx, 1702, PostgreSQLParser.RULE_stmt_null);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11786;
			this.match(PostgreSQLParser.KW_NULL);
			this.state = 11787;
			this.match(PostgreSQLParser.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 stmt_commit(): Stmt_commitContext {
		let _localctx: Stmt_commitContext = new Stmt_commitContext(this._ctx, this.state);
		this.enterRule(_localctx, 1704, PostgreSQLParser.RULE_stmt_commit);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11789;
			this.match(PostgreSQLParser.KW_COMMIT);
			this.state = 11791;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AND) {
				{
				this.state = 11790;
				this.plsql_opt_transaction_chain();
				}
			}

			this.state = 11793;
			this.match(PostgreSQLParser.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 stmt_rollback(): Stmt_rollbackContext {
		let _localctx: Stmt_rollbackContext = new Stmt_rollbackContext(this._ctx, this.state);
		this.enterRule(_localctx, 1706, PostgreSQLParser.RULE_stmt_rollback);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11795;
			this.match(PostgreSQLParser.KW_ROLLBACK);
			this.state = 11797;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_AND) {
				{
				this.state = 11796;
				this.plsql_opt_transaction_chain();
				}
			}

			this.state = 11799;
			this.match(PostgreSQLParser.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 plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext {
		let _localctx: Plsql_opt_transaction_chainContext = new Plsql_opt_transaction_chainContext(this._ctx, this.state);
		this.enterRule(_localctx, 1708, PostgreSQLParser.RULE_plsql_opt_transaction_chain);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11801;
			this.match(PostgreSQLParser.KW_AND);
			this.state = 11803;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_NO) {
				{
				this.state = 11802;
				this.match(PostgreSQLParser.KW_NO);
				}
			}

			this.state = 11805;
			this.match(PostgreSQLParser.KW_CHAIN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public stmt_set(): Stmt_setContext {
		let _localctx: Stmt_setContext = new Stmt_setContext(this._ctx, this.state);
		this.enterRule(_localctx, 1710, PostgreSQLParser.RULE_stmt_set);
		try {
			this.state = 11819;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_SET:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11807;
				this.match(PostgreSQLParser.KW_SET);
				this.state = 11808;
				this.any_name();
				this.state = 11809;
				this.match(PostgreSQLParser.KW_TO);
				this.state = 11810;
				this.match(PostgreSQLParser.KW_DEFAULT);
				this.state = 11811;
				this.match(PostgreSQLParser.SEMI);
				}
				break;
			case PostgreSQLParser.KW_RESET:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11813;
				this.match(PostgreSQLParser.KW_RESET);
				this.state = 11816;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case PostgreSQLParser.KW_AND:
				case PostgreSQLParser.KW_ARRAY:
				case PostgreSQLParser.KW_COLLATE:
				case PostgreSQLParser.KW_COLUMN:
				case PostgreSQLParser.KW_CONSTRAINT:
				case PostgreSQLParser.KW_DEFAULT:
				case PostgreSQLParser.KW_DO:
				case PostgreSQLParser.KW_FETCH:
				case PostgreSQLParser.KW_TABLE:
				case PostgreSQLParser.KW_IS:
				case PostgreSQLParser.KW_OUTER:
				case PostgreSQLParser.KW_OVER:
				case PostgreSQLParser.KW_ABORT:
				case PostgreSQLParser.KW_ABSOLUTE:
				case PostgreSQLParser.KW_ACCESS:
				case PostgreSQLParser.KW_ACTION:
				case PostgreSQLParser.KW_ADD:
				case PostgreSQLParser.KW_ADMIN:
				case PostgreSQLParser.KW_AFTER:
				case PostgreSQLParser.KW_AGGREGATE:
				case PostgreSQLParser.KW_ALSO:
				case PostgreSQLParser.KW_ALTER:
				case PostgreSQLParser.KW_ALWAYS:
				case PostgreSQLParser.KW_ASSERTION:
				case PostgreSQLParser.KW_ASSIGNMENT:
				case PostgreSQLParser.KW_AT:
				case PostgreSQLParser.KW_ATTRIBUTE:
				case PostgreSQLParser.KW_BACKWARD:
				case PostgreSQLParser.KW_BEFORE:
				case PostgreSQLParser.KW_BEGIN:
				case PostgreSQLParser.KW_BY:
				case PostgreSQLParser.KW_CACHE:
				case PostgreSQLParser.KW_CALLED:
				case PostgreSQLParser.KW_CASCADE:
				case PostgreSQLParser.KW_CASCADED:
				case PostgreSQLParser.KW_CATALOG:
				case PostgreSQLParser.KW_CHAIN:
				case PostgreSQLParser.KW_CHARACTERISTICS:
				case PostgreSQLParser.KW_CHECKPOINT:
				case PostgreSQLParser.KW_CLASS:
				case PostgreSQLParser.KW_CLOSE:
				case PostgreSQLParser.KW_CLUSTER:
				case PostgreSQLParser.KW_COMMENT:
				case PostgreSQLParser.KW_COMMENTS:
				case PostgreSQLParser.KW_COMMIT:
				case PostgreSQLParser.KW_COMMITTED:
				case PostgreSQLParser.KW_CONFIGURATION:
				case PostgreSQLParser.KW_CONNECTION:
				case PostgreSQLParser.KW_CONSTRAINTS:
				case PostgreSQLParser.KW_CONTENT:
				case PostgreSQLParser.KW_CONTINUE:
				case PostgreSQLParser.KW_CONVERSION:
				case PostgreSQLParser.KW_COPY:
				case PostgreSQLParser.KW_COST:
				case PostgreSQLParser.KW_CSV:
				case PostgreSQLParser.KW_CURSOR:
				case PostgreSQLParser.KW_CYCLE:
				case PostgreSQLParser.KW_DATA:
				case PostgreSQLParser.KW_DATABASE:
				case PostgreSQLParser.KW_DAY:
				case PostgreSQLParser.KW_DEALLOCATE:
				case PostgreSQLParser.KW_DECLARE:
				case PostgreSQLParser.KW_DEFAULTS:
				case PostgreSQLParser.KW_DEFERRED:
				case PostgreSQLParser.KW_DEFINER:
				case PostgreSQLParser.KW_DELETE:
				case PostgreSQLParser.KW_DELIMITER:
				case PostgreSQLParser.KW_DELIMITERS:
				case PostgreSQLParser.KW_DICTIONARY:
				case PostgreSQLParser.KW_DISABLE:
				case PostgreSQLParser.KW_DISCARD:
				case PostgreSQLParser.KW_DOCUMENT:
				case PostgreSQLParser.KW_DOMAIN:
				case PostgreSQLParser.KW_DOUBLE:
				case PostgreSQLParser.KW_DROP:
				case PostgreSQLParser.KW_EACH:
				case PostgreSQLParser.KW_ENABLE:
				case PostgreSQLParser.KW_ENCODING:
				case PostgreSQLParser.KW_ENCRYPTED:
				case PostgreSQLParser.KW_ENUM:
				case PostgreSQLParser.KW_ESCAPE:
				case PostgreSQLParser.KW_EVENT:
				case PostgreSQLParser.KW_EXCLUDE:
				case PostgreSQLParser.KW_EXCLUDING:
				case PostgreSQLParser.KW_EXCLUSIVE:
				case PostgreSQLParser.KW_EXECUTE:
				case PostgreSQLParser.KW_EXPLAIN:
				case PostgreSQLParser.KW_EXTENSION:
				case PostgreSQLParser.KW_EXTERNAL:
				case PostgreSQLParser.KW_FAMILY:
				case PostgreSQLParser.KW_FIRST:
				case PostgreSQLParser.KW_FOLLOWING:
				case PostgreSQLParser.KW_FORCE:
				case PostgreSQLParser.KW_FORWARD:
				case PostgreSQLParser.KW_FUNCTION:
				case PostgreSQLParser.KW_FUNCTIONS:
				case PostgreSQLParser.KW_GLOBAL:
				case PostgreSQLParser.KW_GRANTED:
				case PostgreSQLParser.KW_HANDLER:
				case PostgreSQLParser.KW_HEADER:
				case PostgreSQLParser.KW_HOLD:
				case PostgreSQLParser.KW_HOUR:
				case PostgreSQLParser.KW_IDENTITY:
				case PostgreSQLParser.KW_IF:
				case PostgreSQLParser.KW_IMMEDIATE:
				case PostgreSQLParser.KW_IMMUTABLE:
				case PostgreSQLParser.KW_IMPLICIT:
				case PostgreSQLParser.KW_INCLUDING:
				case PostgreSQLParser.KW_INCREMENT:
				case PostgreSQLParser.KW_INDEX:
				case PostgreSQLParser.KW_INDEXES:
				case PostgreSQLParser.KW_INHERIT:
				case PostgreSQLParser.KW_INHERITS:
				case PostgreSQLParser.KW_INLINE:
				case PostgreSQLParser.KW_INSENSITIVE:
				case PostgreSQLParser.KW_INSERT:
				case PostgreSQLParser.KW_INSTEAD:
				case PostgreSQLParser.KW_INVOKER:
				case PostgreSQLParser.KW_ISOLATION:
				case PostgreSQLParser.KW_KEY:
				case PostgreSQLParser.KW_LABEL:
				case PostgreSQLParser.KW_LANGUAGE:
				case PostgreSQLParser.KW_LARGE:
				case PostgreSQLParser.KW_LAST:
				case PostgreSQLParser.KW_LEAKPROOF:
				case PostgreSQLParser.KW_LEVEL:
				case PostgreSQLParser.KW_LISTEN:
				case PostgreSQLParser.KW_LOAD:
				case PostgreSQLParser.KW_LOCAL:
				case PostgreSQLParser.KW_LOCATION:
				case PostgreSQLParser.KW_LOCK:
				case PostgreSQLParser.KW_MAPPING:
				case PostgreSQLParser.KW_MATCH:
				case PostgreSQLParser.KW_MATERIALIZED:
				case PostgreSQLParser.KW_MAXVALUE:
				case PostgreSQLParser.KW_MINUTE:
				case PostgreSQLParser.KW_MINVALUE:
				case PostgreSQLParser.KW_MODE:
				case PostgreSQLParser.KW_MONTH:
				case PostgreSQLParser.KW_MOVE:
				case PostgreSQLParser.KW_NAME:
				case PostgreSQLParser.KW_NAMES:
				case PostgreSQLParser.KW_NEXT:
				case PostgreSQLParser.KW_NO:
				case PostgreSQLParser.KW_NOTHING:
				case PostgreSQLParser.KW_NOTIFY:
				case PostgreSQLParser.KW_NOWAIT:
				case PostgreSQLParser.KW_NULLS:
				case PostgreSQLParser.KW_OBJECT:
				case PostgreSQLParser.KW_OF:
				case PostgreSQLParser.KW_OFF:
				case PostgreSQLParser.KW_OIDS:
				case PostgreSQLParser.KW_OPERATOR:
				case PostgreSQLParser.KW_OPTION:
				case PostgreSQLParser.KW_OPTIONS:
				case PostgreSQLParser.KW_OWNED:
				case PostgreSQLParser.KW_OWNER:
				case PostgreSQLParser.KW_PARSER:
				case PostgreSQLParser.KW_PARTIAL:
				case PostgreSQLParser.KW_PARTITION:
				case PostgreSQLParser.KW_PASSING:
				case PostgreSQLParser.KW_PASSWORD:
				case PostgreSQLParser.KW_PLANS:
				case PostgreSQLParser.KW_PRECEDING:
				case PostgreSQLParser.KW_PREPARE:
				case PostgreSQLParser.KW_PREPARED:
				case PostgreSQLParser.KW_PRESERVE:
				case PostgreSQLParser.KW_PRIOR:
				case PostgreSQLParser.KW_PRIVILEGES:
				case PostgreSQLParser.KW_PROCEDURAL:
				case PostgreSQLParser.KW_PROCEDURE:
				case PostgreSQLParser.KW_PROGRAM:
				case PostgreSQLParser.KW_QUOTE:
				case PostgreSQLParser.KW_RANGE:
				case PostgreSQLParser.KW_READ:
				case PostgreSQLParser.KW_REASSIGN:
				case PostgreSQLParser.KW_RECHECK:
				case PostgreSQLParser.KW_RECURSIVE:
				case PostgreSQLParser.KW_REF:
				case PostgreSQLParser.KW_REFRESH:
				case PostgreSQLParser.KW_REINDEX:
				case PostgreSQLParser.KW_RELATIVE:
				case PostgreSQLParser.KW_RELEASE:
				case PostgreSQLParser.KW_RENAME:
				case PostgreSQLParser.KW_REPEATABLE:
				case PostgreSQLParser.KW_REPLACE:
				case PostgreSQLParser.KW_REPLICA:
				case PostgreSQLParser.KW_RESET:
				case PostgreSQLParser.KW_RESTART:
				case PostgreSQLParser.KW_RESTRICT:
				case PostgreSQLParser.KW_RETURNS:
				case PostgreSQLParser.KW_REVOKE:
				case PostgreSQLParser.KW_ROLE:
				case PostgreSQLParser.KW_ROLLBACK:
				case PostgreSQLParser.KW_ROWS:
				case PostgreSQLParser.KW_RULE:
				case PostgreSQLParser.KW_SAVEPOINT:
				case PostgreSQLParser.KW_SCHEMA:
				case PostgreSQLParser.KW_SCROLL:
				case PostgreSQLParser.KW_SEARCH:
				case PostgreSQLParser.KW_SECOND:
				case PostgreSQLParser.KW_SECURITY:
				case PostgreSQLParser.KW_SEQUENCE:
				case PostgreSQLParser.KW_SEQUENCES:
				case PostgreSQLParser.KW_SERIALIZABLE:
				case PostgreSQLParser.KW_SERVER:
				case PostgreSQLParser.KW_SESSION:
				case PostgreSQLParser.KW_SET:
				case PostgreSQLParser.KW_SHARE:
				case PostgreSQLParser.KW_SHOW:
				case PostgreSQLParser.KW_SIMPLE:
				case PostgreSQLParser.KW_SNAPSHOT:
				case PostgreSQLParser.KW_STABLE:
				case PostgreSQLParser.KW_STANDALONE:
				case PostgreSQLParser.KW_START:
				case PostgreSQLParser.KW_STATEMENT:
				case PostgreSQLParser.KW_STATISTICS:
				case PostgreSQLParser.KW_STDIN:
				case PostgreSQLParser.KW_STDOUT:
				case PostgreSQLParser.KW_STORAGE:
				case PostgreSQLParser.KW_STRICT:
				case PostgreSQLParser.KW_STRIP:
				case PostgreSQLParser.KW_SYSID:
				case PostgreSQLParser.KW_SYSTEM:
				case PostgreSQLParser.KW_TABLES:
				case PostgreSQLParser.KW_TABLESPACE:
				case PostgreSQLParser.KW_TEMP:
				case PostgreSQLParser.KW_TEMPLATE:
				case PostgreSQLParser.KW_TEMPORARY:
				case PostgreSQLParser.KW_TEXT:
				case PostgreSQLParser.KW_TRANSACTION:
				case PostgreSQLParser.KW_TRIGGER:
				case PostgreSQLParser.KW_TRUNCATE:
				case PostgreSQLParser.KW_TRUSTED:
				case PostgreSQLParser.KW_TYPE:
				case PostgreSQLParser.KW_TYPES:
				case PostgreSQLParser.KW_UNBOUNDED:
				case PostgreSQLParser.KW_UNCOMMITTED:
				case PostgreSQLParser.KW_UNENCRYPTED:
				case PostgreSQLParser.KW_UNKNOWN:
				case PostgreSQLParser.KW_UNLISTEN:
				case PostgreSQLParser.KW_UNLOGGED:
				case PostgreSQLParser.KW_UNTIL:
				case PostgreSQLParser.KW_UPDATE:
				case PostgreSQLParser.KW_VACUUM:
				case PostgreSQLParser.KW_VALID:
				case PostgreSQLParser.KW_VALIDATE:
				case PostgreSQLParser.KW_VALIDATOR:
				case PostgreSQLParser.KW_VARYING:
				case PostgreSQLParser.KW_VERSION:
				case PostgreSQLParser.KW_VIEW:
				case PostgreSQLParser.KW_VOLATILE:
				case PostgreSQLParser.KW_WHITESPACE:
				case PostgreSQLParser.KW_WITHOUT:
				case PostgreSQLParser.KW_WORK:
				case PostgreSQLParser.KW_WRAPPER:
				case PostgreSQLParser.KW_WRITE:
				case PostgreSQLParser.KW_XML:
				case PostgreSQLParser.KW_YEAR:
				case PostgreSQLParser.KW_YES:
				case PostgreSQLParser.KW_ZONE:
				case PostgreSQLParser.KW_BETWEEN:
				case PostgreSQLParser.KW_BIGINT:
				case PostgreSQLParser.KW_BIT:
				case PostgreSQLParser.KW_BOOLEAN:
				case PostgreSQLParser.KW_CHAR:
				case PostgreSQLParser.KW_CHARACTER:
				case PostgreSQLParser.KW_COALESCE:
				case PostgreSQLParser.KW_DEC:
				case PostgreSQLParser.KW_DECIMAL:
				case PostgreSQLParser.KW_EXISTS:
				case PostgreSQLParser.KW_EXTRACT:
				case PostgreSQLParser.KW_FLOAT:
				case PostgreSQLParser.KW_GREATEST:
				case PostgreSQLParser.KW_INOUT:
				case PostgreSQLParser.KW_INT:
				case PostgreSQLParser.KW_INTEGER:
				case PostgreSQLParser.KW_INTERVAL:
				case PostgreSQLParser.KW_LEAST:
				case PostgreSQLParser.KW_NATIONAL:
				case PostgreSQLParser.KW_NCHAR:
				case PostgreSQLParser.KW_NONE:
				case PostgreSQLParser.KW_NULLIF:
				case PostgreSQLParser.KW_NUMERIC:
				case PostgreSQLParser.KW_OVERLAY:
				case PostgreSQLParser.KW_POSITION:
				case PostgreSQLParser.KW_PRECISION:
				case PostgreSQLParser.KW_REAL:
				case PostgreSQLParser.KW_ROW:
				case PostgreSQLParser.KW_SETOF:
				case PostgreSQLParser.KW_SMALLINT:
				case PostgreSQLParser.KW_SUBSTRING:
				case PostgreSQLParser.KW_TIME:
				case PostgreSQLParser.KW_TIMESTAMP:
				case PostgreSQLParser.KW_TREAT:
				case PostgreSQLParser.KW_TRIM:
				case PostgreSQLParser.KW_VALUES:
				case PostgreSQLParser.KW_VARCHAR:
				case PostgreSQLParser.KW_XMLATTRIBUTES:
				case PostgreSQLParser.KW_XMLCONCAT:
				case PostgreSQLParser.KW_XMLELEMENT:
				case PostgreSQLParser.KW_XMLEXISTS:
				case PostgreSQLParser.KW_XMLFOREST:
				case PostgreSQLParser.KW_XMLPARSE:
				case PostgreSQLParser.KW_XMLPI:
				case PostgreSQLParser.KW_XMLROOT:
				case PostgreSQLParser.KW_XMLSERIALIZE:
				case PostgreSQLParser.KW_CALL:
				case PostgreSQLParser.KW_CURRENT:
				case PostgreSQLParser.KW_ATTACH:
				case PostgreSQLParser.KW_DETACH:
				case PostgreSQLParser.KW_EXPRESSION:
				case PostgreSQLParser.KW_GENERATED:
				case PostgreSQLParser.KW_LOGGED:
				case PostgreSQLParser.KW_STORED:
				case PostgreSQLParser.KW_INCLUDE:
				case PostgreSQLParser.KW_ROUTINE:
				case PostgreSQLParser.KW_TRANSFORM:
				case PostgreSQLParser.KW_IMPORT:
				case PostgreSQLParser.KW_POLICY:
				case PostgreSQLParser.KW_METHOD:
				case PostgreSQLParser.KW_REFERENCING:
				case PostgreSQLParser.KW_NEW:
				case PostgreSQLParser.KW_OLD:
				case PostgreSQLParser.KW_VALUE:
				case PostgreSQLParser.KW_SUBSCRIPTION:
				case PostgreSQLParser.KW_PUBLICATION:
				case PostgreSQLParser.KW_OUT:
				case PostgreSQLParser.KW_ROUTINES:
				case PostgreSQLParser.KW_SCHEMAS:
				case PostgreSQLParser.KW_PROCEDURES:
				case PostgreSQLParser.KW_INPUT:
				case PostgreSQLParser.KW_SUPPORT:
				case PostgreSQLParser.KW_PARALLEL:
				case PostgreSQLParser.KW_SQL:
				case PostgreSQLParser.KW_DEPENDS:
				case PostgreSQLParser.KW_OVERRIDING:
				case PostgreSQLParser.KW_CONFLICT:
				case PostgreSQLParser.KW_SKIP:
				case PostgreSQLParser.KW_LOCKED:
				case PostgreSQLParser.KW_TIES:
				case PostgreSQLParser.KW_ROLLUP:
				case PostgreSQLParser.KW_CUBE:
				case PostgreSQLParser.KW_GROUPING:
				case PostgreSQLParser.KW_SETS:
				case PostgreSQLParser.KW_ORDINALITY:
				case PostgreSQLParser.KW_XMLTABLE:
				case PostgreSQLParser.KW_COLUMNS:
				case PostgreSQLParser.KW_XMLNAMESPACES:
				case PostgreSQLParser.KW_ROWTYPE:
				case PostgreSQLParser.KW_NORMALIZED:
				case PostgreSQLParser.KW_WITHIN:
				case PostgreSQLParser.KW_FILTER:
				case PostgreSQLParser.KW_GROUPS:
				case PostgreSQLParser.KW_OTHERS:
				case PostgreSQLParser.KW_NFC:
				case PostgreSQLParser.KW_NFD:
				case PostgreSQLParser.KW_NFKC:
				case PostgreSQLParser.KW_NFKD:
				case PostgreSQLParser.KW_UESCAPE:
				case PostgreSQLParser.KW_VIEWS:
				case PostgreSQLParser.KW_NORMALIZE:
				case PostgreSQLParser.KW_DUMP:
				case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
				case PostgreSQLParser.KW_VARIABLE_CONFLICT:
				case PostgreSQLParser.KW_ERROR:
				case PostgreSQLParser.KW_USE_VARIABLE:
				case PostgreSQLParser.KW_USE_COLUMN:
				case PostgreSQLParser.KW_ALIAS:
				case PostgreSQLParser.KW_CONSTANT:
				case PostgreSQLParser.KW_PERFORM:
				case PostgreSQLParser.KW_GET:
				case PostgreSQLParser.KW_DIAGNOSTICS:
				case PostgreSQLParser.KW_STACKED:
				case PostgreSQLParser.KW_ELSIF:
				case PostgreSQLParser.KW_REVERSE:
				case PostgreSQLParser.KW_SLICE:
				case PostgreSQLParser.KW_EXIT:
				case PostgreSQLParser.KW_RETURN:
				case PostgreSQLParser.KW_QUERY:
				case PostgreSQLParser.KW_RAISE:
				case PostgreSQLParser.KW_SQLSTATE:
				case PostgreSQLParser.KW_DEBUG:
				case PostgreSQLParser.KW_LOG:
				case PostgreSQLParser.KW_INFO:
				case PostgreSQLParser.KW_NOTICE:
				case PostgreSQLParser.KW_WARNING:
				case PostgreSQLParser.KW_EXCEPTION:
				case PostgreSQLParser.KW_ASSERT:
				case PostgreSQLParser.KW_OPEN:
				case PostgreSQLParser.KW_SKIP_LOCKED:
				case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
				case PostgreSQLParser.Identifier:
				case PostgreSQLParser.QuotedIdentifier:
				case PostgreSQLParser.UnicodeQuotedIdentifier:
				case PostgreSQLParser.StringConstant:
				case PostgreSQLParser.UnicodeEscapeStringConstant:
				case PostgreSQLParser.BeginDollarStringConstant:
				case PostgreSQLParser.PLSQLVARIABLENAME:
				case PostgreSQLParser.PLSQLIDENTIFIER:
				case PostgreSQLParser.EscapeStringConstant:
					{
					this.state = 11814;
					this.any_name();
					}
					break;
				case PostgreSQLParser.KW_ALL:
					{
					this.state = 11815;
					this.match(PostgreSQLParser.KW_ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 11818;
				this.match(PostgreSQLParser.SEMI);
				}
				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 cursor_variable(): Cursor_variableContext {
		let _localctx: Cursor_variableContext = new Cursor_variableContext(this._ctx, this.state);
		this.enterRule(_localctx, 1712, PostgreSQLParser.RULE_cursor_variable);
		try {
			this.state = 11823;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11821;
				this.colid();
				}
				break;
			case PostgreSQLParser.PARAM:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11822;
				this.match(PostgreSQLParser.PARAM);
				}
				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 exception_sect(): Exception_sectContext {
		let _localctx: Exception_sectContext = new Exception_sectContext(this._ctx, this.state);
		this.enterRule(_localctx, 1714, PostgreSQLParser.RULE_exception_sect);
		try {
			this.state = 11828;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_END:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_EXCEPTION:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11826;
				this.match(PostgreSQLParser.KW_EXCEPTION);
				this.state = 11827;
				this.proc_exceptions();
				}
				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 proc_exceptions(): Proc_exceptionsContext {
		let _localctx: Proc_exceptionsContext = new Proc_exceptionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1716, PostgreSQLParser.RULE_proc_exceptions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11831;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 11830;
				this.proc_exception();
				}
				}
				this.state = 11833;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la === PostgreSQLParser.KW_WHEN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public proc_exception(): Proc_exceptionContext {
		let _localctx: Proc_exceptionContext = new Proc_exceptionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1718, PostgreSQLParser.RULE_proc_exception);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11835;
			this.match(PostgreSQLParser.KW_WHEN);
			this.state = 11836;
			this.proc_conditions();
			this.state = 11837;
			this.match(PostgreSQLParser.KW_THEN);
			this.state = 11838;
			this.proc_sect();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public proc_conditions(): Proc_conditionsContext {
		let _localctx: Proc_conditionsContext = new Proc_conditionsContext(this._ctx, this.state);
		this.enterRule(_localctx, 1720, PostgreSQLParser.RULE_proc_conditions);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11840;
			this.proc_condition();
			this.state = 11845;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la === PostgreSQLParser.KW_OR) {
				{
				{
				this.state = 11841;
				this.match(PostgreSQLParser.KW_OR);
				this.state = 11842;
				this.proc_condition();
				}
				}
				this.state = 11847;
				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 proc_condition(): Proc_conditionContext {
		let _localctx: Proc_conditionContext = new Proc_conditionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1722, PostgreSQLParser.RULE_proc_condition);
		try {
			this.state = 11851;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1262, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11848;
				this.any_identifier();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11849;
				this.match(PostgreSQLParser.KW_SQLSTATE);
				this.state = 11850;
				this.sconst();
				}
				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 opt_block_label(): Opt_block_labelContext {
		let _localctx: Opt_block_labelContext = new Opt_block_labelContext(this._ctx, this.state);
		this.enterRule(_localctx, 1724, PostgreSQLParser.RULE_opt_block_label);
		try {
			this.state = 11855;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_DECLARE:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.LESS_LESS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11854;
				this.label_decl();
				}
				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 opt_loop_label(): Opt_loop_labelContext {
		let _localctx: Opt_loop_labelContext = new Opt_loop_labelContext(this._ctx, this.state);
		this.enterRule(_localctx, 1726, PostgreSQLParser.RULE_opt_loop_label);
		try {
			this.state = 11859;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.KW_FOR:
			case PostgreSQLParser.KW_WHILE:
			case PostgreSQLParser.KW_FOREACH:
			case PostgreSQLParser.KW_LOOP:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.LESS_LESS:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11858;
				this.label_decl();
				}
				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 opt_label(): Opt_labelContext {
		let _localctx: Opt_labelContext = new Opt_labelContext(this._ctx, this.state);
		this.enterRule(_localctx, 1728, PostgreSQLParser.RULE_opt_label);
		try {
			this.state = 11863;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case PostgreSQLParser.EOF:
			case PostgreSQLParser.SEMI:
			case PostgreSQLParser.KW_WHEN:
				this.enterOuterAlt(_localctx, 1);
				// tslint:disable-next-line:no-empty
				{
				}
				break;
			case PostgreSQLParser.KW_AND:
			case PostgreSQLParser.KW_ARRAY:
			case PostgreSQLParser.KW_COLLATE:
			case PostgreSQLParser.KW_COLUMN:
			case PostgreSQLParser.KW_CONSTRAINT:
			case PostgreSQLParser.KW_DEFAULT:
			case PostgreSQLParser.KW_DO:
			case PostgreSQLParser.KW_FETCH:
			case PostgreSQLParser.KW_TABLE:
			case PostgreSQLParser.KW_IS:
			case PostgreSQLParser.KW_OUTER:
			case PostgreSQLParser.KW_OVER:
			case PostgreSQLParser.KW_ABORT:
			case PostgreSQLParser.KW_ABSOLUTE:
			case PostgreSQLParser.KW_ACCESS:
			case PostgreSQLParser.KW_ACTION:
			case PostgreSQLParser.KW_ADD:
			case PostgreSQLParser.KW_ADMIN:
			case PostgreSQLParser.KW_AFTER:
			case PostgreSQLParser.KW_AGGREGATE:
			case PostgreSQLParser.KW_ALSO:
			case PostgreSQLParser.KW_ALTER:
			case PostgreSQLParser.KW_ALWAYS:
			case PostgreSQLParser.KW_ASSERTION:
			case PostgreSQLParser.KW_ASSIGNMENT:
			case PostgreSQLParser.KW_AT:
			case PostgreSQLParser.KW_ATTRIBUTE:
			case PostgreSQLParser.KW_BACKWARD:
			case PostgreSQLParser.KW_BEFORE:
			case PostgreSQLParser.KW_BEGIN:
			case PostgreSQLParser.KW_BY:
			case PostgreSQLParser.KW_CACHE:
			case PostgreSQLParser.KW_CALLED:
			case PostgreSQLParser.KW_CASCADE:
			case PostgreSQLParser.KW_CASCADED:
			case PostgreSQLParser.KW_CATALOG:
			case PostgreSQLParser.KW_CHAIN:
			case PostgreSQLParser.KW_CHARACTERISTICS:
			case PostgreSQLParser.KW_CHECKPOINT:
			case PostgreSQLParser.KW_CLASS:
			case PostgreSQLParser.KW_CLOSE:
			case PostgreSQLParser.KW_CLUSTER:
			case PostgreSQLParser.KW_COMMENT:
			case PostgreSQLParser.KW_COMMENTS:
			case PostgreSQLParser.KW_COMMIT:
			case PostgreSQLParser.KW_COMMITTED:
			case PostgreSQLParser.KW_CONFIGURATION:
			case PostgreSQLParser.KW_CONNECTION:
			case PostgreSQLParser.KW_CONSTRAINTS:
			case PostgreSQLParser.KW_CONTENT:
			case PostgreSQLParser.KW_CONTINUE:
			case PostgreSQLParser.KW_CONVERSION:
			case PostgreSQLParser.KW_COPY:
			case PostgreSQLParser.KW_COST:
			case PostgreSQLParser.KW_CSV:
			case PostgreSQLParser.KW_CURSOR:
			case PostgreSQLParser.KW_CYCLE:
			case PostgreSQLParser.KW_DATA:
			case PostgreSQLParser.KW_DATABASE:
			case PostgreSQLParser.KW_DAY:
			case PostgreSQLParser.KW_DEALLOCATE:
			case PostgreSQLParser.KW_DECLARE:
			case PostgreSQLParser.KW_DEFAULTS:
			case PostgreSQLParser.KW_DEFERRED:
			case PostgreSQLParser.KW_DEFINER:
			case PostgreSQLParser.KW_DELETE:
			case PostgreSQLParser.KW_DELIMITER:
			case PostgreSQLParser.KW_DELIMITERS:
			case PostgreSQLParser.KW_DICTIONARY:
			case PostgreSQLParser.KW_DISABLE:
			case PostgreSQLParser.KW_DISCARD:
			case PostgreSQLParser.KW_DOCUMENT:
			case PostgreSQLParser.KW_DOMAIN:
			case PostgreSQLParser.KW_DOUBLE:
			case PostgreSQLParser.KW_DROP:
			case PostgreSQLParser.KW_EACH:
			case PostgreSQLParser.KW_ENABLE:
			case PostgreSQLParser.KW_ENCODING:
			case PostgreSQLParser.KW_ENCRYPTED:
			case PostgreSQLParser.KW_ENUM:
			case PostgreSQLParser.KW_ESCAPE:
			case PostgreSQLParser.KW_EVENT:
			case PostgreSQLParser.KW_EXCLUDE:
			case PostgreSQLParser.KW_EXCLUDING:
			case PostgreSQLParser.KW_EXCLUSIVE:
			case PostgreSQLParser.KW_EXECUTE:
			case PostgreSQLParser.KW_EXPLAIN:
			case PostgreSQLParser.KW_EXTENSION:
			case PostgreSQLParser.KW_EXTERNAL:
			case PostgreSQLParser.KW_FAMILY:
			case PostgreSQLParser.KW_FIRST:
			case PostgreSQLParser.KW_FOLLOWING:
			case PostgreSQLParser.KW_FORCE:
			case PostgreSQLParser.KW_FORWARD:
			case PostgreSQLParser.KW_FUNCTION:
			case PostgreSQLParser.KW_FUNCTIONS:
			case PostgreSQLParser.KW_GLOBAL:
			case PostgreSQLParser.KW_GRANTED:
			case PostgreSQLParser.KW_HANDLER:
			case PostgreSQLParser.KW_HEADER:
			case PostgreSQLParser.KW_HOLD:
			case PostgreSQLParser.KW_HOUR:
			case PostgreSQLParser.KW_IDENTITY:
			case PostgreSQLParser.KW_IF:
			case PostgreSQLParser.KW_IMMEDIATE:
			case PostgreSQLParser.KW_IMMUTABLE:
			case PostgreSQLParser.KW_IMPLICIT:
			case PostgreSQLParser.KW_INCLUDING:
			case PostgreSQLParser.KW_INCREMENT:
			case PostgreSQLParser.KW_INDEX:
			case PostgreSQLParser.KW_INDEXES:
			case PostgreSQLParser.KW_INHERIT:
			case PostgreSQLParser.KW_INHERITS:
			case PostgreSQLParser.KW_INLINE:
			case PostgreSQLParser.KW_INSENSITIVE:
			case PostgreSQLParser.KW_INSERT:
			case PostgreSQLParser.KW_INSTEAD:
			case PostgreSQLParser.KW_INVOKER:
			case PostgreSQLParser.KW_ISOLATION:
			case PostgreSQLParser.KW_KEY:
			case PostgreSQLParser.KW_LABEL:
			case PostgreSQLParser.KW_LANGUAGE:
			case PostgreSQLParser.KW_LARGE:
			case PostgreSQLParser.KW_LAST:
			case PostgreSQLParser.KW_LEAKPROOF:
			case PostgreSQLParser.KW_LEVEL:
			case PostgreSQLParser.KW_LISTEN:
			case PostgreSQLParser.KW_LOAD:
			case PostgreSQLParser.KW_LOCAL:
			case PostgreSQLParser.KW_LOCATION:
			case PostgreSQLParser.KW_LOCK:
			case PostgreSQLParser.KW_MAPPING:
			case PostgreSQLParser.KW_MATCH:
			case PostgreSQLParser.KW_MATERIALIZED:
			case PostgreSQLParser.KW_MAXVALUE:
			case PostgreSQLParser.KW_MINUTE:
			case PostgreSQLParser.KW_MINVALUE:
			case PostgreSQLParser.KW_MODE:
			case PostgreSQLParser.KW_MONTH:
			case PostgreSQLParser.KW_MOVE:
			case PostgreSQLParser.KW_NAME:
			case PostgreSQLParser.KW_NAMES:
			case PostgreSQLParser.KW_NEXT:
			case PostgreSQLParser.KW_NO:
			case PostgreSQLParser.KW_NOTHING:
			case PostgreSQLParser.KW_NOTIFY:
			case PostgreSQLParser.KW_NOWAIT:
			case PostgreSQLParser.KW_NULLS:
			case PostgreSQLParser.KW_OBJECT:
			case PostgreSQLParser.KW_OF:
			case PostgreSQLParser.KW_OFF:
			case PostgreSQLParser.KW_OIDS:
			case PostgreSQLParser.KW_OPERATOR:
			case PostgreSQLParser.KW_OPTION:
			case PostgreSQLParser.KW_OPTIONS:
			case PostgreSQLParser.KW_OWNED:
			case PostgreSQLParser.KW_OWNER:
			case PostgreSQLParser.KW_PARSER:
			case PostgreSQLParser.KW_PARTIAL:
			case PostgreSQLParser.KW_PARTITION:
			case PostgreSQLParser.KW_PASSING:
			case PostgreSQLParser.KW_PASSWORD:
			case PostgreSQLParser.KW_PLANS:
			case PostgreSQLParser.KW_PRECEDING:
			case PostgreSQLParser.KW_PREPARE:
			case PostgreSQLParser.KW_PREPARED:
			case PostgreSQLParser.KW_PRESERVE:
			case PostgreSQLParser.KW_PRIOR:
			case PostgreSQLParser.KW_PRIVILEGES:
			case PostgreSQLParser.KW_PROCEDURAL:
			case PostgreSQLParser.KW_PROCEDURE:
			case PostgreSQLParser.KW_PROGRAM:
			case PostgreSQLParser.KW_QUOTE:
			case PostgreSQLParser.KW_RANGE:
			case PostgreSQLParser.KW_READ:
			case PostgreSQLParser.KW_REASSIGN:
			case PostgreSQLParser.KW_RECHECK:
			case PostgreSQLParser.KW_RECURSIVE:
			case PostgreSQLParser.KW_REF:
			case PostgreSQLParser.KW_REFRESH:
			case PostgreSQLParser.KW_REINDEX:
			case PostgreSQLParser.KW_RELATIVE:
			case PostgreSQLParser.KW_RELEASE:
			case PostgreSQLParser.KW_RENAME:
			case PostgreSQLParser.KW_REPEATABLE:
			case PostgreSQLParser.KW_REPLACE:
			case PostgreSQLParser.KW_REPLICA:
			case PostgreSQLParser.KW_RESET:
			case PostgreSQLParser.KW_RESTART:
			case PostgreSQLParser.KW_RESTRICT:
			case PostgreSQLParser.KW_RETURNS:
			case PostgreSQLParser.KW_REVOKE:
			case PostgreSQLParser.KW_ROLE:
			case PostgreSQLParser.KW_ROLLBACK:
			case PostgreSQLParser.KW_ROWS:
			case PostgreSQLParser.KW_RULE:
			case PostgreSQLParser.KW_SAVEPOINT:
			case PostgreSQLParser.KW_SCHEMA:
			case PostgreSQLParser.KW_SCROLL:
			case PostgreSQLParser.KW_SEARCH:
			case PostgreSQLParser.KW_SECOND:
			case PostgreSQLParser.KW_SECURITY:
			case PostgreSQLParser.KW_SEQUENCE:
			case PostgreSQLParser.KW_SEQUENCES:
			case PostgreSQLParser.KW_SERIALIZABLE:
			case PostgreSQLParser.KW_SERVER:
			case PostgreSQLParser.KW_SESSION:
			case PostgreSQLParser.KW_SET:
			case PostgreSQLParser.KW_SHARE:
			case PostgreSQLParser.KW_SHOW:
			case PostgreSQLParser.KW_SIMPLE:
			case PostgreSQLParser.KW_SNAPSHOT:
			case PostgreSQLParser.KW_STABLE:
			case PostgreSQLParser.KW_STANDALONE:
			case PostgreSQLParser.KW_START:
			case PostgreSQLParser.KW_STATEMENT:
			case PostgreSQLParser.KW_STATISTICS:
			case PostgreSQLParser.KW_STDIN:
			case PostgreSQLParser.KW_STDOUT:
			case PostgreSQLParser.KW_STORAGE:
			case PostgreSQLParser.KW_STRICT:
			case PostgreSQLParser.KW_STRIP:
			case PostgreSQLParser.KW_SYSID:
			case PostgreSQLParser.KW_SYSTEM:
			case PostgreSQLParser.KW_TABLES:
			case PostgreSQLParser.KW_TABLESPACE:
			case PostgreSQLParser.KW_TEMP:
			case PostgreSQLParser.KW_TEMPLATE:
			case PostgreSQLParser.KW_TEMPORARY:
			case PostgreSQLParser.KW_TEXT:
			case PostgreSQLParser.KW_TRANSACTION:
			case PostgreSQLParser.KW_TRIGGER:
			case PostgreSQLParser.KW_TRUNCATE:
			case PostgreSQLParser.KW_TRUSTED:
			case PostgreSQLParser.KW_TYPE:
			case PostgreSQLParser.KW_TYPES:
			case PostgreSQLParser.KW_UNBOUNDED:
			case PostgreSQLParser.KW_UNCOMMITTED:
			case PostgreSQLParser.KW_UNENCRYPTED:
			case PostgreSQLParser.KW_UNKNOWN:
			case PostgreSQLParser.KW_UNLISTEN:
			case PostgreSQLParser.KW_UNLOGGED:
			case PostgreSQLParser.KW_UNTIL:
			case PostgreSQLParser.KW_UPDATE:
			case PostgreSQLParser.KW_VACUUM:
			case PostgreSQLParser.KW_VALID:
			case PostgreSQLParser.KW_VALIDATE:
			case PostgreSQLParser.KW_VALIDATOR:
			case PostgreSQLParser.KW_VARYING:
			case PostgreSQLParser.KW_VERSION:
			case PostgreSQLParser.KW_VIEW:
			case PostgreSQLParser.KW_VOLATILE:
			case PostgreSQLParser.KW_WHITESPACE:
			case PostgreSQLParser.KW_WITHOUT:
			case PostgreSQLParser.KW_WORK:
			case PostgreSQLParser.KW_WRAPPER:
			case PostgreSQLParser.KW_WRITE:
			case PostgreSQLParser.KW_XML:
			case PostgreSQLParser.KW_YEAR:
			case PostgreSQLParser.KW_YES:
			case PostgreSQLParser.KW_ZONE:
			case PostgreSQLParser.KW_BETWEEN:
			case PostgreSQLParser.KW_BIGINT:
			case PostgreSQLParser.KW_BIT:
			case PostgreSQLParser.KW_BOOLEAN:
			case PostgreSQLParser.KW_CHAR:
			case PostgreSQLParser.KW_CHARACTER:
			case PostgreSQLParser.KW_COALESCE:
			case PostgreSQLParser.KW_DEC:
			case PostgreSQLParser.KW_DECIMAL:
			case PostgreSQLParser.KW_EXISTS:
			case PostgreSQLParser.KW_EXTRACT:
			case PostgreSQLParser.KW_FLOAT:
			case PostgreSQLParser.KW_GREATEST:
			case PostgreSQLParser.KW_INOUT:
			case PostgreSQLParser.KW_INT:
			case PostgreSQLParser.KW_INTEGER:
			case PostgreSQLParser.KW_INTERVAL:
			case PostgreSQLParser.KW_LEAST:
			case PostgreSQLParser.KW_NATIONAL:
			case PostgreSQLParser.KW_NCHAR:
			case PostgreSQLParser.KW_NONE:
			case PostgreSQLParser.KW_NULLIF:
			case PostgreSQLParser.KW_NUMERIC:
			case PostgreSQLParser.KW_OVERLAY:
			case PostgreSQLParser.KW_POSITION:
			case PostgreSQLParser.KW_PRECISION:
			case PostgreSQLParser.KW_REAL:
			case PostgreSQLParser.KW_ROW:
			case PostgreSQLParser.KW_SETOF:
			case PostgreSQLParser.KW_SMALLINT:
			case PostgreSQLParser.KW_SUBSTRING:
			case PostgreSQLParser.KW_TIME:
			case PostgreSQLParser.KW_TIMESTAMP:
			case PostgreSQLParser.KW_TREAT:
			case PostgreSQLParser.KW_TRIM:
			case PostgreSQLParser.KW_VALUES:
			case PostgreSQLParser.KW_VARCHAR:
			case PostgreSQLParser.KW_XMLATTRIBUTES:
			case PostgreSQLParser.KW_XMLCONCAT:
			case PostgreSQLParser.KW_XMLELEMENT:
			case PostgreSQLParser.KW_XMLEXISTS:
			case PostgreSQLParser.KW_XMLFOREST:
			case PostgreSQLParser.KW_XMLPARSE:
			case PostgreSQLParser.KW_XMLPI:
			case PostgreSQLParser.KW_XMLROOT:
			case PostgreSQLParser.KW_XMLSERIALIZE:
			case PostgreSQLParser.KW_CALL:
			case PostgreSQLParser.KW_CURRENT:
			case PostgreSQLParser.KW_ATTACH:
			case PostgreSQLParser.KW_DETACH:
			case PostgreSQLParser.KW_EXPRESSION:
			case PostgreSQLParser.KW_GENERATED:
			case PostgreSQLParser.KW_LOGGED:
			case PostgreSQLParser.KW_STORED:
			case PostgreSQLParser.KW_INCLUDE:
			case PostgreSQLParser.KW_ROUTINE:
			case PostgreSQLParser.KW_TRANSFORM:
			case PostgreSQLParser.KW_IMPORT:
			case PostgreSQLParser.KW_POLICY:
			case PostgreSQLParser.KW_METHOD:
			case PostgreSQLParser.KW_REFERENCING:
			case PostgreSQLParser.KW_NEW:
			case PostgreSQLParser.KW_OLD:
			case PostgreSQLParser.KW_VALUE:
			case PostgreSQLParser.KW_SUBSCRIPTION:
			case PostgreSQLParser.KW_PUBLICATION:
			case PostgreSQLParser.KW_OUT:
			case PostgreSQLParser.KW_ROUTINES:
			case PostgreSQLParser.KW_SCHEMAS:
			case PostgreSQLParser.KW_PROCEDURES:
			case PostgreSQLParser.KW_INPUT:
			case PostgreSQLParser.KW_SUPPORT:
			case PostgreSQLParser.KW_PARALLEL:
			case PostgreSQLParser.KW_SQL:
			case PostgreSQLParser.KW_DEPENDS:
			case PostgreSQLParser.KW_OVERRIDING:
			case PostgreSQLParser.KW_CONFLICT:
			case PostgreSQLParser.KW_SKIP:
			case PostgreSQLParser.KW_LOCKED:
			case PostgreSQLParser.KW_TIES:
			case PostgreSQLParser.KW_ROLLUP:
			case PostgreSQLParser.KW_CUBE:
			case PostgreSQLParser.KW_GROUPING:
			case PostgreSQLParser.KW_SETS:
			case PostgreSQLParser.KW_ORDINALITY:
			case PostgreSQLParser.KW_XMLTABLE:
			case PostgreSQLParser.KW_COLUMNS:
			case PostgreSQLParser.KW_XMLNAMESPACES:
			case PostgreSQLParser.KW_ROWTYPE:
			case PostgreSQLParser.KW_NORMALIZED:
			case PostgreSQLParser.KW_WITHIN:
			case PostgreSQLParser.KW_FILTER:
			case PostgreSQLParser.KW_GROUPS:
			case PostgreSQLParser.KW_OTHERS:
			case PostgreSQLParser.KW_NFC:
			case PostgreSQLParser.KW_NFD:
			case PostgreSQLParser.KW_NFKC:
			case PostgreSQLParser.KW_NFKD:
			case PostgreSQLParser.KW_UESCAPE:
			case PostgreSQLParser.KW_VIEWS:
			case PostgreSQLParser.KW_NORMALIZE:
			case PostgreSQLParser.KW_DUMP:
			case PostgreSQLParser.KW_PRINT_STRICT_PARAMS:
			case PostgreSQLParser.KW_VARIABLE_CONFLICT:
			case PostgreSQLParser.KW_ERROR:
			case PostgreSQLParser.KW_USE_VARIABLE:
			case PostgreSQLParser.KW_USE_COLUMN:
			case PostgreSQLParser.KW_ALIAS:
			case PostgreSQLParser.KW_CONSTANT:
			case PostgreSQLParser.KW_PERFORM:
			case PostgreSQLParser.KW_GET:
			case PostgreSQLParser.KW_DIAGNOSTICS:
			case PostgreSQLParser.KW_STACKED:
			case PostgreSQLParser.KW_ELSIF:
			case PostgreSQLParser.KW_REVERSE:
			case PostgreSQLParser.KW_SLICE:
			case PostgreSQLParser.KW_EXIT:
			case PostgreSQLParser.KW_RETURN:
			case PostgreSQLParser.KW_QUERY:
			case PostgreSQLParser.KW_RAISE:
			case PostgreSQLParser.KW_SQLSTATE:
			case PostgreSQLParser.KW_DEBUG:
			case PostgreSQLParser.KW_LOG:
			case PostgreSQLParser.KW_INFO:
			case PostgreSQLParser.KW_NOTICE:
			case PostgreSQLParser.KW_WARNING:
			case PostgreSQLParser.KW_EXCEPTION:
			case PostgreSQLParser.KW_ASSERT:
			case PostgreSQLParser.KW_OPEN:
			case PostgreSQLParser.KW_SKIP_LOCKED:
			case PostgreSQLParser.KW_BUFFER_USAGE_LIMIT:
			case PostgreSQLParser.Identifier:
			case PostgreSQLParser.QuotedIdentifier:
			case PostgreSQLParser.UnicodeQuotedIdentifier:
			case PostgreSQLParser.StringConstant:
			case PostgreSQLParser.UnicodeEscapeStringConstant:
			case PostgreSQLParser.BeginDollarStringConstant:
			case PostgreSQLParser.PLSQLVARIABLENAME:
			case PostgreSQLParser.PLSQLIDENTIFIER:
			case PostgreSQLParser.EscapeStringConstant:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11862;
				this.any_identifier();
				}
				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 opt_exitcond(): Opt_exitcondContext {
		let _localctx: Opt_exitcondContext = new Opt_exitcondContext(this._ctx, this.state);
		this.enterRule(_localctx, 1730, PostgreSQLParser.RULE_opt_exitcond);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11865;
			this.match(PostgreSQLParser.KW_WHEN);
			this.state = 11866;
			this.expr_until_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 any_identifier(): Any_identifierContext {
		let _localctx: Any_identifierContext = new Any_identifierContext(this._ctx, this.state);
		this.enterRule(_localctx, 1732, PostgreSQLParser.RULE_any_identifier);
		try {
			this.state = 11870;
			this._errHandler.sync(this);
			switch ( this.interpreter.adaptivePredict(this._input, 1266, this._ctx) ) {
			case 1:
				this.enterOuterAlt(_localctx, 1);
				{
				this.state = 11868;
				this.colid();
				}
				break;

			case 2:
				this.enterOuterAlt(_localctx, 2);
				{
				this.state = 11869;
				this.plsql_unreserved_keyword();
				}
				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 plsql_unreserved_keyword(): Plsql_unreserved_keywordContext {
		let _localctx: Plsql_unreserved_keywordContext = new Plsql_unreserved_keywordContext(this._ctx, this.state);
		this.enterRule(_localctx, 1734, PostgreSQLParser.RULE_plsql_unreserved_keyword);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11872;
			_la = this._input.LA(1);
			if (!(((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 92)) & ~0x1F) === 0 && ((1 << (_la - 92)) & ((1 << (PostgreSQLParser.KW_TABLE - 92)) | (1 << (PostgreSQLParser.KW_IS - 92)) | (1 << (PostgreSQLParser.KW_OUTER - 92)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (PostgreSQLParser.KW_ABSOLUTE - 130)) | (1 << (PostgreSQLParser.KW_BACKWARD - 130)) | (1 << (PostgreSQLParser.KW_CHAIN - 130)) | (1 << (PostgreSQLParser.KW_CLOSE - 130)) | (1 << (PostgreSQLParser.KW_COMMIT - 130)))) !== 0) || _la === PostgreSQLParser.KW_CONTINUE || _la === PostgreSQLParser.KW_CURSOR || _la === PostgreSQLParser.KW_FIRST || _la === PostgreSQLParser.KW_FORWARD || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & ((1 << (PostgreSQLParser.KW_INSERT - 241)) | (1 << (PostgreSQLParser.KW_LAST - 241)) | (1 << (PostgreSQLParser.KW_MOVE - 241)) | (1 << (PostgreSQLParser.KW_NEXT - 241)) | (1 << (PostgreSQLParser.KW_NO - 241)))) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & ((1 << (PostgreSQLParser.KW_OPTION - 279)) | (1 << (PostgreSQLParser.KW_PRIOR - 279)) | (1 << (PostgreSQLParser.KW_RELATIVE - 279)))) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & ((1 << (PostgreSQLParser.KW_RESET - 313)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 313)) | (1 << (PostgreSQLParser.KW_SCHEMA - 313)) | (1 << (PostgreSQLParser.KW_SCROLL - 313)) | (1 << (PostgreSQLParser.KW_SET - 313)))) !== 0) || _la === PostgreSQLParser.KW_TYPE || _la === PostgreSQLParser.KW_CALL || _la === PostgreSQLParser.KW_CURRENT || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & ((1 << (PostgreSQLParser.KW_ROWTYPE - 477)) | (1 << (PostgreSQLParser.KW_DUMP - 477)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 477)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 477)) | (1 << (PostgreSQLParser.KW_ERROR - 477)) | (1 << (PostgreSQLParser.KW_USE_VARIABLE - 477)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 477)) | (1 << (PostgreSQLParser.KW_ALIAS - 477)) | (1 << (PostgreSQLParser.KW_CONSTANT - 477)) | (1 << (PostgreSQLParser.KW_PERFORM - 477)) | (1 << (PostgreSQLParser.KW_GET - 477)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 477)) | (1 << (PostgreSQLParser.KW_STACKED - 477)) | (1 << (PostgreSQLParser.KW_ELSIF - 477)) | (1 << (PostgreSQLParser.KW_REVERSE - 477)) | (1 << (PostgreSQLParser.KW_SLICE - 477)) | (1 << (PostgreSQLParser.KW_EXIT - 477)) | (1 << (PostgreSQLParser.KW_RETURN - 477)))) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & ((1 << (PostgreSQLParser.KW_QUERY - 509)) | (1 << (PostgreSQLParser.KW_RAISE - 509)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 509)) | (1 << (PostgreSQLParser.KW_DEBUG - 509)) | (1 << (PostgreSQLParser.KW_LOG - 509)) | (1 << (PostgreSQLParser.KW_INFO - 509)) | (1 << (PostgreSQLParser.KW_NOTICE - 509)) | (1 << (PostgreSQLParser.KW_WARNING - 509)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 509)) | (1 << (PostgreSQLParser.KW_ASSERT - 509)) | (1 << (PostgreSQLParser.KW_OPEN - 509)))) !== 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 sql_expression(): Sql_expressionContext {
		let _localctx: Sql_expressionContext = new Sql_expressionContext(this._ctx, this.state);
		this.enterRule(_localctx, 1736, PostgreSQLParser.RULE_sql_expression);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11875;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << PostgreSQLParser.OPEN_PAREN) | (1 << PostgreSQLParser.STAR) | (1 << PostgreSQLParser.PLUS) | (1 << PostgreSQLParser.MINUS) | (1 << PostgreSQLParser.PARAM) | (1 << PostgreSQLParser.Operator))) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & ((1 << (PostgreSQLParser.KW_AND - 33)) | (1 << (PostgreSQLParser.KW_ARRAY - 33)) | (1 << (PostgreSQLParser.KW_CASE - 33)) | (1 << (PostgreSQLParser.KW_CAST - 33)) | (1 << (PostgreSQLParser.KW_COLLATE - 33)) | (1 << (PostgreSQLParser.KW_COLUMN - 33)) | (1 << (PostgreSQLParser.KW_CONSTRAINT - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_CATALOG - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_DATE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_ROLE - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIME - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_TIMESTAMP - 33)) | (1 << (PostgreSQLParser.KW_CURRENT_USER - 33)) | (1 << (PostgreSQLParser.KW_DEFAULT - 33)) | (1 << (PostgreSQLParser.KW_DO - 33)) | (1 << (PostgreSQLParser.KW_FALSE - 33)) | (1 << (PostgreSQLParser.KW_FETCH - 33)))) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & ((1 << (PostgreSQLParser.KW_LOCALTIME - 75)) | (1 << (PostgreSQLParser.KW_LOCALTIMESTAMP - 75)) | (1 << (PostgreSQLParser.KW_NOT - 75)) | (1 << (PostgreSQLParser.KW_NULL - 75)) | (1 << (PostgreSQLParser.KW_SESSION_USER - 75)) | (1 << (PostgreSQLParser.KW_TABLE - 75)) | (1 << (PostgreSQLParser.KW_TRUE - 75)) | (1 << (PostgreSQLParser.KW_UNIQUE - 75)) | (1 << (PostgreSQLParser.KW_USER - 75)) | (1 << (PostgreSQLParser.KW_AUTHORIZATION - 75)))) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & ((1 << (PostgreSQLParser.KW_BINARY - 107)) | (1 << (PostgreSQLParser.KW_COLLATION - 107)) | (1 << (PostgreSQLParser.KW_CONCURRENTLY - 107)) | (1 << (PostgreSQLParser.KW_CROSS - 107)) | (1 << (PostgreSQLParser.KW_CURRENT_SCHEMA - 107)) | (1 << (PostgreSQLParser.KW_FREEZE - 107)) | (1 << (PostgreSQLParser.KW_FULL - 107)) | (1 << (PostgreSQLParser.KW_ILIKE - 107)) | (1 << (PostgreSQLParser.KW_INNER - 107)) | (1 << (PostgreSQLParser.KW_IS - 107)) | (1 << (PostgreSQLParser.KW_ISNULL - 107)) | (1 << (PostgreSQLParser.KW_JOIN - 107)) | (1 << (PostgreSQLParser.KW_LEFT - 107)) | (1 << (PostgreSQLParser.KW_LIKE - 107)) | (1 << (PostgreSQLParser.KW_NATURAL - 107)) | (1 << (PostgreSQLParser.KW_NOTNULL - 107)) | (1 << (PostgreSQLParser.KW_OUTER - 107)) | (1 << (PostgreSQLParser.KW_OVER - 107)) | (1 << (PostgreSQLParser.KW_OVERLAPS - 107)) | (1 << (PostgreSQLParser.KW_RIGHT - 107)) | (1 << (PostgreSQLParser.KW_SIMILAR - 107)) | (1 << (PostgreSQLParser.KW_VERBOSE - 107)) | (1 << (PostgreSQLParser.KW_ABORT - 107)) | (1 << (PostgreSQLParser.KW_ABSOLUTE - 107)) | (1 << (PostgreSQLParser.KW_ACCESS - 107)) | (1 << (PostgreSQLParser.KW_ACTION - 107)) | (1 << (PostgreSQLParser.KW_ADD - 107)) | (1 << (PostgreSQLParser.KW_ADMIN - 107)) | (1 << (PostgreSQLParser.KW_AFTER - 107)) | (1 << (PostgreSQLParser.KW_AGGREGATE - 107)) | (1 << (PostgreSQLParser.KW_ALSO - 107)) | (1 << (PostgreSQLParser.KW_ALTER - 107)))) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & ((1 << (PostgreSQLParser.KW_ALWAYS - 139)) | (1 << (PostgreSQLParser.KW_ASSERTION - 139)) | (1 << (PostgreSQLParser.KW_ASSIGNMENT - 139)) | (1 << (PostgreSQLParser.KW_AT - 139)) | (1 << (PostgreSQLParser.KW_ATTRIBUTE - 139)) | (1 << (PostgreSQLParser.KW_BACKWARD - 139)) | (1 << (PostgreSQLParser.KW_BEFORE - 139)) | (1 << (PostgreSQLParser.KW_BEGIN - 139)) | (1 << (PostgreSQLParser.KW_BY - 139)) | (1 << (PostgreSQLParser.KW_CACHE - 139)) | (1 << (PostgreSQLParser.KW_CALLED - 139)) | (1 << (PostgreSQLParser.KW_CASCADE - 139)) | (1 << (PostgreSQLParser.KW_CASCADED - 139)) | (1 << (PostgreSQLParser.KW_CATALOG - 139)) | (1 << (PostgreSQLParser.KW_CHAIN - 139)) | (1 << (PostgreSQLParser.KW_CHARACTERISTICS - 139)) | (1 << (PostgreSQLParser.KW_CHECKPOINT - 139)) | (1 << (PostgreSQLParser.KW_CLASS - 139)) | (1 << (PostgreSQLParser.KW_CLOSE - 139)) | (1 << (PostgreSQLParser.KW_CLUSTER - 139)) | (1 << (PostgreSQLParser.KW_COMMENT - 139)) | (1 << (PostgreSQLParser.KW_COMMENTS - 139)) | (1 << (PostgreSQLParser.KW_COMMIT - 139)) | (1 << (PostgreSQLParser.KW_COMMITTED - 139)) | (1 << (PostgreSQLParser.KW_CONFIGURATION - 139)) | (1 << (PostgreSQLParser.KW_CONNECTION - 139)) | (1 << (PostgreSQLParser.KW_CONSTRAINTS - 139)) | (1 << (PostgreSQLParser.KW_CONTENT - 139)) | (1 << (PostgreSQLParser.KW_CONTINUE - 139)) | (1 << (PostgreSQLParser.KW_CONVERSION - 139)) | (1 << (PostgreSQLParser.KW_COPY - 139)) | (1 << (PostgreSQLParser.KW_COST - 139)))) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & ((1 << (PostgreSQLParser.KW_CSV - 171)) | (1 << (PostgreSQLParser.KW_CURSOR - 171)) | (1 << (PostgreSQLParser.KW_CYCLE - 171)) | (1 << (PostgreSQLParser.KW_DATA - 171)) | (1 << (PostgreSQLParser.KW_DATABASE - 171)) | (1 << (PostgreSQLParser.KW_DAY - 171)) | (1 << (PostgreSQLParser.KW_DEALLOCATE - 171)) | (1 << (PostgreSQLParser.KW_DECLARE - 171)) | (1 << (PostgreSQLParser.KW_DEFAULTS - 171)) | (1 << (PostgreSQLParser.KW_DEFERRED - 171)) | (1 << (PostgreSQLParser.KW_DEFINER - 171)) | (1 << (PostgreSQLParser.KW_DELETE - 171)) | (1 << (PostgreSQLParser.KW_DELIMITER - 171)) | (1 << (PostgreSQLParser.KW_DELIMITERS - 171)) | (1 << (PostgreSQLParser.KW_DICTIONARY - 171)) | (1 << (PostgreSQLParser.KW_DISABLE - 171)) | (1 << (PostgreSQLParser.KW_DISCARD - 171)) | (1 << (PostgreSQLParser.KW_DOCUMENT - 171)) | (1 << (PostgreSQLParser.KW_DOMAIN - 171)) | (1 << (PostgreSQLParser.KW_DOUBLE - 171)) | (1 << (PostgreSQLParser.KW_DROP - 171)) | (1 << (PostgreSQLParser.KW_EACH - 171)) | (1 << (PostgreSQLParser.KW_ENABLE - 171)) | (1 << (PostgreSQLParser.KW_ENCODING - 171)) | (1 << (PostgreSQLParser.KW_ENCRYPTED - 171)) | (1 << (PostgreSQLParser.KW_ENUM - 171)) | (1 << (PostgreSQLParser.KW_ESCAPE - 171)) | (1 << (PostgreSQLParser.KW_EVENT - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDE - 171)) | (1 << (PostgreSQLParser.KW_EXCLUDING - 171)) | (1 << (PostgreSQLParser.KW_EXCLUSIVE - 171)) | (1 << (PostgreSQLParser.KW_EXECUTE - 171)))) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & ((1 << (PostgreSQLParser.KW_EXPLAIN - 203)) | (1 << (PostgreSQLParser.KW_EXTENSION - 203)) | (1 << (PostgreSQLParser.KW_EXTERNAL - 203)) | (1 << (PostgreSQLParser.KW_FAMILY - 203)) | (1 << (PostgreSQLParser.KW_FIRST - 203)) | (1 << (PostgreSQLParser.KW_FOLLOWING - 203)) | (1 << (PostgreSQLParser.KW_FORCE - 203)) | (1 << (PostgreSQLParser.KW_FORWARD - 203)) | (1 << (PostgreSQLParser.KW_FUNCTION - 203)) | (1 << (PostgreSQLParser.KW_FUNCTIONS - 203)) | (1 << (PostgreSQLParser.KW_GLOBAL - 203)) | (1 << (PostgreSQLParser.KW_GRANTED - 203)) | (1 << (PostgreSQLParser.KW_HANDLER - 203)) | (1 << (PostgreSQLParser.KW_HEADER - 203)) | (1 << (PostgreSQLParser.KW_HOLD - 203)) | (1 << (PostgreSQLParser.KW_HOUR - 203)) | (1 << (PostgreSQLParser.KW_IDENTITY - 203)) | (1 << (PostgreSQLParser.KW_IF - 203)) | (1 << (PostgreSQLParser.KW_IMMEDIATE - 203)) | (1 << (PostgreSQLParser.KW_IMMUTABLE - 203)) | (1 << (PostgreSQLParser.KW_IMPLICIT - 203)) | (1 << (PostgreSQLParser.KW_INCLUDING - 203)) | (1 << (PostgreSQLParser.KW_INCREMENT - 203)) | (1 << (PostgreSQLParser.KW_INDEX - 203)) | (1 << (PostgreSQLParser.KW_INDEXES - 203)) | (1 << (PostgreSQLParser.KW_INHERIT - 203)))) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & ((1 << (PostgreSQLParser.KW_INHERITS - 238)) | (1 << (PostgreSQLParser.KW_INLINE - 238)) | (1 << (PostgreSQLParser.KW_INSENSITIVE - 238)) | (1 << (PostgreSQLParser.KW_INSERT - 238)) | (1 << (PostgreSQLParser.KW_INSTEAD - 238)) | (1 << (PostgreSQLParser.KW_INVOKER - 238)) | (1 << (PostgreSQLParser.KW_ISOLATION - 238)) | (1 << (PostgreSQLParser.KW_KEY - 238)) | (1 << (PostgreSQLParser.KW_LABEL - 238)) | (1 << (PostgreSQLParser.KW_LANGUAGE - 238)) | (1 << (PostgreSQLParser.KW_LARGE - 238)) | (1 << (PostgreSQLParser.KW_LAST - 238)) | (1 << (PostgreSQLParser.KW_LEAKPROOF - 238)) | (1 << (PostgreSQLParser.KW_LEVEL - 238)) | (1 << (PostgreSQLParser.KW_LISTEN - 238)) | (1 << (PostgreSQLParser.KW_LOAD - 238)) | (1 << (PostgreSQLParser.KW_LOCAL - 238)) | (1 << (PostgreSQLParser.KW_LOCATION - 238)) | (1 << (PostgreSQLParser.KW_LOCK - 238)) | (1 << (PostgreSQLParser.KW_MAPPING - 238)) | (1 << (PostgreSQLParser.KW_MATCH - 238)) | (1 << (PostgreSQLParser.KW_MATERIALIZED - 238)) | (1 << (PostgreSQLParser.KW_MAXVALUE - 238)) | (1 << (PostgreSQLParser.KW_MINUTE - 238)) | (1 << (PostgreSQLParser.KW_MINVALUE - 238)) | (1 << (PostgreSQLParser.KW_MODE - 238)) | (1 << (PostgreSQLParser.KW_MONTH - 238)) | (1 << (PostgreSQLParser.KW_MOVE - 238)) | (1 << (PostgreSQLParser.KW_NAME - 238)) | (1 << (PostgreSQLParser.KW_NAMES - 238)) | (1 << (PostgreSQLParser.KW_NEXT - 238)) | (1 << (PostgreSQLParser.KW_NO - 238)))) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & ((1 << (PostgreSQLParser.KW_NOTHING - 270)) | (1 << (PostgreSQLParser.KW_NOTIFY - 270)) | (1 << (PostgreSQLParser.KW_NOWAIT - 270)) | (1 << (PostgreSQLParser.KW_NULLS - 270)) | (1 << (PostgreSQLParser.KW_OBJECT - 270)) | (1 << (PostgreSQLParser.KW_OF - 270)) | (1 << (PostgreSQLParser.KW_OFF - 270)) | (1 << (PostgreSQLParser.KW_OIDS - 270)) | (1 << (PostgreSQLParser.KW_OPERATOR - 270)) | (1 << (PostgreSQLParser.KW_OPTION - 270)) | (1 << (PostgreSQLParser.KW_OPTIONS - 270)) | (1 << (PostgreSQLParser.KW_OWNED - 270)) | (1 << (PostgreSQLParser.KW_OWNER - 270)) | (1 << (PostgreSQLParser.KW_PARSER - 270)) | (1 << (PostgreSQLParser.KW_PARTIAL - 270)) | (1 << (PostgreSQLParser.KW_PARTITION - 270)) | (1 << (PostgreSQLParser.KW_PASSING - 270)) | (1 << (PostgreSQLParser.KW_PASSWORD - 270)) | (1 << (PostgreSQLParser.KW_PLANS - 270)) | (1 << (PostgreSQLParser.KW_PRECEDING - 270)) | (1 << (PostgreSQLParser.KW_PREPARE - 270)) | (1 << (PostgreSQLParser.KW_PREPARED - 270)) | (1 << (PostgreSQLParser.KW_PRESERVE - 270)) | (1 << (PostgreSQLParser.KW_PRIOR - 270)) | (1 << (PostgreSQLParser.KW_PRIVILEGES - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURAL - 270)) | (1 << (PostgreSQLParser.KW_PROCEDURE - 270)) | (1 << (PostgreSQLParser.KW_PROGRAM - 270)) | (1 << (PostgreSQLParser.KW_QUOTE - 270)) | (1 << (PostgreSQLParser.KW_RANGE - 270)) | (1 << (PostgreSQLParser.KW_READ - 270)) | (1 << (PostgreSQLParser.KW_REASSIGN - 270)))) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & ((1 << (PostgreSQLParser.KW_RECHECK - 302)) | (1 << (PostgreSQLParser.KW_RECURSIVE - 302)) | (1 << (PostgreSQLParser.KW_REF - 302)) | (1 << (PostgreSQLParser.KW_REFRESH - 302)) | (1 << (PostgreSQLParser.KW_REINDEX - 302)) | (1 << (PostgreSQLParser.KW_RELATIVE - 302)) | (1 << (PostgreSQLParser.KW_RELEASE - 302)) | (1 << (PostgreSQLParser.KW_RENAME - 302)) | (1 << (PostgreSQLParser.KW_REPEATABLE - 302)) | (1 << (PostgreSQLParser.KW_REPLACE - 302)) | (1 << (PostgreSQLParser.KW_REPLICA - 302)) | (1 << (PostgreSQLParser.KW_RESET - 302)) | (1 << (PostgreSQLParser.KW_RESTART - 302)) | (1 << (PostgreSQLParser.KW_RESTRICT - 302)) | (1 << (PostgreSQLParser.KW_RETURNS - 302)) | (1 << (PostgreSQLParser.KW_REVOKE - 302)) | (1 << (PostgreSQLParser.KW_ROLE - 302)) | (1 << (PostgreSQLParser.KW_ROLLBACK - 302)) | (1 << (PostgreSQLParser.KW_ROWS - 302)) | (1 << (PostgreSQLParser.KW_RULE - 302)) | (1 << (PostgreSQLParser.KW_SAVEPOINT - 302)) | (1 << (PostgreSQLParser.KW_SCHEMA - 302)) | (1 << (PostgreSQLParser.KW_SCROLL - 302)) | (1 << (PostgreSQLParser.KW_SEARCH - 302)) | (1 << (PostgreSQLParser.KW_SECOND - 302)) | (1 << (PostgreSQLParser.KW_SECURITY - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCE - 302)) | (1 << (PostgreSQLParser.KW_SEQUENCES - 302)) | (1 << (PostgreSQLParser.KW_SERIALIZABLE - 302)) | (1 << (PostgreSQLParser.KW_SERVER - 302)) | (1 << (PostgreSQLParser.KW_SESSION - 302)) | (1 << (PostgreSQLParser.KW_SET - 302)))) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & ((1 << (PostgreSQLParser.KW_SHARE - 334)) | (1 << (PostgreSQLParser.KW_SHOW - 334)) | (1 << (PostgreSQLParser.KW_SIMPLE - 334)) | (1 << (PostgreSQLParser.KW_SNAPSHOT - 334)) | (1 << (PostgreSQLParser.KW_STABLE - 334)) | (1 << (PostgreSQLParser.KW_STANDALONE - 334)) | (1 << (PostgreSQLParser.KW_START - 334)) | (1 << (PostgreSQLParser.KW_STATEMENT - 334)) | (1 << (PostgreSQLParser.KW_STATISTICS - 334)) | (1 << (PostgreSQLParser.KW_STDIN - 334)) | (1 << (PostgreSQLParser.KW_STDOUT - 334)) | (1 << (PostgreSQLParser.KW_STORAGE - 334)) | (1 << (PostgreSQLParser.KW_STRICT - 334)) | (1 << (PostgreSQLParser.KW_STRIP - 334)) | (1 << (PostgreSQLParser.KW_SYSID - 334)) | (1 << (PostgreSQLParser.KW_SYSTEM - 334)) | (1 << (PostgreSQLParser.KW_TABLES - 334)) | (1 << (PostgreSQLParser.KW_TABLESPACE - 334)) | (1 << (PostgreSQLParser.KW_TEMP - 334)) | (1 << (PostgreSQLParser.KW_TEMPLATE - 334)) | (1 << (PostgreSQLParser.KW_TEMPORARY - 334)) | (1 << (PostgreSQLParser.KW_TEXT - 334)) | (1 << (PostgreSQLParser.KW_TRANSACTION - 334)) | (1 << (PostgreSQLParser.KW_TRIGGER - 334)) | (1 << (PostgreSQLParser.KW_TRUNCATE - 334)) | (1 << (PostgreSQLParser.KW_TRUSTED - 334)) | (1 << (PostgreSQLParser.KW_TYPE - 334)) | (1 << (PostgreSQLParser.KW_TYPES - 334)) | (1 << (PostgreSQLParser.KW_UNBOUNDED - 334)) | (1 << (PostgreSQLParser.KW_UNCOMMITTED - 334)) | (1 << (PostgreSQLParser.KW_UNENCRYPTED - 334)) | (1 << (PostgreSQLParser.KW_UNKNOWN - 334)))) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & ((1 << (PostgreSQLParser.KW_UNLISTEN - 366)) | (1 << (PostgreSQLParser.KW_UNLOGGED - 366)) | (1 << (PostgreSQLParser.KW_UNTIL - 366)) | (1 << (PostgreSQLParser.KW_UPDATE - 366)) | (1 << (PostgreSQLParser.KW_VACUUM - 366)) | (1 << (PostgreSQLParser.KW_VALID - 366)) | (1 << (PostgreSQLParser.KW_VALIDATE - 366)) | (1 << (PostgreSQLParser.KW_VALIDATOR - 366)) | (1 << (PostgreSQLParser.KW_VARYING - 366)) | (1 << (PostgreSQLParser.KW_VERSION - 366)) | (1 << (PostgreSQLParser.KW_VIEW - 366)) | (1 << (PostgreSQLParser.KW_VOLATILE - 366)) | (1 << (PostgreSQLParser.KW_WHITESPACE - 366)) | (1 << (PostgreSQLParser.KW_WITHOUT - 366)) | (1 << (PostgreSQLParser.KW_WORK - 366)) | (1 << (PostgreSQLParser.KW_WRAPPER - 366)) | (1 << (PostgreSQLParser.KW_WRITE - 366)) | (1 << (PostgreSQLParser.KW_XML - 366)) | (1 << (PostgreSQLParser.KW_YEAR - 366)) | (1 << (PostgreSQLParser.KW_YES - 366)) | (1 << (PostgreSQLParser.KW_ZONE - 366)) | (1 << (PostgreSQLParser.KW_BETWEEN - 366)) | (1 << (PostgreSQLParser.KW_BIGINT - 366)) | (1 << (PostgreSQLParser.KW_BIT - 366)) | (1 << (PostgreSQLParser.KW_BOOLEAN - 366)) | (1 << (PostgreSQLParser.KW_CHAR - 366)) | (1 << (PostgreSQLParser.KW_CHARACTER - 366)) | (1 << (PostgreSQLParser.KW_COALESCE - 366)) | (1 << (PostgreSQLParser.KW_DEC - 366)) | (1 << (PostgreSQLParser.KW_DECIMAL - 366)) | (1 << (PostgreSQLParser.KW_EXISTS - 366)) | (1 << (PostgreSQLParser.KW_EXTRACT - 366)))) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & ((1 << (PostgreSQLParser.KW_FLOAT - 398)) | (1 << (PostgreSQLParser.KW_GREATEST - 398)) | (1 << (PostgreSQLParser.KW_INOUT - 398)) | (1 << (PostgreSQLParser.KW_INT - 398)) | (1 << (PostgreSQLParser.KW_INTEGER - 398)) | (1 << (PostgreSQLParser.KW_INTERVAL - 398)) | (1 << (PostgreSQLParser.KW_LEAST - 398)) | (1 << (PostgreSQLParser.KW_NATIONAL - 398)) | (1 << (PostgreSQLParser.KW_NCHAR - 398)) | (1 << (PostgreSQLParser.KW_NONE - 398)) | (1 << (PostgreSQLParser.KW_NULLIF - 398)) | (1 << (PostgreSQLParser.KW_NUMERIC - 398)) | (1 << (PostgreSQLParser.KW_OVERLAY - 398)) | (1 << (PostgreSQLParser.KW_POSITION - 398)) | (1 << (PostgreSQLParser.KW_PRECISION - 398)) | (1 << (PostgreSQLParser.KW_REAL - 398)) | (1 << (PostgreSQLParser.KW_ROW - 398)) | (1 << (PostgreSQLParser.KW_SETOF - 398)) | (1 << (PostgreSQLParser.KW_SMALLINT - 398)) | (1 << (PostgreSQLParser.KW_SUBSTRING - 398)) | (1 << (PostgreSQLParser.KW_TIME - 398)) | (1 << (PostgreSQLParser.KW_TIMESTAMP - 398)) | (1 << (PostgreSQLParser.KW_TREAT - 398)) | (1 << (PostgreSQLParser.KW_TRIM - 398)) | (1 << (PostgreSQLParser.KW_VALUES - 398)) | (1 << (PostgreSQLParser.KW_VARCHAR - 398)) | (1 << (PostgreSQLParser.KW_XMLATTRIBUTES - 398)) | (1 << (PostgreSQLParser.KW_XMLCONCAT - 398)) | (1 << (PostgreSQLParser.KW_XMLELEMENT - 398)) | (1 << (PostgreSQLParser.KW_XMLEXISTS - 398)) | (1 << (PostgreSQLParser.KW_XMLFOREST - 398)) | (1 << (PostgreSQLParser.KW_XMLPARSE - 398)))) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & ((1 << (PostgreSQLParser.KW_XMLPI - 430)) | (1 << (PostgreSQLParser.KW_XMLROOT - 430)) | (1 << (PostgreSQLParser.KW_XMLSERIALIZE - 430)) | (1 << (PostgreSQLParser.KW_CALL - 430)) | (1 << (PostgreSQLParser.KW_CURRENT - 430)) | (1 << (PostgreSQLParser.KW_ATTACH - 430)) | (1 << (PostgreSQLParser.KW_DETACH - 430)) | (1 << (PostgreSQLParser.KW_EXPRESSION - 430)) | (1 << (PostgreSQLParser.KW_GENERATED - 430)) | (1 << (PostgreSQLParser.KW_LOGGED - 430)) | (1 << (PostgreSQLParser.KW_STORED - 430)) | (1 << (PostgreSQLParser.KW_INCLUDE - 430)) | (1 << (PostgreSQLParser.KW_ROUTINE - 430)) | (1 << (PostgreSQLParser.KW_TRANSFORM - 430)) | (1 << (PostgreSQLParser.KW_IMPORT - 430)) | (1 << (PostgreSQLParser.KW_POLICY - 430)) | (1 << (PostgreSQLParser.KW_METHOD - 430)) | (1 << (PostgreSQLParser.KW_REFERENCING - 430)) | (1 << (PostgreSQLParser.KW_NEW - 430)) | (1 << (PostgreSQLParser.KW_OLD - 430)) | (1 << (PostgreSQLParser.KW_VALUE - 430)) | (1 << (PostgreSQLParser.KW_SUBSCRIPTION - 430)) | (1 << (PostgreSQLParser.KW_PUBLICATION - 430)) | (1 << (PostgreSQLParser.KW_OUT - 430)) | (1 << (PostgreSQLParser.KW_ROUTINES - 430)) | (1 << (PostgreSQLParser.KW_SCHEMAS - 430)) | (1 << (PostgreSQLParser.KW_PROCEDURES - 430)) | (1 << (PostgreSQLParser.KW_INPUT - 430)) | (1 << (PostgreSQLParser.KW_SUPPORT - 430)) | (1 << (PostgreSQLParser.KW_PARALLEL - 430)) | (1 << (PostgreSQLParser.KW_SQL - 430)))) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & ((1 << (PostgreSQLParser.KW_DEPENDS - 462)) | (1 << (PostgreSQLParser.KW_OVERRIDING - 462)) | (1 << (PostgreSQLParser.KW_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_SKIP - 462)) | (1 << (PostgreSQLParser.KW_LOCKED - 462)) | (1 << (PostgreSQLParser.KW_TIES - 462)) | (1 << (PostgreSQLParser.KW_ROLLUP - 462)) | (1 << (PostgreSQLParser.KW_CUBE - 462)) | (1 << (PostgreSQLParser.KW_GROUPING - 462)) | (1 << (PostgreSQLParser.KW_SETS - 462)) | (1 << (PostgreSQLParser.KW_TABLESAMPLE - 462)) | (1 << (PostgreSQLParser.KW_ORDINALITY - 462)) | (1 << (PostgreSQLParser.KW_XMLTABLE - 462)) | (1 << (PostgreSQLParser.KW_COLUMNS - 462)) | (1 << (PostgreSQLParser.KW_XMLNAMESPACES - 462)) | (1 << (PostgreSQLParser.KW_ROWTYPE - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZED - 462)) | (1 << (PostgreSQLParser.KW_WITHIN - 462)) | (1 << (PostgreSQLParser.KW_FILTER - 462)) | (1 << (PostgreSQLParser.KW_GROUPS - 462)) | (1 << (PostgreSQLParser.KW_OTHERS - 462)) | (1 << (PostgreSQLParser.KW_NFC - 462)) | (1 << (PostgreSQLParser.KW_NFD - 462)) | (1 << (PostgreSQLParser.KW_NFKC - 462)) | (1 << (PostgreSQLParser.KW_NFKD - 462)) | (1 << (PostgreSQLParser.KW_UESCAPE - 462)) | (1 << (PostgreSQLParser.KW_VIEWS - 462)) | (1 << (PostgreSQLParser.KW_NORMALIZE - 462)) | (1 << (PostgreSQLParser.KW_DUMP - 462)) | (1 << (PostgreSQLParser.KW_PRINT_STRICT_PARAMS - 462)) | (1 << (PostgreSQLParser.KW_VARIABLE_CONFLICT - 462)) | (1 << (PostgreSQLParser.KW_ERROR - 462)))) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & ((1 << (PostgreSQLParser.KW_USE_VARIABLE - 494)) | (1 << (PostgreSQLParser.KW_USE_COLUMN - 494)) | (1 << (PostgreSQLParser.KW_ALIAS - 494)) | (1 << (PostgreSQLParser.KW_CONSTANT - 494)) | (1 << (PostgreSQLParser.KW_PERFORM - 494)) | (1 << (PostgreSQLParser.KW_GET - 494)) | (1 << (PostgreSQLParser.KW_DIAGNOSTICS - 494)) | (1 << (PostgreSQLParser.KW_STACKED - 494)) | (1 << (PostgreSQLParser.KW_ELSIF - 494)) | (1 << (PostgreSQLParser.KW_REVERSE - 494)) | (1 << (PostgreSQLParser.KW_SLICE - 494)) | (1 << (PostgreSQLParser.KW_EXIT - 494)) | (1 << (PostgreSQLParser.KW_RETURN - 494)) | (1 << (PostgreSQLParser.KW_QUERY - 494)) | (1 << (PostgreSQLParser.KW_RAISE - 494)) | (1 << (PostgreSQLParser.KW_SQLSTATE - 494)) | (1 << (PostgreSQLParser.KW_DEBUG - 494)) | (1 << (PostgreSQLParser.KW_LOG - 494)) | (1 << (PostgreSQLParser.KW_INFO - 494)) | (1 << (PostgreSQLParser.KW_NOTICE - 494)) | (1 << (PostgreSQLParser.KW_WARNING - 494)) | (1 << (PostgreSQLParser.KW_EXCEPTION - 494)) | (1 << (PostgreSQLParser.KW_ASSERT - 494)) | (1 << (PostgreSQLParser.KW_OPEN - 494)))) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & ((1 << (PostgreSQLParser.KW_SKIP_LOCKED - 547)) | (1 << (PostgreSQLParser.KW_BUFFER_USAGE_LIMIT - 547)) | (1 << (PostgreSQLParser.Identifier - 547)) | (1 << (PostgreSQLParser.QuotedIdentifier - 547)) | (1 << (PostgreSQLParser.UnicodeQuotedIdentifier - 547)) | (1 << (PostgreSQLParser.StringConstant - 547)) | (1 << (PostgreSQLParser.UnicodeEscapeStringConstant - 547)) | (1 << (PostgreSQLParser.BeginDollarStringConstant - 547)) | (1 << (PostgreSQLParser.BinaryStringConstant - 547)) | (1 << (PostgreSQLParser.HexadecimalStringConstant - 547)) | (1 << (PostgreSQLParser.Integral - 547)) | (1 << (PostgreSQLParser.Numeric - 547)) | (1 << (PostgreSQLParser.PLSQLVARIABLENAME - 547)) | (1 << (PostgreSQLParser.PLSQLIDENTIFIER - 547)))) !== 0) || _la === PostgreSQLParser.EscapeStringConstant) {
				{
				this.state = 11874;
				this.opt_target_list();
				}
			}

			this.state = 11878;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_INTO) {
				{
				this.state = 11877;
				this.into_clause();
				}
			}

			this.state = 11881;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_FROM) {
				{
				this.state = 11880;
				this.from_clause();
				}
			}

			this.state = 11884;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WHERE) {
				{
				this.state = 11883;
				this.where_clause();
				}
			}

			this.state = 11887;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_GROUP) {
				{
				this.state = 11886;
				this.group_clause();
				}
			}

			this.state = 11890;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_HAVING) {
				{
				this.state = 11889;
				this.having_clause();
				}
			}

			this.state = 11893;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_WINDOW) {
				{
				this.state = 11892;
				this.window_clause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expr_until_then(): Expr_until_thenContext {
		let _localctx: Expr_until_thenContext = new Expr_until_thenContext(this._ctx, this.state);
		this.enterRule(_localctx, 1738, PostgreSQLParser.RULE_expr_until_then);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11895;
			this.sql_expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expr_until_semi(): Expr_until_semiContext {
		let _localctx: Expr_until_semiContext = new Expr_until_semiContext(this._ctx, this.state);
		this.enterRule(_localctx, 1740, PostgreSQLParser.RULE_expr_until_semi);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11897;
			this.sql_expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expr_until_rightbracket(): Expr_until_rightbracketContext {
		let _localctx: Expr_until_rightbracketContext = new Expr_until_rightbracketContext(this._ctx, this.state);
		this.enterRule(_localctx, 1742, PostgreSQLParser.RULE_expr_until_rightbracket);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11899;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public expr_until_loop(): Expr_until_loopContext {
		let _localctx: Expr_until_loopContext = new Expr_until_loopContext(this._ctx, this.state);
		this.enterRule(_localctx, 1744, PostgreSQLParser.RULE_expr_until_loop);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11901;
			this.a_expr();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public make_execsql_stmt(): Make_execsql_stmtContext {
		let _localctx: Make_execsql_stmtContext = new Make_execsql_stmtContext(this._ctx, this.state);
		this.enterRule(_localctx, 1746, PostgreSQLParser.RULE_make_execsql_stmt);
		let _la: number;
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11903;
			this.stmt();
			this.state = 11905;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la === PostgreSQLParser.KW_INTO) {
				{
				this.state = 11904;
				this.opt_returning_clause_into();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				_localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return _localctx;
	}
	// @RuleVersion(0)
	public opt_returning_clause_into(): Opt_returning_clause_intoContext {
		let _localctx: Opt_returning_clause_intoContext = new Opt_returning_clause_intoContext(this._ctx, this.state);
		this.enterRule(_localctx, 1748, PostgreSQLParser.RULE_opt_returning_clause_into);
		try {
			this.enterOuterAlt(_localctx, 1);
			{
			this.state = 11907;
			this.match(PostgreSQLParser.KW_INTO);
			this.state = 11908;
			this.opt_strict();
			this.state = 11909;
			this.into_target();
			}
		}
		catch (re) {
			if (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 626:
			return this.b_expr_sempred(_localctx as B_exprContext, predIndex);
		}
		return true;
	}
	private b_expr_sempred(_localctx: B_exprContext, predIndex: number): boolean {
		switch (predIndex) {
		case 0:
			return this.precpred(this._ctx, 8);

		case 1:
			return this.precpred(this._ctx, 7);

		case 2:
			return this.precpred(this._ctx, 6);

		case 3:
			return this.precpred(this._ctx, 5);

		case 4:
			return this.precpred(this._ctx, 4);

		case 5:
			return this.precpred(this._ctx, 10);

		case 6:
			return this.precpred(this._ctx, 2);

		case 7:
			return this.precpred(this._ctx, 1);
		}
		return true;
	}

	private static readonly _serializedATNSegments: number = 22;
	private static readonly _serializedATNSegment0: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\u0250\u2E8A\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\x04\u01A6\t\u01A6\x04" +
		"\u01A7\t\u01A7\x04\u01A8\t\u01A8\x04\u01A9\t\u01A9\x04\u01AA\t\u01AA\x04" +
		"\u01AB\t\u01AB\x04\u01AC\t\u01AC\x04\u01AD\t\u01AD\x04\u01AE\t\u01AE\x04" +
		"\u01AF\t\u01AF\x04\u01B0\t\u01B0\x04\u01B1\t\u01B1\x04\u01B2\t\u01B2\x04" +
		"\u01B3\t\u01B3\x04\u01B4\t\u01B4\x04\u01B5\t\u01B5\x04\u01B6\t\u01B6\x04" +
		"\u01B7\t\u01B7\x04\u01B8\t\u01B8\x04\u01B9\t\u01B9\x04\u01BA\t\u01BA\x04" +
		"\u01BB\t\u01BB\x04\u01BC\t\u01BC\x04\u01BD\t\u01BD\x04\u01BE\t\u01BE\x04" +
		"\u01BF\t\u01BF\x04\u01C0\t\u01C0\x04\u01C1\t\u01C1\x04\u01C2\t\u01C2\x04" +
		"\u01C3\t\u01C3\x04\u01C4\t\u01C4\x04\u01C5\t\u01C5\x04\u01C6\t\u01C6\x04" +
		"\u01C7\t\u01C7\x04\u01C8\t\u01C8\x04\u01C9\t\u01C9\x04\u01CA\t\u01CA\x04" +
		"\u01CB\t\u01CB\x04\u01CC\t\u01CC\x04\u01CD\t\u01CD\x04\u01CE\t\u01CE\x04" +
		"\u01CF\t\u01CF\x04\u01D0\t\u01D0\x04\u01D1\t\u01D1\x04\u01D2\t\u01D2\x04" +
		"\u01D3\t\u01D3\x04\u01D4\t\u01D4\x04\u01D5\t\u01D5\x04\u01D6\t\u01D6\x04" +
		"\u01D7\t\u01D7\x04\u01D8\t\u01D8\x04\u01D9\t\u01D9\x04\u01DA\t\u01DA\x04" +
		"\u01DB\t\u01DB\x04\u01DC\t\u01DC\x04\u01DD\t\u01DD\x04\u01DE\t\u01DE\x04" +
		"\u01DF\t\u01DF\x04\u01E0\t\u01E0\x04\u01E1\t\u01E1\x04\u01E2\t\u01E2\x04" +
		"\u01E3\t\u01E3\x04\u01E4\t\u01E4\x04\u01E5\t\u01E5\x04\u01E6\t\u01E6\x04" +
		"\u01E7\t\u01E7\x04\u01E8\t\u01E8\x04\u01E9\t\u01E9\x04\u01EA\t\u01EA\x04" +
		"\u01EB\t\u01EB\x04\u01EC\t\u01EC\x04\u01ED\t\u01ED\x04\u01EE\t\u01EE\x04" +
		"\u01EF\t\u01EF\x04\u01F0\t\u01F0\x04\u01F1\t\u01F1\x04\u01F2\t\u01F2\x04" +
		"\u01F3\t\u01F3\x04\u01F4\t\u01F4\x04\u01F5\t\u01F5\x04\u01F6\t\u01F6\x04" +
		"\u01F7\t\u01F7\x04\u01F8\t\u01F8\x04\u01F9\t\u01F9\x04\u01FA\t\u01FA\x04" +
		"\u01FB\t\u01FB\x04\u01FC\t\u01FC\x04\u01FD\t\u01FD\x04\u01FE\t\u01FE\x04" +
		"\u01FF\t\u01FF\x04\u0200\t\u0200\x04\u0201\t\u0201\x04\u0202\t\u0202\x04" +
		"\u0203\t\u0203\x04\u0204\t\u0204\x04\u0205\t\u0205\x04\u0206\t\u0206\x04" +
		"\u0207\t\u0207\x04\u0208\t\u0208\x04\u0209\t\u0209\x04\u020A\t\u020A\x04" +
		"\u020B\t\u020B\x04\u020C\t\u020C\x04\u020D\t\u020D\x04\u020E\t\u020E\x04" +
		"\u020F\t\u020F\x04\u0210\t\u0210\x04\u0211\t\u0211\x04\u0212\t\u0212\x04" +
		"\u0213\t\u0213\x04\u0214\t\u0214\x04\u0215\t\u0215\x04\u0216\t\u0216\x04" +
		"\u0217\t\u0217\x04\u0218\t\u0218\x04\u0219\t\u0219\x04\u021A\t\u021A\x04" +
		"\u021B\t\u021B\x04\u021C\t\u021C\x04\u021D\t\u021D\x04\u021E\t\u021E\x04" +
		"\u021F\t\u021F\x04\u0220\t\u0220\x04\u0221\t\u0221\x04\u0222\t\u0222\x04" +
		"\u0223\t\u0223\x04\u0224\t\u0224\x04\u0225\t\u0225\x04\u0226\t\u0226\x04" +
		"\u0227\t\u0227\x04\u0228\t\u0228\x04\u0229\t\u0229\x04\u022A\t\u022A\x04" +
		"\u022B\t\u022B\x04\u022C\t\u022C\x04\u022D\t\u022D\x04\u022E\t\u022E\x04" +
		"\u022F\t\u022F\x04\u0230\t\u0230\x04\u0231\t\u0231\x04\u0232\t\u0232\x04" +
		"\u0233\t\u0233\x04\u0234\t\u0234\x04\u0235\t\u0235\x04\u0236\t\u0236\x04" +
		"\u0237\t\u0237\x04\u0238\t\u0238\x04\u0239\t\u0239\x04\u023A\t\u023A\x04" +
		"\u023B\t\u023B\x04\u023C\t\u023C\x04\u023D\t\u023D\x04\u023E\t\u023E\x04" +
		"\u023F\t\u023F\x04\u0240\t\u0240\x04\u0241\t\u0241\x04\u0242\t\u0242\x04" +
		"\u0243\t\u0243\x04\u0244\t\u0244\x04\u0245\t\u0245\x04\u0246\t\u0246\x04" +
		"\u0247\t\u0247\x04\u0248\t\u0248\x04\u0249\t\u0249\x04\u024A\t\u024A\x04" +
		"\u024B\t\u024B\x04\u024C\t\u024C\x04\u024D\t\u024D\x04\u024E\t\u024E\x04" +
		"\u024F\t\u024F\x04\u0250\t\u0250\x04\u0251\t\u0251\x04\u0252\t\u0252\x04" +
		"\u0253\t\u0253\x04\u0254\t\u0254\x04\u0255\t\u0255\x04\u0256\t\u0256\x04" +
		"\u0257\t\u0257\x04\u0258\t\u0258\x04\u0259\t\u0259\x04\u025A\t\u025A\x04" +
		"\u025B\t\u025B\x04\u025C\t\u025C\x04\u025D\t\u025D\x04\u025E\t\u025E\x04" +
		"\u025F\t\u025F\x04\u0260\t\u0260\x04\u0261\t\u0261\x04\u0262\t\u0262\x04" +
		"\u0263\t\u0263\x04\u0264\t\u0264\x04\u0265\t\u0265\x04\u0266\t\u0266\x04" +
		"\u0267\t\u0267\x04\u0268\t\u0268\x04\u0269\t\u0269\x04\u026A\t\u026A\x04" +
		"\u026B\t\u026B\x04\u026C\t\u026C\x04\u026D\t\u026D\x04\u026E\t\u026E\x04" +
		"\u026F\t\u026F\x04\u0270\t\u0270\x04\u0271\t\u0271\x04\u0272\t\u0272\x04" +
		"\u0273\t\u0273\x04\u0274\t\u0274\x04\u0275\t\u0275\x04\u0276\t\u0276\x04" +
		"\u0277\t\u0277\x04\u0278\t\u0278\x04\u0279\t\u0279\x04\u027A\t\u027A\x04" +
		"\u027B\t\u027B\x04\u027C\t\u027C\x04\u027D\t\u027D\x04\u027E\t\u027E\x04" +
		"\u027F\t\u027F\x04\u0280\t\u0280\x04\u0281\t\u0281\x04\u0282\t\u0282\x04" +
		"\u0283\t\u0283\x04\u0284\t\u0284\x04\u0285\t\u0285\x04\u0286\t\u0286\x04" +
		"\u0287\t\u0287\x04\u0288\t\u0288\x04\u0289\t\u0289\x04\u028A\t\u028A\x04" +
		"\u028B\t\u028B\x04\u028C\t\u028C\x04\u028D\t\u028D\x04\u028E\t\u028E\x04" +
		"\u028F\t\u028F\x04\u0290\t\u0290\x04\u0291\t\u0291\x04\u0292\t\u0292\x04" +
		"\u0293\t\u0293\x04\u0294\t\u0294\x04\u0295\t\u0295\x04\u0296\t\u0296\x04" +
		"\u0297\t\u0297\x04\u0298\t\u0298\x04\u0299\t\u0299\x04\u029A\t\u029A\x04" +
		"\u029B\t\u029B\x04\u029C\t\u029C\x04\u029D\t\u029D\x04\u029E\t\u029E\x04" +
		"\u029F\t\u029F\x04\u02A0\t\u02A0\x04\u02A1\t\u02A1\x04\u02A2\t\u02A2\x04" +
		"\u02A3\t\u02A3\x04\u02A4\t\u02A4\x04\u02A5\t\u02A5\x04\u02A6\t\u02A6\x04" +
		"\u02A7\t\u02A7\x04\u02A8\t\u02A8\x04\u02A9\t\u02A9\x04\u02AA\t\u02AA\x04" +
		"\u02AB\t\u02AB\x04\u02AC\t\u02AC\x04\u02AD\t\u02AD\x04\u02AE\t\u02AE\x04" +
		"\u02AF\t\u02AF\x04\u02B0\t\u02B0\x04\u02B1\t\u02B1\x04\u02B2\t\u02B2\x04" +
		"\u02B3\t\u02B3\x04\u02B4\t\u02B4\x04\u02B5\t\u02B5\x04\u02B6\t\u02B6\x04" +
		"\u02B7\t\u02B7\x04\u02B8\t\u02B8\x04\u02B9\t\u02B9\x04\u02BA\t\u02BA\x04" +
		"\u02BB\t\u02BB\x04\u02BC\t\u02BC\x04\u02BD\t\u02BD\x04\u02BE\t\u02BE\x04" +
		"\u02BF\t\u02BF\x04\u02C0\t\u02C0\x04\u02C1\t\u02C1\x04\u02C2\t\u02C2\x04" +
		"\u02C3\t\u02C3\x04\u02C4\t\u02C4\x04\u02C5\t\u02C5\x04\u02C6\t\u02C6\x04" +
		"\u02C7\t\u02C7\x04\u02C8\t\u02C8\x04\u02C9\t\u02C9\x04\u02CA\t\u02CA\x04" +
		"\u02CB\t\u02CB\x04\u02CC\t\u02CC\x04\u02CD\t\u02CD\x04\u02CE\t\u02CE\x04" +
		"\u02CF\t\u02CF\x04\u02D0\t\u02D0\x04\u02D1\t\u02D1\x04\u02D2\t\u02D2\x04" +
		"\u02D3\t\u02D3\x04\u02D4\t\u02D4\x04\u02D5\t\u02D5\x04\u02D6\t\u02D6\x04" +
		"\u02D7\t\u02D7\x04\u02D8\t\u02D8\x04\u02D9\t\u02D9\x04\u02DA\t\u02DA\x04" +
		"\u02DB\t\u02DB\x04\u02DC\t\u02DC\x04\u02DD\t\u02DD\x04\u02DE\t\u02DE\x04" +
		"\u02DF\t\u02DF\x04\u02E0\t\u02E0\x04\u02E1\t\u02E1\x04\u02E2\t\u02E2\x04" +
		"\u02E3\t\u02E3\x04\u02E4\t\u02E4\x04\u02E5\t\u02E5\x04\u02E6\t\u02E6\x04" +
		"\u02E7\t\u02E7\x04\u02E8\t\u02E8\x04\u02E9\t\u02E9\x04\u02EA\t\u02EA\x04" +
		"\u02EB\t\u02EB\x04\u02EC\t\u02EC\x04\u02ED\t\u02ED\x04\u02EE\t\u02EE\x04" +
		"\u02EF\t\u02EF\x04\u02F0\t\u02F0\x04\u02F1\t\u02F1\x04\u02F2\t\u02F2\x04" +
		"\u02F3\t\u02F3\x04\u02F4\t\u02F4\x04\u02F5\t\u02F5\x04\u02F6\t\u02F6\x04" +
		"\u02F7\t\u02F7\x04\u02F8\t\u02F8\x04\u02F9\t\u02F9\x04\u02FA\t\u02FA\x04" +
		"\u02FB\t\u02FB\x04\u02FC\t\u02FC\x04\u02FD\t\u02FD\x04\u02FE\t\u02FE\x04" +
		"\u02FF\t\u02FF\x04\u0300\t\u0300\x04\u0301\t\u0301\x04\u0302\t\u0302\x04" +
		"\u0303\t\u0303\x04\u0304\t\u0304\x04\u0305\t\u0305\x04\u0306\t\u0306\x04" +
		"\u0307\t\u0307\x04\u0308\t\u0308\x04\u0309\t\u0309\x04\u030A\t\u030A\x04" +
		"\u030B\t\u030B\x04\u030C\t\u030C\x04\u030D\t\u030D\x04\u030E\t\u030E\x04" +
		"\u030F\t\u030F\x04\u0310\t\u0310\x04\u0311\t\u0311\x04\u0312\t\u0312\x04" +
		"\u0313\t\u0313\x04\u0314\t\u0314\x04\u0315\t\u0315\x04\u0316\t\u0316\x04" +
		"\u0317\t\u0317\x04\u0318\t\u0318\x04\u0319\t\u0319\x04\u031A\t\u031A\x04" +
		"\u031B\t\u031B\x04\u031C\t\u031C\x04\u031D\t\u031D\x04\u031E\t\u031E\x04" +
		"\u031F\t\u031F\x04\u0320\t\u0320\x04\u0321\t\u0321\x04\u0322\t\u0322\x04" +
		"\u0323\t\u0323\x04\u0324\t\u0324\x04\u0325\t\u0325\x04\u0326\t\u0326\x04" +
		"\u0327\t\u0327\x04\u0328\t\u0328\x04\u0329\t\u0329\x04\u032A\t\u032A\x04" +
		"\u032B\t\u032B\x04\u032C\t\u032C\x04\u032D\t\u032D\x04\u032E\t\u032E\x04" +
		"\u032F\t\u032F\x04\u0330\t\u0330\x04\u0331\t\u0331\x04\u0332\t\u0332\x04" +
		"\u0333\t\u0333\x04\u0334\t\u0334\x04\u0335\t\u0335\x04\u0336\t\u0336\x04" +
		"\u0337\t\u0337\x04\u0338\t\u0338\x04\u0339\t\u0339\x04\u033A\t\u033A\x04" +
		"\u033B\t\u033B\x04\u033C\t\u033C\x04\u033D\t\u033D\x04\u033E\t\u033E\x04" +
		"\u033F\t\u033F\x04\u0340\t\u0340\x04\u0341\t\u0341\x04\u0342\t\u0342\x04" +
		"\u0343\t\u0343\x04\u0344\t\u0344\x04\u0345\t\u0345\x04\u0346\t\u0346\x04" +
		"\u0347\t\u0347\x04\u0348\t\u0348\x04\u0349\t\u0349\x04\u034A\t\u034A\x04" +
		"\u034B\t\u034B\x04\u034C\t\u034C\x04\u034D\t\u034D\x04\u034E\t\u034E\x04" +
		"\u034F\t\u034F\x04\u0350\t\u0350\x04\u0351\t\u0351\x04\u0352\t\u0352\x04" +
		"\u0353\t\u0353\x04\u0354\t\u0354\x04\u0355\t\u0355\x04\u0356\t\u0356\x04" +
		"\u0357\t\u0357\x04\u0358\t\u0358\x04\u0359\t\u0359\x04\u035A\t\u035A\x04" +
		"\u035B\t\u035B\x04\u035C\t\u035C\x04\u035D\t\u035D\x04\u035E\t\u035E\x04" +
		"\u035F\t\u035F\x04\u0360\t\u0360\x04\u0361\t\u0361\x04\u0362\t\u0362\x04" +
		"\u0363\t\u0363\x04\u0364\t\u0364\x04\u0365\t\u0365\x04\u0366\t\u0366\x04" +
		"\u0367\t\u0367\x04\u0368\t\u0368\x04\u0369\t\u0369\x04\u036A\t\u036A\x04" +
		"\u036B\t\u036B\x04\u036C\t\u036C\x03\x02\x07\x02\u06DA\n\x02\f\x02\x0E" +
		"\x02\u06DD\v\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04\x03\x04\x05\x04" +
		"\u06E5\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03" +
		"\x05\x03\x05\x05\x05\u075C\n\x05\x03\x06\x03\x06\x05\x06\u0760\n\x06\x03" +
		"\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x05\b\u0769\n\b\x03\b\x03" +
		"\b\x03\t\x03\t\x03\n\x07\n\u0770\n\n\f\n\x0E\n\u0773\v\n\x03\v\x07\v\u0776" +
		"\n\v\f\v\x0E\v\u0779\v\v\x03\f\x03\f\x03\f\x05\f\u077E\n\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\u079E\n\f\x03\r\x03\r\x03\r\x03\r\x03" +
		"\r\x03\r\x03\r\x03\r\x03\r\x03\r\x05\r\u07AA\n\r\x03\x0E\x03\x0E\x03\x0E" +
		"\x03\x0E\x05\x0E\u07B0\n\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03" +
		"\x0F\x05\x0F\u07B8\n\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10" +
		"\x05\x10\u07C0\n\x10\x03\x11\x03\x11\x03\x11\x03\x11\x05\x11\u07C6\n\x11" +
		"\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x05\x12\u07CF" +
		"\n\x12\x03\x12\x03\x12\x03\x13\x03\x13\x05\x13\u07D5\n\x13\x03\x13\x03" +
		"\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05" +
		"\x13\u07E1\n\x13\x03\x13\x03\x13\x03\x13\x03\x13\x05\x13\u07E7\n\x13\x03" +
		"\x14\x03\x14\x07\x14\u07EB\n\x14\f\x14\x0E\x14\u07EE\v\x14\x03\x15\x03" +
		"\x15\x03\x15\x03\x15\x05\x15\u07F4\n\x15\x03\x15\x03\x15\x05\x15\u07F8" +
		"\n\x15\x03\x15\x03\x15\x03\x15\x05\x15\u07FD\n\x15\x03\x15\x03\x15\x05" +
		"\x15\u0801\n\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" +
		"\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u080E\n\x15\x03\x15\x03\x15\x03" +
		"\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x05\x15\u0819\n\x15" +
		"\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\u081F\n\x16\x03\x16\x03\x16\x03" +
		"\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03" +
		"\x19\x03\x19\x03\x19\x05\x19\u082F\n\x19\x03\x19\x05\x19\u0832\n\x19\x03" +
		"\x19\x03\x19\x03\x19\x05\x19\u0837\n\x19\x03\x19\x03\x19\x03\x1A\x03\x1A" +
		"\x05\x1A\u083D\n\x1A\x03\x1B\x07\x1B\u0840\n\x1B\f\x1B\x0E\x1B\u0843\v" +
		"\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x05\x1C\u084B\n\x1C" +
		"\x03\x1D\x03\x1D\x05\x1D\u084F\n\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03" +
		"\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x05\x1E\u085B\n\x1E\x03\x1F" +
		"\x03\x1F\x05\x1F\u085F\n\x1F\x03\x1F\x05\x1F\u0862\n\x1F\x03\x1F\x03\x1F" +
		"\x05\x1F\u0866\n\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03" +
		" \x03 \x03 \x03 \x03 \x05 \u0876\n \x03 \x03 \x03 \x03 \x03 \x03 \x03" +
		" \x03 \x03 \x03 \x03 \x05 \u0883\n \x03!\x03!\x03!\x07!\u0888\n!\f!\x0E" +
		"!\u088B\v!\x03\"\x03\"\x03\"\x07\"\u0890\n\"\f\"\x0E\"\u0893\v\"\x03#" +
		"\x03#\x05#\u0897\n#\x03$\x03$\x03$\x03$\x03$\x05$\u089E\n$\x03%\x03%\x03" +
		"%\x03%\x05%\u08A4\n%\x03&\x03&\x03&\x03&\x05&\u08AA\n&\x03\'\x03\'\x03" +
		"\'\x03\'\x03\'\x05\'\u08B1\n\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03" +
		"\'\x03\'\x03\'\x05\'\u08BC\n\'\x03(\x03(\x05(\u08C0\n(\x03)\x03)\x05)" +
		"\u08C4\n)\x03*\x03*\x05*\u08C8\n*\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03" +
		",\x03,\x03,\x03,\x05,\u08D5\n,\x03-\x03-\x05-\u08D9\n-\x03.\x03.\x03." +
		"\x05.\u08DE\n.\x03/\x03/\x03/\x05/\u08E3\n/\x030\x030\x030\x030\x030\x03" +
		"0\x030\x030\x030\x030\x050\u08EF\n0\x031\x031\x031\x031\x031\x032\x03" +
		"2\x052\u08F8\n2\x033\x033\x034\x034\x035\x035\x035\x036\x036\x036\x05" +
		"6\u0904\n6\x036\x036\x036\x056\u0909\n6\x036\x036\x036\x036\x036\x036" +
		"\x036\x036\x036\x056\u0914\n6\x036\x036\x036\x036\x056\u091A\n6\x036\x03" +
		"6\x036\x056\u091F\n6\x036\x036\x036\x036\x036\x036\x036\x036\x056\u0929" +
		"\n6\x036\x036\x036\x056\u092E\n6\x036\x036\x036\x036\x036\x056\u0935\n" +
		"6\x036\x036\x036\x056\u093A\n6\x036\x036\x036\x056\u093F\n6\x036\x036" +
		"\x036\x036\x036\x036\x036\x036\x036\x056\u094A\n6\x036\x036\x036\x036" +
		"\x056\u0950\n6\x036\x036\x036\x056\u0955\n6\x036\x036\x036\x036\x036\x03" +
		"6\x056\u095D\n6\x036\x036\x036\x036\x036\x036\x036\x056\u0966\n6\x036" +
		"\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x036\x056\u0975" +
		"\n6\x036\x036\x036\x036\x056\u097B\n6\x036\x036\x036\x036\x056\u0981\n" +
		"6\x036\x036\x036\x056\u0986\n6\x037\x037\x037\x077\u098B\n7\f7\x0E7\u098E" +
		"\v7\x038\x038\x038\x038\x038\x038\x038";
	private static readonly _serializedATNSegment1: string =
		"\x038\x038\x058\u0999\n8\x039\x039\x039\x039\x079\u099F\n9\f9\x0E9\u09A2" +
		"\v9\x039\x039\x03:\x03:\x03:\x05:\u09A9\n:\x03;\x03;\x03;\x03;\x03;\x03" +
		";\x03;\x03;\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x05<\u09BB\n<\x03" +
		"=\x03=\x03=\x03=\x03>\x03>\x05>\u09C3\n>\x03>\x05>\u09C6\n>\x03>\x03>" +
		"\x03>\x05>\u09CB\n>\x03>\x03>\x03>\x03>\x03>\x05>\u09D2\n>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x05>\u09DB\n>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x05>\u09E4\n>\x03>\x03>\x03>\x03>\x05>\u09EA\n>\x03>\x03>\x05>\u09EE" +
		"\n>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u09F7\n>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x05>\u0A00\n>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u0A08" +
		"\n>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u0A10\n>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x05>\u0A19\n>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u0A22" +
		"\n>\x03>\x03>\x05>\u0A26\n>\x03>\x03>\x03>\x03>\x03>\x05>\u0A2D\n>\x03" +
		">\x03>\x03>\x03>\x05>\u0A33\n>\x03>\x03>\x05>\u0A37\n>\x03>\x05>\u0A3A" +
		"\n>\x03>\x03>\x05>\u0A3E\n>\x03>\x03>\x05>\u0A42\n>\x03>\x03>\x05>\u0A46" +
		"\n>\x03>\x03>\x03>\x05>\u0A4B\n>\x03>\x05>\u0A4E\n>\x03>\x03>\x05>\u0A52" +
		"\n>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x05>\u0A64\n>\x03>\x03>\x05>\u0A68\n>\x03>\x03>\x03>\x03>" +
		"\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03" +
		">\x03>\x03>\x03>\x03>\x03>\x05>\u0AC7\n>\x03?\x03?\x03?\x03?\x03?\x05" +
		"?\u0ACE\n?\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03C\x03C\x03C\x03" +
		"C\x03C\x03C\x05C\u0ADE\nC\x03D\x03D\x03D\x03D\x03E\x03E\x03E\x03F\x03" +
		"F\x03F\x07F\u0AEA\nF\fF\x0EF\u0AED\vF\x03G\x03G\x03G\x03G\x03G\x03G\x03" +
		"G\x05G\u0AF6\nG\x05G\u0AF8\nG\x03H\x06H\u0AFB\nH\rH\x0EH\u0AFC\x03I\x03" +
		"I\x05I\u0B01\nI\x03I\x05I\u0B04\nI\x03I\x03I\x03I\x03I\x05I\u0B0A\nI\x05" +
		"I\u0B0C\nI\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03" +
		"J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03J\x03" +
		"J\x05J\u0B28\nJ\x03K\x03K\x03K\x03L\x03L\x03L\x07L\u0B30\nL\fL\x0EL\u0B33" +
		"\vL\x03M\x03M\x03M\x03M\x03M\x03N\x03N\x03N\x07N\u0B3D\nN\fN\x0EN\u0B40" +
		"\vN\x03O\x03O\x03O\x03O\x05O\u0B46\nO\x03O\x03O\x03O\x05O\u0B4B\nO\x03" +
		"O\x03O\x05O\u0B4F\nO\x03O\x03O\x03O\x03O\x05O\u0B55\nO\x03O\x03O\x03O" +
		"\x05O\u0B5A\nO\x03O\x05O\u0B5D\nO\x05O\u0B5F\nO\x03P\x03P\x03P\x05P\u0B64" +
		"\nP\x03Q\x03Q\x05Q\u0B68\nQ\x03Q\x03Q\x05Q\u0B6C\nQ\x03Q\x03Q\x05Q\u0B70" +
		"\nQ\x03Q\x03Q\x05Q\u0B74\nQ\x03Q\x05Q\u0B77\nQ\x03Q\x03Q\x05Q\u0B7B\n" +
		"Q\x03Q\x03Q\x03Q\x03Q\x03Q\x03Q\x05Q\u0B83\nQ\x03Q\x03Q\x05Q\u0B87\nQ" +
		"\x03Q\x03Q\x05Q\u0B8B\nQ\x03R\x03R\x03S\x03S\x03T\x03T\x03T\x05T\u0B94" +
		"\nT\x03U\x03U\x03U\x03U\x03U\x05U\u0B9B\nU\x03V\x07V\u0B9E\nV\fV\x0EV" +
		"\u0BA1\vV\x03W\x03W\x03W\x03W\x05W\u0BA7\nW\x03W\x03W\x03W\x05W\u0BAC" +
		"\nW\x03W\x03W\x03W\x03W\x03W\x05W\u0BB3\nW\x03W\x03W\x03W\x05W\u0BB8\n" +
		"W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03W\x03" +
		"W\x03W\x03W\x05W\u0BCA\nW\x03X\x03X\x03Y\x05Y\u0BCF\nY\x03Y\x03Y\x03Y" +
		"\x03Z\x03Z\x03[\x03[\x03[\x07[\u0BD9\n[\f[\x0E[\u0BDC\v[\x03\\\x03\\\x05" +
		"\\\u0BE0\n\\\x03]\x03]\x03]\x03]\x03]\x03]\x03]\x05]\u0BE9\n]\x03^\x03" +
		"^\x03^\x07^\u0BEE\n^\f^\x0E^\u0BF1\v^\x03_\x03_\x03`\x03`\x05`\u0BF7\n" +
		"`\x03`\x03`\x05`\u0BFB\n`\x03`\x03`\x03`\x05`\u0C00\n`\x03`\x03`\x05`" +
		"\u0C04\n`\x03`\x05`\u0C07\n`\x03`\x05`\u0C0A\n`\x03`\x05`\u0C0D\n`\x03" +
		"`\x05`\u0C10\n`\x03`\x05`\u0C13\n`\x03`\x03`\x03`\x05`\u0C18\n`\x03`\x05" +
		"`\u0C1B\n`\x03`\x05`\u0C1E\n`\x03`\x05`\u0C21\n`\x03`\x05`\u0C24\n`\x03" +
		"`\x05`\u0C27\n`\x03`\x03`\x03`\x03`\x05`\u0C2D\n`\x03`\x03`\x05`\u0C31" +
		"\n`\x03`\x05`\u0C34\n`\x03`\x05`\u0C37\n`\x03`\x05`\u0C3A\n`\x03`\x05" +
		"`\u0C3D\n`\x05`\u0C3F\n`\x03a\x03a\x03a\x03a\x03a\x03a\x03a\x05a\u0C48" +
		"\na\x03b\x03b\x03c\x03c\x03d\x03d\x03d\x03d\x03e\x03e\x03e\x07e\u0C55" +
		"\ne\fe\x0Ee\u0C58\ve\x03f\x03f\x03f\x07f\u0C5D\nf\ff\x0Ef\u0C60\vf\x03" +
		"g\x03g\x03g\x05g\u0C65\ng\x03h\x03h\x05h\u0C69\nh\x03i\x03i\x03i\x05i" +
		"\u0C6E\ni\x03i\x05i\u0C71\ni\x03i\x05i\u0C74\ni\x03i\x03i\x05i\u0C78\n" +
		"i\x03i\x03i\x05i\u0C7C\ni\x03i\x03i\x03j\x03j\x03j\x05j\u0C83\nj\x03j" +
		"\x05j\u0C86\nj\x03j\x05j\u0C89\nj\x03j\x03j\x05j\u0C8D\nj\x03j\x03j\x05" +
		"j\u0C91\nj\x03j\x03j\x03k\x03k\x03k\x03l\x03l\x03l\x03l\x03l\x03l\x03" +
		"l\x05l\u0C9F\nl\x03m\x03m\x03m\x05m\u0CA4\nm\x03m\x03m\x03n\x07n\u0CA9" +
		"\nn\fn\x0En\u0CAC\vn\x03o\x03o\x05o\u0CB0\no\x03o\x03o\x05o\u0CB4\no\x03" +
		"o\x05o\u0CB7\no\x03o\x03o\x05o\u0CBB\no\x03o\x05o\u0CBE\no\x05o\u0CC0" +
		"\no\x03p\x03p\x03p\x03p\x03p\x05p\u0CC7\np\x03p\x05p\u0CCA\np\x03p\x03" +
		"p\x05p\u0CCE\np\x03p\x03p\x03p\x03p\x05p\u0CD4\np\x03p\x05p\u0CD7\np\x03" +
		"p\x03p\x03p\x03p\x03p\x05p\u0CDE\np\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
		"p\x05p\u0CE7\np\x03p\x03p\x03p\x03p\x03p\x05p\u0CEE\np\x03p\x03p\x03p" +
		"\x05p\u0CF3\np\x03p\x05p\u0CF6\np\x03p\x05p\u0CF9\np\x03p\x05p\u0CFC\n" +
		"p\x03q\x03q\x05q\u0D00\nq\x03q\x03q\x03r\x03r\x03r\x05r\u0D07\nr\x03s" +
		"\x03s\x03s\x05s\u0D0C\ns\x03t\x03t\x03t\x03u\x03u\x03u\x03u\x03v\x03v" +
		"\x07v\u0D17\nv\fv\x0Ev\u0D1A\vv\x03w\x03w\x03x\x03x\x03x\x03x\x03x\x05" +
		"x\u0D23\nx\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x05" +
		"y\u0D30\ny\x03y\x05y\u0D33\ny\x03y\x05y\u0D36\ny\x03y\x03y\x03y\x03y\x03" +
		"y\x05y\u0D3D\ny\x03y\x03y\x03y\x03y\x03y\x03y\x05y\u0D45\ny\x03y\x05y" +
		"\u0D48\ny\x03y\x05y\u0D4B\ny\x03y\x03y\x03y\x03y\x03y\x05y\u0D52\ny\x03" +
		"y\x03y\x05y\u0D56\ny\x03y\x03y\x03y\x03y\x05y\u0D5C\ny\x03y\x05y\u0D5F" +
		"\ny\x03y\x05y\u0D62\ny\x03y\x05y\u0D65\ny\x03y\x03y\x03y\x03y\x03y\x03" +
		"y\x03y\x03y\x03y\x03y\x05y\u0D71\ny\x03y\x05y\u0D74\ny\x03y\x05y\u0D77" +
		"\ny\x03y\x03y\x05y\u0D7B\ny\x03z\x03z\x03z\x03{\x03{\x03{\x03{\x03|\x03" +
		"|\x03|\x07|\u0D87\n|\f|\x0E|\u0D8A\v|\x03}\x03}\x03}\x03}\x03}\x03~\x03" +
		"~\x03~\x03\x7F\x03\x7F\x03\x7F\x07\x7F\u0D97\n\x7F\f\x7F\x0E\x7F\u0D9A" +
		"\v\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80\x03\x80" +
		"\x05\x80\u0DA4\n\x80\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x82\x03" +
		"\x82\x03\x82\x03\x82\x03\x82\x03\x82\x03\x82\x03\x82\x05\x82\u0DB3\n\x82" +
		"\x03\x83\x03\x83\x03\x83\x03\x83\x03\x84\x03\x84\x03\x84\x03\x84\x03\x85" +
		"\x03\x85\x03\x85\x03\x85\x03\x85\x03\x85\x03\x85\x05\x85\u0DC4\n\x85\x05" +
		"\x85\u0DC6\n\x85\x03\x86\x03\x86\x03\x86\x03\x86\x03\x86\x03\x87\x03\x87" +
		"\x03\x88\x03\x88\x03\x88\x03\x88\x03\x88\x03\x88\x03\x88\x03\x89\x03\x89" +
		"\x03\x89\x07\x89\u0DD9\n\x89\f\x89\x0E\x89\u0DDC\v\x89\x03\x8A\x03\x8A" +
		"\x05\x8A\u0DE0\n\x8A\x03\x8A\x05\x8A\u0DE3\n\x8A\x03\x8A\x03\x8A\x05\x8A" +
		"\u0DE7\n\x8A\x03\x8A\x05\x8A\u0DEA\n\x8A\x03\x8A\x03\x8A\x03\x8A\x03\x8A" +
		"\x05\x8A\u0DF0\n\x8A\x03\x8A\x05\x8A\u0DF3\n\x8A\x05\x8A\u0DF5\n\x8A\x03" +
		"\x8B\x03\x8B\x03\x8B\x03\x8C\x03\x8C\x03\x8C\x03\x8C\x03\x8C\x03\x8C\x05" +
		"\x8C\u0E00\n\x8C\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8D" +
		"\x05\x8D\u0E09\n\x8D\x03\x8E\x03\x8E\x03\x8E\x03\x8F\x05\x8F\u0E0F\n\x8F" +
		"\x03\x8F\x05\x8F\u0E12\n\x8F\x03\x8F\x05\x8F\u0E15\n\x8F\x03\x90\x03\x90" +
		"\x03\x90\x03\x90\x03\x90\x03\x91\x03\x91\x03\x91\x03\x91\x03\x92\x03\x92" +
		"\x03\x92\x05\x92\u0E23\n\x92\x03\x92\x05\x92\u0E26\n\x92\x03\x92\x05\x92" +
		"\u0E29\n\x92\x03\x92\x03\x92\x03\x92\x05\x92\u0E2E\n\x92\x03\x92\x03\x92" +
		"\x03\x92\x03\x93\x03\x93\x03\x93\x05\x93\u0E36\n\x93\x03\x93\x03\x93\x03" +
		"\x93\x03\x93\x03\x93\x03\x94\x03\x94\x05\x94\u0E3F\n\x94\x03\x94\x03\x94" +
		"\x05\x94\u0E43\n\x94\x03\x94\x03\x94\x03\x94\x03\x94\x05\x94\u0E49\n\x94" +
		"\x03\x95\x03\x95\x05\x95\u0E4D\n\x95\x03\x95\x05\x95\u0E50\n\x95\x03\x95" +
		"\x05\x95\u0E53\n\x95\x03\x95\x05\x95\u0E56\n\x95\x03\x95\x05\x95\u0E59" +
		"\n\x95\x03\x96\x03\x96\x03\x96\x03\x96\x05\x96\u0E5F\n\x96\x03\x97\x03" +
		"\x97\x05\x97\u0E63\n\x97\x03\x97\x03\x97\x03\x97\x05\x97\u0E68\n\x97\x03" +
		"\x97\x03\x97\x03\x97\x03\x97\x05\x97\u0E6E\n\x97\x03\x98\x03\x98\x05\x98" +
		"\u0E72\n\x98\x03\x98\x05\x98\u0E75\n\x98\x03\x98\x05\x98\u0E78\n\x98\x03" +
		"\x98\x05\x98\u0E7B\n\x98\x03\x99\x03\x99\x03\x9A\x03\x9A\x03\x9A\x03\x9A" +
		"\x05\x9A\u0E83\n\x9A\x03\x9A\x03\x9A\x05\x9A\u0E87\n\x9A\x03\x9B\x03\x9B" +
		"\x05\x9B\u0E8B\n\x9B\x03\x9B\x03\x9B\x05\x9B\u0E8F\n\x9B\x03\x9B\x03\x9B" +
		"\x05\x9B\u0E93\n\x9B\x03\x9C\x03\x9C\x03\x9C\x05\x9C\u0E98\n\x9C\x03\x9C" +
		"\x03\x9C\x03\x9C\x03\x9D\x03\x9D\x03\x9E\x03\x9E\x03\x9E\x03\x9E\x03\x9F" +
		"\x06\x9F\u0EA4\n\x9F\r\x9F\x0E\x9F\u0EA5\x03\xA0\x03\xA0\x03\xA0\x03\xA0" +
		"\x03\xA0\x03\xA0\x03\xA0\x05\xA0\u0EAF\n\xA0\x03\xA0\x03\xA0\x03\xA0\x03" +
		"\xA0\x03\xA0\x03\xA0\x03\xA0\x03\xA0\x03\xA0\x03\xA0\x03\xA0\x03\xA0\x03" +
		"\xA0\x03\xA0\x03\xA0\x05\xA0\u0EC0\n\xA0\x03\xA0\x03\xA0\x03\xA0\x05\xA0" +
		"\u0EC5\n\xA0\x03\xA0\x05\xA0\u0EC8\n\xA0\x05\xA0\u0ECA\n\xA0\x03\xA1\x03" +
		"\xA1\x03\xA2\x03\xA2\x03\xA2\x03\xA2\x03\xA2\x03\xA2\x05\xA2\u0ED4\n\xA2" +
		"\x03\xA3\x03\xA3\x03\xA3\x07\xA3\u0ED9\n\xA3\f\xA3\x0E\xA3\u0EDC\v\xA3" +
		"\x03\xA4\x03\xA4\x05\xA4\u0EE0\n\xA4\x03\xA4\x05\xA4\u0EE3\n\xA4\x03\xA4" +
		"\x05\xA4\u0EE6\n\xA4\x03\xA4\x03\xA4\x03\xA4\x03\xA4\x03\xA4\x05\xA4\u0EED" +
		"\n\xA4\x03\xA4\x05\xA4\u0EF0\n\xA4\x05\xA4\u0EF2\n\xA4\x03\xA5\x03\xA5" +
		"\x03\xA6\x03\xA6\x05\xA6\u0EF8\n\xA6\x03\xA7\x03\xA7\x03\xA7\x03\xA8\x03" +
		"\xA8\x03\xA8\x03\xA8\x05\xA8\u0F01\n\xA8\x03\xA9\x03\xA9\x03\xAA\x03\xAA" +
		"\x03\xAB\x03\xAB\x03\xAB\x03\xAB\x05\xAB\u0F0B\n\xAB\x03\xAB\x03\xAB\x03" +
		"\xAB\x05\xAB\u0F10\n\xAB\x03\xAC\x03\xAC\x03\xAC\x03\xAD\x03\xAD\x03\xAD" +
		"\x05\xAD\u0F18\n\xAD\x03\xAD\x03\xAD\x05\xAD\u0F1C\n\xAD\x03\xAD\x03\xAD" +
		"\x03\xAE\x07\xAE\u0F21\n\xAE\f\xAE\x0E\xAE\u0F24\v\xAE\x03\xAF\x03\xAF" +
		"\x03\xAF\x03\xAF\x03\xAF\x03\xAF\x03\xAF\x05\xAF\u0F2D\n\xAF\x03\xB0\x03" +
		"\xB0\x03\xB0\x03\xB0\x03\xB0\x03\xB0\x03\xB1\x07\xB1\u0F36\n\xB1\f\xB1" +
		"\x0E\xB1\u0F39\v\xB1\x03\xB2\x03\xB2\x03\xB2\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03" +
		"\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x03\xB3\x05" +
		"\xB3\u0FA4\n\xB3\x03\xB4\x03\xB4\x03\xB4\x03\xB4\x03\xB4\x03\xB4\x05\xB4" +
		"\u0FAC\n\xB4\x03\xB4\x05\xB4\u0FAF\n\xB4\x03\xB5\x03\xB5\x03\xB5\x03\xB5" +
		"\x03\xB5\x03\xB5\x03\xB5\x03\xB5\x05\xB5\u0FB9\n\xB5\x03\xB6\x06\xB6\u0FBC" +
		"\n\xB6\r\xB6\x0E\xB6\u0FBD\x03\xB7\x03\xB7\x03\xB8\x03\xB8\x03\xB8\x03" +
		"\xB8\x03\xB8\x03\xB8\x05\xB8\u0FC8\n\xB8\x03\xB8\x03\xB8\x03\xB8\x03\xB8" +
		"\x03\xB8\x03\xB8\x03\xB8\x03\xB8\x03\xB8\x05\xB8\u0FD3\n\xB8\x03\xB9\x03" +
		"\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xBA\x03\xBA\x03\xBA\x07\xBA\u0FDD\n\xBA" +
		"\f\xBA\x0E\xBA\u0FE0\v\xBA\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03\xBB\x03" +
		"\xBC\x03\xBC\x03\xBC\x07\xBC\u0FEA\n\xBC\f\xBC\x0E\xBC\u0FED\v\xBC\x03" +
		"\xBD\x03\xBD\x03\xBD\x03\xBD\x03\xBD\x03\xBD\x03\xBD\x05\xBD\u0FF6\n\xBD" +
		"\x03\xBE\x03\xBE\x03\xBE\x03\xBF\x03\xBF\x03\xC0\x03\xC0\x03\xC1\x03\xC1" +
		"\x03\xC1\x05\xC1\u1002\n\xC1\x03\xC1\x03\xC1\x05\xC1\u1006\n\xC1\x03\xC1" +
		"\x05\xC1\u1009\n\xC1\x03\xC1\x03\xC1\x03\xC1\x03\xC1\x03\xC1\x05\xC1\u1010" +
		"\n\xC1\x03\xC2\x03\xC2\x03\xC2\x03\xC3\x03\xC3\x03\xC3\x05\xC3\u1018\n" +
		"\xC3\x03\xC4\x03\xC4\x03\xC5\x03\xC5\x03\xC5\x03\xC5\x03\xC5\x03\xC5\x05" +
		"\xC5\u1022\n\xC5\x05\xC5\u1024\n\xC5\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x05" +
		"\xC6\u102A\n\xC6\x03\xC6\x03\xC6\x03\xC6\x05\xC6\u102F\n\xC6\x03\xC6\x03" +
		"\xC6\x05\xC6\u1033\n\xC6\x03\xC6\x03\xC6\x03\xC6\x05\xC6\u1038\n\xC6\x03" +
		"\xC6\x03\xC6\x03\xC6\x03\xC6\x05\xC6\u103E\n\xC6\x03\xC6\x03\xC6\x03\xC6" +
		"\x03\xC6\x03\xC6\x05\xC6\u1045\n\xC6\x03\xC6\x03\xC6\x03\xC6\x03\xC6\x05" +
		"\xC6\u104B\n\xC6\x05\xC6\u104D\n\xC6\x03\xC7\x03\xC7\x03\xC7\x03\xC7\x03" +
		"\xC7\x05\xC7\u1054\n\xC7\x03\xC7\x03\xC7\x03\xC7\x03\xC7\x03\xC7\x03\xC7" +
		"\x05\xC7\u105C\n\xC7\x03\xC8\x03\xC8\x03\xC8\x05\xC8\u1061\n\xC8\x03\xC9" +
		"\x03\xC9\x03\xC9\x03\xC9\x03\xC9\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x05\xCA" +
		"\u106C\n\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x03\xCA\x05\xCA\u1073\n\xCA" +
		"\x03\xCB\x03\xCB\x05\xCB\u1077\n\xCB\x03\xCC\x03\xCC\x03\xCC\x03\xCC\x03" +
		"\xCC\x03\xCC\x03\xCC\x03\xCC\x03\xCC\x03\xCD\x03\xCD\x03\xCD\x03\xCD\x03" +
		"\xCD\x03\xCD\x05\xCD\u1088\n\xCD\x03\xCD\x05\xCD\u108B\n\xCD\x03\xCD\x05" +
		"\xCD\u108E\n\xCD\x03\xCD\x05\xCD\u1091\n\xCD\x03\xCD\x05\xCD\u1094\n\xCD" +
		"\x03\xCE\x03\xCE\x03\xCE\x03\xCE\x03\xCE\x03\xCE\x05\xCE\u109C\n\xCE\x03" +
		"\xCE\x05\xCE\u109F\n\xCE\x03\xCE\x05\xCE\u10A2\n\xCE\x03\xCF\x03\xCF\x03" +
		"\xCF\x03\xCF\x05\xCF\u10A8\n\xCF\x03\xCF\x03\xCF\x03\xD0\x03\xD0\x07\xD0" +
		"\u10AE\n\xD0\f\xD0\x0E\xD0\u10B1\v\xD0\x03\xD0\x05\xD0\u10B4\n\xD0\x03" +
		"\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x03" +
		"\xD0\x05\xD0\u10C0\n\xD0\x03\xD0\x03\xD0\x03\xD0\x03\xD0\x05\xD0\u10C6" +
		"\n\xD0\x03\xD1\x05\xD1\u10C9\n\xD1\x03\xD1\x03\xD1\x03\xD1\x05\xD1\u10CE" +
		"\n\xD1\x03\xD1\x03\xD1\x05\xD1\u10D2\n\xD1\x03\xD1\x03\xD1\x03\xD1\x03" +
		"\xD1\x03\xD1\x05\xD1\u10D9\n\xD1\x03\xD1\x03\xD1\x03\xD1\x03\xD1\x03\xD1" +
		"\x03\xD1\x03\xD1\x03\xD1\x03\xD1\x05\xD1\u10E4\n\xD1\x03\xD2\x03\xD2\x03" +
		"\xD2\x03\xD2\x03\xD2\x03\xD3\x03\xD3\x03\xD3\x03\xD3\x03\xD3\x03\xD3\x03" +
		"\xD4\x03\xD4\x03\xD4\x03\xD5\x03\xD5\x03\xD5\x03\xD6\x03\xD6\x03\xD6\x03" +
		"\xD6\x05\xD6\u10FB\n\xD6\x03\xD7\x03\xD7\x03\xD7\x03\xD8\x03\xD8\x03\xD9" +
		"\x03\xD9\x03\xD9\x03\xD9\x03\xD9\x03\xD9\x03\xD9\x03\xD9\x03\xD9\x03\xDA" +
		"\x03\xDA\x03\xDB\x03\xDB\x05\xDB\u110F\n\xDB\x03\xDB\x03\xDB\x03\xDB\x03" +
		"\xDB\x03\xDB\x03\xDB\x03\xDB\x05\xDB\u1118\n\xDB\x03\xDB\x05\xDB\u111B" +
		"\n\xDB\x03\xDB\x05\xDB\u111E\n\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03" +
		"\xDB\x03\xDB\x03\xDB\x03\xDB\x05\xDB\u1128\n\xDB\x03\xDB\x05\xDB\u112B" +
		"\n\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x05\xDB" +
		"\u1134\n\xDB\x03\xDB\x03\xDB\x05\xDB\u1138\n\xDB\x03\xDB\x05\xDB\u113B" +
		"\n\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x03\xDB\x05\xDB\u1143\n" +
		"\xDB\x03\xDC\x03\xDC\x03\xDC\x03\xDC\x05\xDC\u1149\n\xDC\x03\xDD\x03\xDD" +
		"\x05\xDD\u114D\n\xDD\x03\xDD\x03\xDD\x03\xDE\x03\xDE\x03\xDF\x03\xDF\x03" +
		"\xDF\x07\xDF\u1156\n\xDF\f\xDF\x0E\xDF\u1159\v\xDF\x03\xE0\x03\xE0\x03" +
		"\xE0\x03\xE0\x03\xE0\x03\xE0\x03\xE0\x05\xE0\u1162\n\xE0\x03\xE1\x03\xE1" +
		"\x03\xE1\x03\xE2\x06\xE2\u1168\n\xE2\r\xE2\x0E\xE2\u1169\x03\xE3\x03\xE3" +
		"\x03\xE3\x05\xE3\u116F\n\xE3\x03\xE3\x03\xE3\x03\xE4\x03\xE4\x03\xE5\x03" +
		"\xE5\x03\xE6\x03\xE6\x03\xE7\x03\xE7\x05\xE7\u117B\n\xE7\x03\xE7\x03\xE7" +
		"\x03\xE8\x03\xE8\x03\xE9\x03\xE9\x03\xEA\x03\xEA\x03\xEA\x03\xEA\x03\xEA" +
		"\x03\xEB\x03\xEB\x03\xEB\x03\xEB\x05\xEB\u118C\n\xEB\x03\xEC\x03\xEC\x05" +
		"\xEC\u1190\n\xEC\x03\xEC\x03\xEC\x07\xEC\u1194\n\xEC\f\xEC\x0E\xEC\u1197" +
		"\v\xEC\x03\xED\x03\xED\x03\xED\x03\xED\x05\xED\u119D\n\xED\x03\xEE\x03" +
		"\xEE\x03\xEE\x03\xEF\x07\xEF\u11A3\n\xEF\f\xEF\x0E\xEF\u11A6\v\xEF\x03" +
		"\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03\xF0\x03" +
		"\xF0\x03\xF0\x05\xF0\u11B3\n\xF0\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1" +
		"\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1" +
		"\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1\x03\xF1" +
		"\x03\xF1\x05\xF1\u11CD\n\xF1\x03\xF2\x03\xF2\x03\xF2\x07\xF2\u11D2\n\xF2" +
		"\f\xF2\x0E\xF2\u11D5\v\xF2\x03\xF3\x03\xF3\x03\xF3\x03\xF3\x03\xF3\x03" +
		"\xF3\x03\xF4\x03\xF4\x03\xF4\x07\xF4\u11E0\n\xF4\f\xF4\x0E\xF4\u11E3\v" +
		"\xF4\x03\xF5\x03\xF5\x03\xF5\x03\xF5\x03\xF5\x03\xF5\x03\xF6\x03\xF6\x03" +
		"\xF6\x03\xF6\x03\xF6\x03\xF6\x05\xF6\u11F1\n\xF6\x03\xF7\x03\xF7\x03\xF7" +
		"\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x03\xF7\x03\xF8\x03\xF8\x05\xF8" +
		"\u11FE\n\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x05" +
		"\xF8\u1207\n\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8" +
		"\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8" +
		"\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x05\xF8\u1220" +
		"\n\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8" +
		"\x03\xF8\x05\xF8\u122B\n\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03" +
		"\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03" +
		"\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03" +
		"\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03" +
		"\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x05\xF8\u1255" +
		"\n\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x05\xF8\u125D\n" +
		"\xF8\x03\xF8\x03\xF8\x03\xF8\x03\xF8\x05\xF8\u1263\n\xF8\x03\xF9\x03\xF9" +
		"\x03\xF9\x03\xF9\x03\xFA\x03\xFA\x03\xFA\x07\xFA\u126C\n\xFA\f\xFA\x0E" +
		"\xFA\u126F\v\xFA\x03\xFB\x03\xFB\x03\xFB\x05\xFB\u1274\n\xFB\x03\xFC\x03" +
		"\xFC\x03\xFC\x03\xFC\x03\xFC\x03\xFC\x05\xFC\u127C\n\xFC\x03\xFD\x03\xFD" +
		"\x03\xFD\x03\xFD\x03\xFE\x03\xFE\x03\xFE\x07\xFE\u1285\n\xFE\f\xFE\x0E" +
		"\xFE\u1288\v\xFE\x03\xFF\x03\xFF\x03\xFF\x03\xFF\x03\u0100\x03\u0100\x03" +
		"\u0101\x03\u0101\x03\u0101\x07\u0101\u1293\n\u0101\f\u0101\x0E\u0101\u1296" +
		"\v\u0101\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x05" +
		"\u0102\u129E\n\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102" +
		"\x03\u0102\x03\u0102\x03\u0102\x05\u0102\u12A8\n\u0102\x03\u0102\x03\u0102" +
		"\x03\u0102\x03";
	private static readonly _serializedATNSegment2: string =
		"\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x05" +
		"\u0102\u12B4\n\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102" +
		"\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102\x03\u0102" +
		"\x03\u0102\x05\u0102\u12C3\n\u0102\x03\u0103\x03\u0103\x03\u0103\x03\u0103" +
		"\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x05\u0104\u12CE\n\u0104" +
		"\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0104\x05\u0104" +
		"\u12D6\n\u0104\x03\u0104\x03\u0104\x03\u0104\x03\u0105\x03\u0105\x03\u0105" +
		"\x07\u0105\u12DE\n\u0105\f\u0105\x0E\u0105\u12E1\v\u0105\x03\u0106\x03" +
		"\u0106\x03\u0106\x03\u0106\x05\u0106\u12E7\n\u0106\x03\u0106\x05\u0106" +
		"\u12EA\n\u0106\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x05\u0106\u12F0" +
		"\n\u0106\x03\u0106\x05\u0106\u12F3\n\u0106\x03\u0106\x03\u0106\x03\u0106" +
		"\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x03\u0106\x03\u0106" +
		"\x03\u0106\x03\u0106\x03\u0106\x05\u0106\u1302\n\u0106\x03\u0107\x03\u0107" +
		"\x03\u0108\x03\u0108\x03\u0108\x03\u0109\x03\u0109\x03\u0109\x03\u0109" +
		"\x03\u0109\x03\u0109\x05\u0109\u130F\n\u0109\x03\u010A\x03\u010A\x03\u010B" +
		"\x03\u010B\x03\u010B\x03\u010B\x03\u010B\x03\u010B\x03\u010B\x03\u010C" +
		"\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C" +
		"\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C\x03\u010C" +
		"\x03\u010C\x03\u010C\x03\u010C\x05\u010C\u132C\n\u010C\x03\u010D\x03\u010D" +
		"\x03\u010D\x07\u010D\u1331\n\u010D\f\u010D\x0E\u010D\u1334\v\u010D\x03" +
		"\u010E\x03\u010E\x03\u010E\x03\u010E\x03\u010E\x03\u010E\x03\u010E\x03" +
		"\u010E\x03\u010E\x03\u010E\x03\u010E\x03\u010E\x05\u010E\u1342\n\u010E" +
		"\x03\u010F\x03\u010F\x03\u010F\x03\u010F\x03\u010F\x03\u010F\x03\u010F" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u134E\n\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1352\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1357" +
		"\n\u0110\x03\u0110\x03\u0110\x05\u0110\u135B\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u1360\n\u0110\x03\u0110\x03\u0110\x05\u0110\u1364" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u136A\n\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u136E\n\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1373\n\u0110\x03\u0110\x03\u0110\x05\u0110\u1377\n\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u137D\n\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u1381\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u1386\n\u0110\x03\u0110\x03\u0110\x05\u0110\u138A\n\u0110\x03\u0110\x03" +
		"\u0110\x03\u0110\x05\u0110\u138F\n\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u1393\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1398\n\u0110\x03" +
		"\u0110\x03\u0110\x05\u0110\u139C\n\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u13A3\n\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u13A7\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u13AE\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13B2\n\u0110\x03\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u13B9\n\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u13BD\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u13C4\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13C8" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u13CE\n\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u13D2\n\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u13D8\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13DC" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u13E1\n\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u13E5\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u13EC\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13F0" +
		"\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13F4\n\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u13F8\n\u0110\x03\u0110\x03\u0110\x05\u0110\u13FC\n\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x05\u0110\u1401\n\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1405\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u140A" +
		"\n\u0110\x03\u0110\x03\u0110\x05\u0110\u140E\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u1413\n\u0110\x03\u0110\x03\u0110\x05\u0110\u1417" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u141C\n\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1422\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x05\u0110\u1427\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u142D\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1432" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1438\n\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u143D\n\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1441\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1446" +
		"\n\u0110\x03\u0110\x03\u0110\x05\u0110\u144A\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u1450\n\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u1454\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1459\n\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1461" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1467\n\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u146D\n\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1473\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u1479\n\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x05\u0110\u1480\n\u0110\x03\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1485\n\u0110\x03\u0110\x03\u0110\x05\u0110\u1489\n\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x05\u0110\u148E\n\u0110\x03\u0110\x03\u0110" +
		"\x05\u0110\u1492\n\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u1497" +
		"\n\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u149D\n\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u14A4\n\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u14A9\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x05\u0110\u14B0\n\u0110\x03\u0110\x03\u0110" +
		"\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x03\u0110\x05\u0110" +
		"\u14BA\n\u0110\x03\u0110\x03\u0110\x05\u0110\u14BE\n\u0110\x03\u0110\x03" +
		"\u0110\x03\u0110\x03\u0110\x05\u0110\u14C4\n\u0110\x05\u0110\u14C6\n\u0110" +
		"\x03\u0111\x03\u0111\x03\u0111\x07\u0111\u14CB\n\u0111\f\u0111\x0E\u0111" +
		"\u14CE\v\u0111\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112\x03\u0112" +
		"\x03\u0112\x03\u0112\x05\u0112\u14F4\n\u0112\x03\u0113\x03\u0113\x03\u0113" +
		"\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113" +
		"\x03\u0113\x03\u0113\x03\u0113\x05\u0113\u1503\n\u0113\x03\u0113\x03\u0113" +
		"\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113" +
		"\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113\x03\u0113" +
		"\x05\u0113\u1515\n\u0113\x03\u0114\x03\u0114\x03\u0115\x03\u0115\x03\u0115" +
		"\x07\u0115\u151C\n\u0115\f\u0115\x0E\u0115\u151F\v\u0115\x03\u0116\x03" +
		"\u0116\x03\u0116\x03\u0116\x03\u0117\x03\u0117\x03\u0117\x03\u0117\x03" +
		"\u0118\x03\u0118\x05\u0118\u152B\n\u0118\x03\u0119\x03\u0119\x05\u0119" +
		"\u152F\n\u0119\x03\u011A\x03\u011A\x06\u011A\u1533\n\u011A\r\u011A\x0E" +
		"\u011A\u1534\x03\u011B\x03\u011B\x03\u011B\x07\u011B\u153A\n\u011B\f\u011B" +
		"\x0E\u011B\u153D\v\u011B\x03\u011C\x03\u011C\x05\u011C\u1541\n\u011C\x03" +
		"\u011C\x03\u011C\x05\u011C\u1545\n\u011C\x03\u011C\x05\u011C\u1548\n\u011C" +
		"\x03\u011D\x03\u011D\x03\u011D\x03\u011D\x05\u011D\u154E\n\u011D\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x05\u011E\u1595\n\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E\x03\u011E" +
		"\x03\u011E\x03\u011E\x03\u011E\x05\u011E\u15F5\n\u011E\x03\u011F\x03\u011F" +
		"\x05\u011F\u15F9\n\u011F\x03\u0120\x03\u0120\x03\u0120\x05\u0120\u15FE" +
		"\n\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03" +
		"\u0120\x03\u0120\x05\u0120\u1608\n\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x05\u0120" +
		"\u1613\n\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x05\u0120\u161D\n\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x05\u0120" +
		"\u1628\n\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x05\u0120\u1633\n\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x05\u0120\u163E\n\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x05\u0120\u1649\n\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x05\u0120\u1655\n\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x05\u0120" +
		"\u1660\n\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120\x03\u0120" +
		"\x05\u0120\u1668\n\u0120\x03\u0121\x03\u0121\x03\u0121\x03\u0122\x03\u0122" +
		"\x05\u0122\u166F\n\u0122\x03\u0123\x03\u0123\x03\u0123\x03\u0123\x05\u0123" +
		"\u1675\n\u0123\x03\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x05\u0124\u167D\n\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124\u1682" +
		"\n\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124\u1687\n\u0124\x03\u0124" +
		"\x03\u0124\x03\u0124\x05\u0124\u168C\n\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x05\u0124\u1692\n\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x05\u0124\u1699\n\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x05\u0124\u169F\n\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124" +
		"\u16A5\n\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124\u16AA\n\u0124\x03" +
		"\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124\u16B0\n\u0124\x03\u0124" +
		"\x03\u0124\x03\u0124\x03\u0124\x03\u0124\x05\u0124\u16B7\n\u0124\x03\u0124" +
		"\x03\u0124\x03\u0124\x05\u0124\u16BC\n\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x05\u0124\u16C2\n\u0124\x03\u0124\x03\u0124\x03\u0124\x03\u0124" +
		"\x03\u0124\x05\u0124\u16C9\n\u0124\x03\u0124\x05\u0124\u16CC\n\u0124\x03" +
		"\u0125\x03\u0125\x03\u0126\x03\u0126\x03\u0127\x03\u0127\x03\u0127\x03" +
		"\u0127\x03\u0127\x03\u0127\x03\u0127\x05\u0127\u16D9\n\u0127\x03\u0128" +
		"\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x05\u0128" +
		"\u16E2\n\u0128\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x03\u0128" +
		"\x03\u0128\x03\u0128\x03\u0128\x03\u0128\x05\u0128\u16EE\n\u0128\x05\u0128" +
		"\u16F0\n\u0128\x03\u0129\x03\u0129\x03\u0129\x03\u0129\x03\u0129\x03\u0129" +
		"\x03\u0129\x03\u0129\x03\u0129\x03\u0129\x03\u0129\x03\u0129\x03\u0129" +
		"\x03\u0129\x03\u0129\x03\u0129\x05\u0129\u1702\n\u0129\x03\u012A\x03\u012A" +
		"\x03\u012A\x07\u012A\u1707\n\u012A\f\u012A\x0E\u012A\u170A\v\u012A\x03" +
		"\u012B\x03\u012B\x03\u012C\x03\u012C\x03\u012C\x07\u012C\u1711\n\u012C" +
		"\f\u012C\x0E\u012C\u1714\v\u012C\x03\u012D\x03\u012D\x05\u012D\u1718\n" +
		"\u012D\x03\u012D\x03\u012D\x05\u012D\u171C\n\u012D\x03\u012D\x03\u012D" +
		"\x05\u012D\u1720\n\u012D\x03\u012D\x03\u012D\x05\u012D\u1724\n\u012D\x05" +
		"\u012D\u1726\n\u012D\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x03\u012E" +
		"\x03\u012E\x03\u012E\x03\u012E\x03\u012E\x05\u012E\u1762\n\u012E\x03\u012F" +
		"\x03\u012F\x03\u012F\x07\u012F\u1767\n\u012F\f\u012F\x0E\u012F\u176A\v" +
		"\u012F\x03\u0130\x03\u0130\x03\u0130\x05\u0130\u176F\n\u0130\x03\u0131" +
		"\x03\u0131\x03\u0131\x03\u0131\x03\u0132\x03\u0132\x03\u0132\x03\u0132" +
		"\x03\u0132\x05\u0132\u177A\n\u0132\x03\u0132\x05\u0132\u177D\n\u0132\x03" +
		"\u0133\x03\u0133\x03\u0133\x03\u0133\x03\u0133\x05\u0133\u1784\n\u0133" +
		"\x03\u0133\x05\u0133\u1787\n\u0133\x03\u0133\x03\u0133\x03\u0133\x03\u0133" +
		"\x03\u0133\x03\u0133\x03\u0133\x03\u0133\x05\u0133\u1791\n\u0133\x03\u0133" +
		"\x05\u0133\u1794\n\u0133\x05\u0133\u1796\n\u0133\x03\u0134\x03\u0134\x03" +
		"\u0134\x03\u0134\x03\u0135\x03\u0135\x03\u0135\x03\u0135\x03\u0136\x03" +
		"\u0136\x03\u0136\x03\u0136\x03\u0136\x03\u0136\x03\u0137\x07\u0137\u17A7" +
		"\n\u0137\f\u0137\x0E\u0137\u17AA\v\u0137\x03\u0138\x03\u0138\x03\u0138" +
		"\x03\u0138\x03\u0138\x03\u0138\x03\u0138\x03\u0138\x03\u0138\x05\u0138" +
		"\u17B5\n\u0138\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139" +
		"\x03\u0139\x05\u0139\u17BE\n\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139" +
		"\x03\u0139\x03\u0139\x03\u0139\x05\u0139\u17C7\n\u0139\x03\u0139\x03\u0139" +
		"\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139\x03\u0139" +
		"\x03\u0139\x05\u0139\u17D3\n\u0139\x05\u0139\u17D5\n\u0139\x03\u013A\x03" +
		"\u013A\x03\u013B\x03\u013B\x05\u013B\u17DB\n\u013B\x03\u013B\x03\u013B" +
		"\x05\u013B\u17DF\n\u013B\x03\u013B\x05\u013B\u17E2\n\u013B\x03\u013B\x05" +
		"\u013B\u17E5\n\u013B\x03\u013B\x03\u013B\x03\u013B\x05\u013B\u17EA\n\u013B" +
		"\x03\u013B\x03\u013B\x03\u013B\x03\u013B\x05\u013B\u17F0\n\u013B\x03\u013B" +
		"\x05\u013B\u17F3\n\u013B\x03\u013B\x05\u013B\u17F6\n\u013B\x03\u013B\x05" +
		"\u013B\u17F9\n\u013B\x03\u013B\x05\u013B\u17FC\n\u013B\x03\u013C\x03\u013C" +
		"\x03\u013D\x03\u013D\x03\u013E\x03\u013E\x03\u013F\x03\u013F\x03\u013F" +
		"\x03\u0140\x03\u0140\x03\u0140\x07\u0140\u180A\n\u0140\f\u0140\x0E\u0140" +
		"\u180D\v\u0140\x03\u0141\x05\u0141\u1810\n\u0141\x03\u0141\x05\u0141\u1813" +
		"\n\u0141\x03\u0141\x05\u0141\u1816\n\u0141\x03\u0141\x05\u0141\u1819\n" +
		"\u0141\x03\u0141\x05\u0141\u181C\n\u0141\x03\u0141\x03\u0141\x03\u0141" +
		"\x05\u0141\u1821\n\u0141\x03\u0141\x05\u0141\u1824\n\u0141\x05\u0141\u1826" +
		"\n\u0141\x03\u0142\x03\u0142\x03\u0142\x03\u0142\x03\u0142\x03\u0142\x03" +
		"\u0142\x03\u0142\x03\u0142\x03\u0142\x03\u0142\x05\u0142\u1833\n\u0142" +
		"\x03\u0143\x03\u0143\x03\u0143\x03\u0143\x03\u0143\x03\u0144\x03\u0144" +
		"\x03\u0144\x07\u0144\u183D\n\u0144\f\u0144\x0E\u0144\u1840\v\u0144\x03" +
		"\u0145\x03\u0145\x03\u0145\x03\u0146\x03\u0146\x03\u0147\x03\u0147\x03" +
		"\u0148\x03\u0148\x03\u0148\x03\u0148\x05\u0148\u184D\n\u0148\x03\u0149" +
		"\x03\u0149\x05\u0149\u1851\n\u0149\x03\u0149\x03\u0149\x03\u0149\x03\u0149" +
		"\x05\u0149\u1857\n\u0149\x03\u0149\x03\u0149\x03\u0149\x03\u0149\x03\u0149" +
		"\x03\u0149\x03\u0149\x03\u0149\x05\u0149\u1861\n\u0149\x05\u0149\u1863" +
		"\n\u0149\x03\u0149\x03\u0149\x03\u0149\x05\u0149\u1868\n\u0149\x03\u014A" +
		"\x03\u014A\x03\u014A\x03\u014A\x07\u014A\u186E\n\u014A\f\u014A\x0E\u014A" +
		"\u1871\v\u014A\x03\u014A\x03\u014A\x03\u014B\x03\u014B\x03\u014B\x03\u014C" +
		"\x03\u014C\x05\u014C\u187A\n\u014C\x03\u014C\x03\u014C\x03\u014D\x03\u014D" +
		"\x03\u014D\x07\u014D\u1881\n\u014D\f\u014D\x0E\u014D\u1884\v\u014D\x03" +
		"\u014E\x03\u014E\x03\u014E\x07\u014E\u1889\n\u014E\f\u014E\x0E\u014E\u188C" +
		"\v\u014E\x03\u014F\x03\u014F\x03\u014F\x03\u014F\x03\u014F\x03\u014F\x05" +
		"\u014F\u1894\n\u014F\x05\u014F\u1896\n\u014F\x03\u0150\x03\u0150\x03\u0150" +
		"\x07\u0150\u189B\n\u0150\f\u0150\x0E\u0150\u189E\v\u0150\x03\u0151\x03" +
		"\u0151\x03\u0151\x03\u0151\x03\u0151\x03\u0151\x05\u0151\u18A6\n\u0151" +
		"\x05\u0151\u18A8\n\u0151\x03\u0152\x03\u0152\x03\u0152\x07\u0152\u18AD" +
		"\n\u0152\f\u0152\x0E\u0152\u18B0\v\u0152\x03\u0153\x03\u0153\x03\u0153" +
		"\x03\u0153\x03\u0153\x03\u0153\x05\u0153\u18B8\n\u0153\x05\u0153\u18BA" +
		"\n\u0153\x03\u0154\x03\u0154\x05\u0154\u18BE\n\u0154\x03\u0154\x03\u0154" +
		"\x03\u0155\x03\u0155\x03\u0155\x07\u0155\u18C5\n\u0155\f\u0155\x0E\u0155" +
		"\u18C8\v\u0155\x03\u0156\x03\u0156\x05\u0156\u18CC\n\u0156\x03\u0156\x03" +
		"\u0156\x03\u0156\x03\u0156\x05\u0156\u18D2\n\u0156\x03\u0156\x03\u0156" +
		"\x03\u0156\x05\u0156\u18D7\n\u0156\x03\u0157\x03\u0157\x05\u0157\u18DB" +
		"\n\u0157\x03\u0157\x03\u0157\x03\u0157\x05\u0157\u18E0\n\u0157\x03\u0158" +
		"\x03\u0158\x03\u0159\x03\u0159\x03\u015A\x03\u015A\x03\u015A\x03\u015A" +
		"\x03\u015A\x03\u015A\x03\u015A\x03\u015A\x03\u015A\x03\u015A\x03\u015A" +
		"\x03\u015A\x05\u015A\u18F2\n\u015A\x03\u015B\x03\u015B\x03\u015B\x05\u015B" +
		"\u18F7\n\u015B\x03\u015C\x03\u015C\x03\u015D\x03\u015D\x03\u015D\x03\u015D" +
		"\x03\u015D\x03\u015D\x03\u015D\x03\u015D\x03\u015D\x03\u015D\x03\u015D" +
		"\x05\u015D\u1906\n\u015D\x03\u015D\x03\u015D\x03\u015E\x03\u015E\x03\u015E" +
		"\x07\u015E\u190D\n\u015E\f\u015E\x0E\u015E\u1910\v\u015E\x03\u015F\x03" +
		"\u015F\x03\u015F\x03\u0160\x03\u0160\x03\u0160\x07\u0160\u1918\n\u0160" +
		"\f\u0160\x0E\u0160\u191B\v\u0160\x03\u0161\x06\u0161\u191E\n\u0161\r\u0161" +
		"\x0E\u0161\u191F\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03" +
		"\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03" +
		"\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03" +
		"\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03" +
		"\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03\u0162\x03" +
		"\u0162\x03\u0162\x05\u0162\u1945\n\u0162\x03\u0163\x03\u0163\x03\u0163" +
		"\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163" +
		"\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163" +
		"\x03\u0163\x05\u0163\u1959\n\u0163\x03\u0163\x03\u0163\x03\u0163\x03\u0163" +
		"\x03\u0163\x05\u0163\u1960\n\u0163\x03\u0164\x03\u0164\x03\u0164\x03\u0164" +
		"\x03\u0164\x03\u0164\x03\u0164\x07\u0164\u1969\n\u0164\f\u0164\x0E\u0164" +
		"\u196C\v\u0164\x03\u0165\x03\u0165\x03\u0165\x03\u0166\x03\u0166\x03\u0166" +
		"\x03\u0167\x03\u0167\x03\u0167\x07\u0167\u1977\n\u0167\f\u0167\x0E\u0167" +
		"\u197A\v\u0167\x03\u0168\x03\u0168\x03\u0168\x03\u0168\x05\u0168\u1980" +
		"\n\u0168\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x03\u0169\x05" +
		"\u0169\u1988\n\u0169\x03\u016A\x06\u016A\u198B\n\u016A\r\u016A\x0E\u016A" +
		"\u198C\x03\u016B\x03\u016B\x03\u016C\x03\u016C\x03\u016C\x05\u016C\u1994" +
		"\n\u016C\x03\u016C\x03\u016C\x05\u016C\u1998\n\u016C\x03\u016C\x03\u016C" +
		"\x03\u016C\x05\u016C\u199D\n\u016C\x03\u016C\x03\u016C\x05\u016C\u19A1" +
		"\n\u016C\x03\u016C\x03\u016C\x03\u016C\x05\u016C\u19A6\n\u016C\x03\u016C" +
		"\x03\u016C\x05\u016C\u19AA\n\u016C\x05\u016C\u19AC\n\u016C\x03\u016D\x03" +
		"\u016D\x03\u016D\x05\u016D\u19B1\n\u016D\x03\u016D\x03\u016D\x05\u016D" +
		"\u19B5\n\u016D\x03\u016E\x03\u016E\x03\u016E\x05\u016E\u19BA\n\u016E\x03" +
		"\u016E\x03\u016E\x05\u016E\u19BE\n\u016E\x03\u016F\x03\u016F\x03\u016F" +
		"\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F" +
		"\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F" +
		"\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x03\u016F\x05\u016F\u19D6\n\u016F" +
		"\x03\u0170\x03\u0170\x03\u0170\x07\u0170\u19DB\n\u0170\f\u0170\x0E\u0170" +
		"\u19DE\v\u0170\x03\u0170\x03\u0170\x03\u0171\x03\u0171\x03\u0171\x07\u0171" +
		"\u19E5\n\u0171\f\u0171\x0E\u0171\u19E8\v\u0171\x03\u0172\x03\u0172\x03" +
		"\u0172\x03\u0173\x03\u0173\x03\u0173\x03\u0174\x06\u0174\u19F1\n\u0174" +
		"\r\u0174\x0E\u0174\u19F2\x03\u0175\x03\u0175\x03\u0175\x05\u0175\u19F8" +
		"\n\u0175\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03" +
		"\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x05\u0176\u1A05\n\u0176" +
		"\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176" +
		"\x03\u0176\x03\u0176\x03\u0176\x05\u0176\u1A11\n\u0176\x03\u0176\x03\u0176" +
		"\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176\x03\u0176" +
		"\x03\u0176\x05\u0176\u1A1D\n\u0176\x05\u0176\u1A1F\n\u0176\x03\u0177\x03" +
		"\u0177\x03\u0177\x03\u0177\x05\u0177\u1A25\n\u0177\x03\u0178\x03\u0178" +
		"\x03\u0178\x03\u0179\x03\u0179\x05\u0179\u1A2C\n\u0179\x03\u0179\x03\u0179" +
		"\x03\u0179\x03\u0179\x03\u0179\x03\u0179\x03\u0179\x03\u0179\x03\u0179" +
		"\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A" +
		"\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A" +
		"\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A" +
		"\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A" +
		"\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x03\u017A\x05\u017A" +
		"\u1A59\n\u017A\x03\u017B\x03\u017B\x03\u017B\x03\u017B\x03\u017B\x03\u017B" +
		"\x03\u017B\x03\u017B\x03\u017B\x03\u017B\x03\u017B\x03\u017B\x03\u017B" +
		"\x03\u017B\x03\u017B\x03\u017B\x05\u017B\u1A6B\n\u017B\x03\u017C\x03\u017C" +
		"\x05\u017C\u1A6F\n\u017C\x03\u017C\x03\u017C\x03\u017C\x05\u017C\u1A74" +
		"\n\u017C\x03\u017C\x05\u017C\u1A77\n\u017C\x03\u017D\x03\u017D\x05\u017D" +
		"\u1A7B\n\u017D\x03\u017D\x03\u017D\x03\u017D\x05\u017D\u1A80\n\u017D\x03" +
		"\u017D\x03\u017D\x03\u017D\x05\u017D\u1A85\n\u017D\x03\u017D\x05\u017D" +
		"\u1A88\n\u017D\x03\u017E\x03\u017E\x03\u017E\x07\u017E\u1A8D\n\u017E\f" +
		"\u017E\x0E\u017E\u1A90\v\u017E\x03\u017F\x03\u017F\x03\u0180\x03\u0180" +
		"\x03\u0180\x03\u0180\x03\u0180\x03\u0180\x03\u0180\x03\u0180\x03\u0180" +
		"\x03\u0180\x03\u0180\x03\u0180\x05\u0180\u1AA0\n\u0180\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1AE7\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x05\u0181\u1B06\n\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B3C\n\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x05\u0181\u1B46\n\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B50\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x05\u0181\u1B5B\n\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B65\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x05\u0181\u1B70\n\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B7A\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x05\u0181\u1B7F\n\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B88\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x05\u0181\u1B8D\n\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B97\n\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1B9C\n\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1BA5\n\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1BB2\n\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x05\u0181\u1BB7\n\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181";
	private static readonly _serializedATNSegment3: string =
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181" +
		"\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x03\u0181\x05\u0181\u1C27\n\u0181" +
		"\x05\u0181\u1C29\n\u0181\x03\u0182\x03\u0182\x03\u0183\x03\u0183\x03\u0183" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184\u1C34\n\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x03\u0184\x05\u0184\u1C3F\n\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184\u1C4A\n\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184\u1C57\n\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x05\u0184\u1C63\n\u0184\x03\u0184\x03\u0184\x03\u0184" +
		"\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184" +
		"\u1C6E\n\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x03\u0184\x05\u0184" +
		"\u1C75\n\u0184\x03\u0185\x03\u0185\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186\u1CCF\n\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x05\u0186\u1D04\n\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186\u1D0E\n\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x05\u0186\u1D19\n\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186" +
		"\u1D24\n\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186" +
		"\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x03\u0186\x05\u0186" +
		"\u1D32\n\u0186\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187\x03\u0187" +
		"\x03\u0187\x03\u0187\x03\u0188\x03\u0188\x03\u0188\x07\u0188\u1D3F\n\u0188" +
		"\f\u0188\x0E\u0188\u1D42\v\u0188\x03\u0189\x03\u0189\x03\u0189\x03\u0189" +
		"\x03\u0189\x03\u0189\x03\u0189\x03\u0189\x05\u0189\u1D4C\n\u0189\x03\u018A" +
		"\x03\u018A\x03\u018A\x03\u018A\x03\u018A\x05\u018A\u1D53\n\u018A\x03\u018B" +
		"\x03\u018B\x03\u018B\x03\u018B\x03\u018B\x03\u018B\x03\u018B\x03\u018B" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x05\u018C\u1D89\n\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C\x03\u018C" +
		"\x03\u018C\x03\u018C\x03\u018C\x05\u018C\u1E16\n\u018C\x03\u018D\x03\u018D" +
		"\x03\u018D\x03\u018D\x05\u018D\u1E1C\n\u018D\x03\u018D\x05\u018D\u1E1F" +
		"\n\u018D\x03\u018E\x03\u018E\x03\u018F\x03\u018F\x03\u018F\x03\u018F\x03" +
		"\u018F\x03\u018F\x05\u018F\u1E29\n\u018F\x03\u0190\x03\u0190\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190" +
		"\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190\x03\u0190" +
		"\x05\u0190\u1E51\n\u0190\x03\u0191\x03\u0191\x03\u0191\x03\u0191\x03\u0191" +
		"\x03\u0191\x03\u0191\x03\u0191\x05\u0191\u1E5B\n\u0191\x03\u0192\x03\u0192" +
		"\x03\u0192\x07\u0192\u1E60\n\u0192\f\u0192\x0E\u0192\u1E63\v\u0192\x03" +
		"\u0193\x03\u0193\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03" +
		"\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03" +
		"\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x05\u0194\u1E79" +
		"\n\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03" +
		"\u0194\x05\u0194\u1E82\n\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x05\u0194\u1E8B\n\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x05\u0194\u1E94\n\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194\x03\u0194" +
		"\x03\u0194\x03\u0194\x03\u0194\x05\u0194\u1EB5\n\u0194\x03\u0195\x03\u0195" +
		"\x05\u0195\u1EB9\n\u0195\x03\u0195\x03\u0195\x03\u0195\x03\u0195\x03\u0195" +
		"\x03\u0195\x03\u0195\x03\u0195\x05\u0195\u1EC3\n\u0195\x03\u0195\x03\u0195" +
		"\x05\u0195\u1EC7\n\u0195\x03\u0195\x03\u0195\x03\u0196\x03\u0196\x03\u0196" +
		"\x03\u0196\x03\u0196\x03\u0196\x05\u0196\u1ED1\n\u0196\x03\u0197\x05\u0197" +
		"\u1ED4\n\u0197\x03\u0197\x03\u0197\x05\u0197\u1ED8\n\u0197\x07\u0197\u1EDA" +
		"\n\u0197\f\u0197\x0E\u0197\u1EDD\v\u0197\x03\u0198\x03\u0198\x03\u0198" +
		"\x03\u0198\x03\u0198\x05\u0198\u1EE4\n\u0198\x03\u0199\x03\u0199\x03\u019A" +
		"\x03\u019A\x03\u019B\x03\u019B\x03\u019C\x03\u019C\x03\u019C\x05\u019C" +
		"\u1EEF\n\u019C\x03\u019D\x03\u019D\x03\u019D\x03\u019E\x03\u019E\x03\u019E" +
		"\x03\u019F\x03\u019F\x03\u019F\x03\u019F\x05\u019F\u1EFB\n\u019F\x03\u01A0" +
		"\x03\u01A0\x05\u01A0\u1EFF\n\u01A0\x03\u01A0\x05\u01A0\u1F02\n\u01A0\x03" +
		"\u01A0\x03\u01A0\x05\u01A0\u1F06\n\u01A0\x03\u01A0\x05\u01A0\u1F09\n\u01A0" +
		"\x03\u01A0\x03\u01A0\x03\u01A0\x05\u01A0\u1F0E\n\u01A0\x03\u01A0\x03\u01A0" +
		"\x05\u01A0\u1F12\n\u01A0\x03\u01A0\x05\u01A0\u1F15\n\u01A0\x03\u01A0\x03" +
		"\u01A0\x05\u01A0\u1F19\n\u01A0\x03\u01A0\x05\u01A0\u1F1C\n\u01A0\x03\u01A0" +
		"\x03\u01A0\x05\u01A0\u1F20\n\u01A0\x03\u01A0\x05\u01A0\u1F23\n\u01A0\x03" +
		"\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03" +
		"\u01A0\x03\u01A0\x05\u01A0\u1F2E\n\u01A0\x03\u01A0\x03\u01A0\x03\u01A0" +
		"\x03\u01A0\x03\u01A0\x05\u01A0\u1F35\n\u01A0\x03\u01A0\x03\u01A0\x03\u01A0" +
		"\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0\x03\u01A0" +
		"\x03\u01A0\x05\u01A0\u1F42\n\u01A0\x03\u01A1\x03\u01A1\x03\u01A2\x03\u01A2" +
		"\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2\x03\u01A2" +
		"\x03\u01A2\x05\u01A2\u1F50\n\u01A2\x03\u01A3\x03\u01A3\x05\u01A3\u1F54" +
		"\n\u01A3\x03\u01A3\x07\u01A3\u1F57\n\u01A3\f\u01A3\x0E\u01A3\u1F5A\v\u01A3" +
		"\x03\u01A4\x03\u01A4\x03\u01A5\x03\u01A5\x05\u01A5\u1F60\n\u01A5\x03\u01A5" +
		"\x03\u01A5\x03\u01A6\x03\u01A6\x03\u01A6\x05\u01A6\u1F67\n\u01A6\x03\u01A6" +
		"\x05\u01A6\u1F6A\n\u01A6\x03\u01A6\x03\u01A6\x03\u01A6\x05\u01A6\u1F6F" +
		"\n\u01A6\x03\u01A6\x05\u01A6\u1F72\n\u01A6\x03\u01A6\x03\u01A6\x03\u01A6" +
		"\x03\u01A6\x03\u01A6\x03\u01A6\x03\u01A6\x05\u01A6\u1F7B\n\u01A6\x05\u01A6" +
		"\u1F7D\n\u01A6\x03\u01A6\x03\u01A6\x03\u01A6\x05\u01A6\u1F82\n\u01A6\x03" +
		"\u01A7\x03\u01A7\x05\u01A7\u1F86\n\u01A7\x03\u01A7\x03\u01A7\x03\u01A7" +
		"\x03\u01A8\x03\u01A8\x03\u01A8\x03\u01A9\x03\u01A9\x03\u01A9\x03\u01A9" +
		"\x05\u01A9\u1F92\n\u01A9\x03\u01A9\x05\u01A9\u1F95\n\u01A9\x03\u01AA\x03" +
		"\u01AA\x03\u01AB\x06\u01AB\u1F9A\n\u01AB\r\u01AB\x0E\u01AB\u1F9B\x03\u01AC" +
		"\x03\u01AC\x05\u01AC\u1FA0\n\u01AC\x03\u01AC\x03\u01AC\x03\u01AC\x05\u01AC" +
		"\u1FA5\n\u01AC\x03\u01AD\x03\u01AD\x03\u01AD\x03\u01AD\x03\u01AD\x03\u01AD" +
		"\x03\u01AD\x03\u01AD\x05\u01AD\u1FAF\n\u01AD\x03\u01AE\x03\u01AE\x03\u01AF" +
		"\x03\u01AF\x03\u01AF\x03\u01AF\x05\u01AF\u1FB7\n\u01AF\x03\u01AF\x05\u01AF" +
		"\u1FBA\n\u01AF\x03\u01AF\x05\u01AF\u1FBD\n\u01AF\x03\u01AF\x03\u01AF\x03" +
		"\u01AF\x05\u01AF\u1FC2\n\u01AF\x05\u01AF\u1FC4\n\u01AF\x03\u01B0\x03\u01B0" +
		"\x03\u01B0\x03\u01B0\x05\u01B0\u1FCA\n\u01B0\x03\u01B1\x03\u01B1\x03\u01B1" +
		"\x07\u01B1\u1FCF\n\u01B1\f\u01B1\x0E\u01B1\u1FD2\v\u01B1\x03\u01B2\x03" +
		"\u01B2\x03\u01B3\x03\u01B3\x03\u01B3\x03\u01B3\x03\u01B3\x03\u01B3\x03" +
		"\u01B4\x03\u01B4\x03\u01B4\x03\u01B4\x03\u01B4\x03\u01B5\x03\u01B5\x03" +
		"\u01B5\x03\u01B5\x05\u01B5\u1FE5\n\u01B5\x03\u01B5\x03\u01B5\x03\u01B5" +
		"\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6" +
		"\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x03\u01B6" +
		"\x03\u01B6\x05\u01B6\u1FF9\n\u01B6\x03\u01B6\x03\u01B6\x05\u01B6\u1FFD" +
		"\n\u01B6\x03\u01B6\x03\u01B6\x03\u01B6\x05\u01B6\u2002\n\u01B6\x03\u01B7" +
		"\x03\u01B7\x03\u01B8\x03\u01B8\x03\u01B8\x03\u01B8\x03\u01B8\x03\u01B8" +
		"\x03\u01B8\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x03\u01B9\x03\u01B9\x05\u01B9\u2047\n\u01B9\x03\u01B9\x03\u01B9" +
		"\x03\u01B9\x05\u01B9\u204C\n\u01B9\x03\u01BA\x03\u01BA\x03\u01BB\x03\u01BB" +
		"\x05\u01BB\u2052\n\u01BB\x03\u01BB\x03\u01BB\x03\u01BB\x03\u01BB\x03\u01BB" +
		"\x03\u01BB\x03\u01BB\x03\u01BB\x03\u01BB\x03\u01BC\x03\u01BC\x05\u01BC" +
		"\u205F\n\u01BC\x03\u01BC\x03\u01BC\x05\u01BC\u2063\n\u01BC\x03\u01BC\x03" +
		"\u01BC\x05\u01BC\u2067\n\u01BC\x03\u01BC\x03\u01BC\x03\u01BC\x03\u01BC" +
		"\x05\u01BC\u206D\n\u01BC\x05\u01BC\u206F\n\u01BC\x03\u01BD\x03\u01BD\x03" +
		"\u01BD\x03\u01BD\x07\u01BD\u2075\n\u01BD\f\u01BD\x0E\u01BD\u2078\v\u01BD" +
		"\x03\u01BD\x03\u01BD\x03\u01BE\x03\u01BE\x03\u01BE\x03\u01BF\x03\u01BF" +
		"\x05\u01BF\u2081\n\u01BF\x03\u01BF\x05\u01BF\u2084\n\u01BF\x03\u01BF\x05" +
		"\u01BF\u2087\n\u01BF\x03\u01BF\x05\u01BF\u208A\n\u01BF\x03\u01BF\x05\u01BF" +
		"\u208D\n\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x03\u01BF\x05\u01BF" +
		"\u2094\n\u01BF\x03\u01BF\x05\u01BF\u2097\n\u01BF\x05\u01BF\u2099\n\u01BF" +
		"\x03\u01C0\x03\u01C0\x05\u01C0\u209D\n\u01C0\x03\u01C0\x05\u01C0\u20A0" +
		"\n\u01C0\x03\u01C0\x03\u01C0\x03\u01C0\x03\u01C0\x03\u01C0\x05\u01C0\u20A7" +
		"\n\u01C0\x05\u01C0\u20A9\n\u01C0\x03\u01C1\x03\u01C1\x03\u01C1\x07\u01C1" +
		"\u20AE\n\u01C1\f\u01C1\x0E\u01C1\u20B1\v\u01C1\x03\u01C2\x03\u01C2\x03" +
		"\u01C3\x03\u01C3\x05\u01C3\u20B7\n\u01C3\x03\u01C4\x03\u01C4\x05\u01C4" +
		"\u20BB\n\u01C4\x03\u01C5\x03\u01C5\x05\u01C5\u20BF\n\u01C5\x03\u01C6\x03" +
		"\u01C6\x03\u01C7\x03\u01C7\x03\u01C7\x07\u01C7\u20C6\n\u01C7\f\u01C7\x0E" +
		"\u01C7\u20C9\v\u01C7\x03\u01C8\x03\u01C8\x03\u01C8\x05\u01C8\u20CE\n\u01C8" +
		"\x03\u01C9\x03\u01C9\x05\u01C9\u20D2\n\u01C9\x03\u01CA\x03\u01CA\x05\u01CA" +
		"\u20D6\n\u01CA\x03\u01CB\x03\u01CB\x03\u01CB\x05\u01CB\u20DB\n\u01CB\x03" +
		"\u01CC\x03\u01CC\x03\u01CD\x03\u01CD\x03\u01CE\x03\u01CE\x03\u01CE\x03" +
		"\u01CE\x03\u01CF\x03\u01CF\x05\u01CF\u20E7\n\u01CF\x03\u01D0\x03\u01D0" +
		"\x03\u01D0\x07\u01D0\u20EC\n\u01D0\f\u01D0\x0E\u01D0\u20EF\v\u01D0\x03" +
		"\u01D1\x03\u01D1\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x05" +
		"\u01D2\u20F8\n\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2" +
		"\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x03\u01D2\x05\u01D2" +
		"\u2105\n\u01D2\x03\u01D3\x03\u01D3\x03\u01D3\x03\u01D3\x03\u01D3\x03\u01D3" +
		"\x03\u01D3\x03\u01D3\x03\u01D3\x05\u01D3\u2110\n\u01D3\x03\u01D4\x03\u01D4" +
		"\x03\u01D4\x07\u01D4\u2115\n\u01D4\f\u01D4\x0E\u01D4\u2118\v\u01D4\x03" +
		"\u01D5\x03\u01D5\x05\u01D5\u211C\n\u01D5\x03\u01D6\x03\u01D6\x05\u01D6" +
		"\u2120\n\u01D6\x03\u01D7\x03\u01D7\x05\u01D7\u2124\n\u01D7\x03\u01D8\x03" +
		"\u01D8\x03\u01D8\x05\u01D8\u2129\n\u01D8\x03\u01D8\x03\u01D8\x03\u01D8" +
		"\x03\u01D9\x03\u01D9\x03\u01D9\x03\u01D9\x03\u01DA\x03\u01DA\x03\u01DA" +
		"\x03\u01DA\x05\u01DA\u2136\n\u01DA\x03\u01DB\x03\u01DB\x03\u01DB\x05\u01DB" +
		"\u213B\n\u01DB\x03\u01DB\x03\u01DB\x05\u01DB\u213F\n\u01DB\x03\u01DB\x03" +
		"\u01DB\x05\u01DB\u2143\n\u01DB\x03\u01DB\x03\u01DB\x03\u01DB\x03\u01DB" +
		"\x03\u01DB\x05\u01DB\u214A\n\u01DB\x03\u01DB\x05\u01DB\u214D\n\u01DB\x05" +
		"\u01DB\u214F\n\u01DB\x03\u01DC\x03\u01DC\x03\u01DC\x03\u01DC\x03\u01DD" +
		"\x03\u01DD\x03\u01DD\x03\u01DD\x03\u01DD\x03\u01DD\x03\u01DD\x03\u01DD" +
		"\x03\u01DD\x03\u01DD\x05\u01DD\u215F\n\u01DD\x03\u01DE\x05\u01DE\u2162" +
		"\n\u01DE\x03\u01DE\x03\u01DE\x03\u01DE\x03\u01DE\x03\u01DE\x05\u01DE\u2169" +
		"\n\u01DE\x03\u01DE\x05\u01DE\u216C\n\u01DE\x03\u01DF\x03\u01DF\x03\u01DF" +
		"\x05\u01DF\u2171\n\u01DF\x03\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x05\u01E0" +
		"\u2177\n\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x03\u01E0\x05\u01E0\u217D" +
		"\n\u01E0\x03\u01E0\x03\u01E0\x05\u01E0\u2181\n\u01E0\x03\u01E1\x03\u01E1" +
		"\x03\u01E2\x03\u01E2\x03\u01E2\x07\u01E2\u2188\n\u01E2\f\u01E2\x0E\u01E2" +
		"\u218B\v\u01E2\x03\u01E3\x03\u01E3\x03\u01E3\x03\u01E4\x03\u01E4\x03\u01E4" +
		"\x05\u01E4\u2193\n\u01E4\x03\u01E4\x03\u01E4\x03\u01E4\x03\u01E4\x03\u01E4" +
		"\x05\u01E4\u219A\n\u01E4\x03\u01E4\x05\u01E4\u219D\n\u01E4\x03\u01E5\x03" +
		"\u01E5\x03\u01E5\x03\u01E5\x05\u01E5\u21A3\n\u01E5\x03\u01E5\x03\u01E5" +
		"\x03\u01E5\x05\u01E5\u21A8\n\u01E5\x03\u01E6\x03\u01E6\x03\u01E6\x03\u01E7" +
		"\x05\u01E7\u21AE\n\u01E7\x03\u01E7\x03\u01E7\x03\u01E7\x03\u01E7\x05\u01E7" +
		"\u21B4\n\u01E7\x03\u01E7\x05\u01E7\u21B7\n\u01E7\x03\u01E7\x05\u01E7\u21BA" +
		"\n\u01E7\x03\u01E8\x03\u01E8\x03\u01E8\x03\u01E9\x03\u01E9\x05\u01E9\u21C1" +
		"\n\u01E9\x03\u01E9\x03\u01E9\x05\u01E9\u21C5\n\u01E9\x03\u01E9\x05\u01E9" +
		"\u21C8\n\u01E9\x03\u01EA\x03\u01EA\x03\u01EA\x03\u01EA\x03\u01EB\x03\u01EB" +
		"\x03\u01EB\x03\u01EB\x03\u01EB\x03\u01EB\x03\u01EB\x03\u01EB\x03\u01EB" +
		"\x05\u01EB\u21D7\n\u01EB\x03\u01EB\x05\u01EB\u21DA\n\u01EB\x03\u01EC\x03" +
		"\u01EC\x03\u01ED\x03\u01ED\x03\u01ED\x05\u01ED\u21E1\n\u01ED\x03\u01EE" +
		"\x05\u01EE\u21E4\n\u01EE\x03\u01EE\x03\u01EE\x03\u01EE\x03\u01EE\x03\u01EE" +
		"\x05\u01EE\u21EB\n\u01EE\x03\u01EE\x05\u01EE\u21EE\n\u01EE\x03\u01EE\x05" +
		"\u01EE\u21F1\n\u01EE\x03\u01EF\x03\u01EF\x03\u01EF\x07\u01EF\u21F6\n\u01EF" +
		"\f\u01EF\x0E\u01EF\u21F9\v\u01EF\x03\u01F0\x03\u01F0\x03\u01F0\x03\u01F0" +
		"\x03\u01F0\x03\u01F0\x03\u01F0\x03\u01F0\x03\u01F0\x05\u01F0\u2204\n\u01F0" +
		"\x03\u01F0\x03\u01F0\x03\u01F0\x03\u01F0\x03\u01F0\x05\u01F0\u220B\n\u01F0" +
		"\x05\u01F0\u220D\n\u01F0\x03\u01F1\x03\u01F1\x03\u01F1\x03\u01F2\x03\u01F2" +
		"\x03\u01F2\x07\u01F2\u2215\n\u01F2\f\u01F2\x0E\u01F2\u2218\v\u01F2\x03" +
		"\u01F3\x03\u01F3\x03\u01F3\x03\u01F3\x03\u01F3\x03\u01F3\x03\u01F3\x03" +
		"\u01F3\x03\u01F4\x03\u01F4\x03\u01F5\x03\u01F5\x03\u01F5\x03\u01F5\x03" +
		"\u01F5\x07\u01F5\u2229\n\u01F5\f\u01F5\x0E\u01F5\u222C\v\u01F5\x03\u01F6" +
		"\x03\u01F6\x03\u01F6\x03\u01F6\x03\u01F6\x05\u01F6\u2233\n\u01F6\x03\u01F7" +
		"\x03\u01F7\x05\u01F7\u2237\n\u01F7\x03\u01F8\x03\u01F8\x03\u01F8\x03\u01F8" +
		"\x03\u01F8\x03\u01F8\x03\u01F8\x03\u01F8\x05\u01F8\u2241\n\u01F8\x03\u01F9" +
		"\x03\u01F9\x05\u01F9\u2245\n\u01F9\x03\u01F9\x03\u01F9\x05\u01F9\u2249" +
		"\n\u01F9\x03\u01F9\x03\u01F9\x05\u01F9\u224D\n\u01F9\x05\u01F9\u224F\n" +
		"\u01F9\x03\u01F9\x03\u01F9\x03\u01F9\x05\u01F9\u2254\n\u01F9\x03\u01F9" +
		"\x03\u01F9\x05\u01F9\u2258\n\u01F9\x03\u01F9\x03\u01F9\x05\u01F9\u225C" +
		"\n\u01F9\x05\u01F9\u225E\n\u01F9\x05\u01F9\u2260\n\u01F9\x03\u01FA\x03" +
		"\u01FA\x05\u01FA\u2264\n\u01FA\x03\u01FB\x03\u01FB\x05\u01FB\u2268\n\u01FB" +
		"\x03\u01FB\x05\u01FB\u226B\n\u01FB\x03\u01FB\x05\u01FB\u226E\n\u01FB\x03" +
		"\u01FB\x05\u01FB\u2271\n\u01FB\x03\u01FB\x05\u01FB\u2274\n\u01FB\x05\u01FB" +
		"\u2276\n\u01FB\x03\u01FB\x05\u01FB\u2279\n\u01FB\x03\u01FB\x05\u01FB\u227C" +
		"\n\u01FB\x03\u01FB\x05\u01FB\u227F\n\u01FB\x03\u01FB\x05\u01FB\u2282\n" +
		"\u01FB\x03\u01FB\x05\u01FB\u2285\n\u01FB\x03\u01FB\x05\u01FB\u2288\n\u01FB" +
		"\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FB\x03\u01FB" +
		"\x05\u01FB\u2291\n\u01FB\x05\u01FB\u2293\n\u01FB\x03\u01FB\x03\u01FB\x03" +
		"\u01FB\x05\u01FB\u2298\n\u01FB\x07\u01FB\u229A\n\u01FB\f\u01FB\x0E\u01FB" +
		"\u229D\v\u01FB\x03\u01FC\x03\u01FC\x03\u01FC\x05\u01FC\u22A2\n\u01FC\x03" +
		"\u01FD\x03\u01FD\x05\u01FD\u22A6\n\u01FD\x03\u01FE\x03\u01FE\x05\u01FE" +
		"\u22AA\n\u01FE\x03\u01FE\x03\u01FE\x03\u01FF\x03\u01FF\x03\u01FF\x07\u01FF" +
		"\u22B1\n\u01FF\f\u01FF\x0E\u01FF\u22B4\v\u01FF\x03\u0200\x03\u0200\x05" +
		"\u0200\u22B8\n\u0200\x03\u0200\x03\u0200\x05\u0200\u22BC\n\u0200\x03\u0200" +
		"\x03\u0200\x03\u0200\x03\u0200\x05\u0200\u22C2\n\u0200\x03\u0200\x05\u0200" +
		"\u22C5\n\u0200\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201\x03\u0201" +
		"\x03\u0201\x03\u0201\x03\u0202\x03\u0202\x03\u0202\x03\u0202\x03\u0202" +
		"\x03\u0202\x03\u0202\x03\u0202\x03\u0202\x05\u0202\u22D8\n\u0202\x03\u0202" +
		"\x03\u0202\x03\u0202\x03\u0203\x03\u0203\x03\u0203\x05\u0203\u22E0\n\u0203" +
		"\x03\u0204\x03\u0204\x03\u0205\x03\u0205\x03\u0205\x03\u0205\x03\u0205" +
		"\x05\u0205\u22E9\n\u0205\x03\u0206\x03\u0206\x05\u0206\u22ED\n\u0206\x03" +
		"\u0207\x05\u0207\u22F0\n\u0207\x03\u0207\x03\u0207\x05\u0207\u22F4\n\u0207" +
		"\x03\u0207\x03\u0207\x03\u0207\x05\u0207\u22F9\n\u0207\x03\u0207\x03\u0207" +
		"\x03\u0207\x03\u0207\x05\u0207\u22FF\n\u0207\x03\u0208\x03\u0208\x03\u0209" +
		"\x03\u0209\x03\u020A\x03\u020A\x03\u020A\x03\u020A\x03\u020A\x03\u020A" +
		"\x05\u020A\u230B\n\u020A\x03\u020B\x03\u020B\x03\u020C\x03\u020C\x03\u020D" +
		"\x03\u020D\x03\u020D\x03\u020D\x03\u020E\x03\u020E\x03\u020E\x07\u020E" +
		"\u2318\n\u020E\f\u020E\x0E\u020E\u231B\v\u020E\x03\u020F\x03\u020F\x03" +
		"\u020F\x03\u020F\x05\u020F\u2321\n\u020F\x03\u020F\x05\u020F\u2324\n\u020F" +
		"\x03\u0210\x03\u0210\x05\u0210\u2328\n\u0210\x03\u0210\x03\u0210\x05\u0210" +
		"\u232C\n\u0210\x03\u0210\x03\u0210\x05\u0210\u2330\n\u0210\x05\u0210\u2332" +
		"\n\u0210\x03\u0211\x03\u0211\x03\u0212\x03\u0212\x03\u0212\x03\u0212\x05" +
		"\u0212\u233A\n\u0212\x03\u0213\x03\u0213\x03\u0213\x03\u0213\x03\u0213" +
		"\x03\u0213\x03\u0213\x05\u0213\u2343\n\u0213\x03\u0213\x03\u0213\x03\u0213" +
		"\x03\u0213\x05\u0213\u2349\n\u0213\x05\u0213\u234B\n\u0213\x03\u0214\x03" +
		"\u0214\x03\u0214\x03\u0214\x03\u0214\x05\u0214\u2352\n\u0214\x03\u0215" +
		"\x03\u0215\x05\u0215\u2356\n\u0215\x03\u0216\x03\u0216\x03\u0217\x03\u0217" +
		"\x03\u0217\x03\u0217\x03\u0217\x05\u0217\u235F\n\u0217\x03\u0218\x03\u0218" +
		"\x05\u0218\u2363\n\u0218\x03\u0219\x03\u0219\x03\u021A\x03\u021A\x03\u021B" +
		"\x03\u021B\x03\u021B\x05\u021B\u236C\n\u021B\x03\u021B\x03\u021B\x03\u021C" +
		"\x03\u021C\x03\u021C\x07\u021C\u2373\n\u021C\f\u021C\x0E\u021C\u2376\v" +
		"\u021C\x03\u021D\x03\u021D\x03\u021D\x03\u021D\x03\u021D\x03\u021D\x03" +
		"\u021D\x03\u021D\x03\u021D\x05\u021D\u2381\n\u021D\x03\u021E\x03\u021E" +
		"\x03\u021E\x03\u021F\x03\u021F\x03\u021F\x03\u021F\x03\u021F\x03\u0220" +
		"\x03\u0220\x03\u0220\x03\u0220\x03\u0220\x03\u0221\x03\u0221\x03\u0221" +
		"\x03\u0221\x03\u0221\x03\u0221\x03\u0222\x03\u0222\x03\u0222\x03\u0223" +
		"\x03\u0223\x03\u0223\x03\u0223\x05\u0223\u239D\n\u0223\x03\u0224\x03\u0224" +
		"\x03\u0225\x06\u0225\u23A2\n\u0225\r\u0225\x0E\u0225\u23A3\x03\u0226\x03" +
		"\u0226\x05\u0226\u23A8\n\u0226\x03\u0226\x05\u0226\u23AB\n\u0226\x03\u0227" +
		"\x03\u0227\x03\u0227\x05\u0227\u23B0\n\u0227\x03\u0227\x03\u0227\x05\u0227" +
		"\u23B4\n\u0227\x03\u0227\x05\u0227\u23B7\n\u0227\x03\u0228\x03\u0228\x03" +
		"\u0228\x03\u0229\x03\u0229\x03\u0229\x03\u0229\x03\u0229\x03\u0229\x03" +
		"\u0229\x03\u0229\x03\u0229\x07\u0229\u23C5\n\u0229\f\u0229\x0E\u0229\u23C8" +
		"\v\u0229\x03\u022A\x03\u022A\x03\u022A\x03\u022B\x03\u022B\x03\u022B\x07" +
		"\u022B\u23D0\n\u022B\f\u022B\x0E\u022B\u23D3\v\u022B\x03\u022C\x03\u022C" +
		"\x05\u022C\u23D7\n\u022C\x03\u022C\x05\u022C\u23DA\n\u022C\x03\u022C\x03" +
		"\u022C\x05\u022C\u23DE\n\u022C\x03\u022C\x03\u022C\x05\u022C\u23E2\n\u022C" +
		"\x03\u022C\x03\u022C\x05\u022C\u23E6\n\u022C\x03\u022C\x03\u022C\x03\u022C" +
		"\x05\u022C\u23EB\n\u022C\x03\u022C\x03\u022C\x05\u022C\u23EF\n\u022C\x03" +
		"\u022C\x03\u022C\x05\u022C\u23F3\n\u022C\x05\u022C\u23F5\n\u022C\x03\u022C" +
		"\x03\u022C\x03\u022C\x03\u022C\x03\u022C\x03\u022C\x03\u022C\x05\u022C" +
		"\u23FE\n\u022C\x03\u022C\x03\u022C\x03\u022C\x05\u022C\u2403\n\u022C\x03" +
		"\u022C\x03\u022C\x03\u022C\x03\u022C\x05\u022C\u2409\n\u022C\x03\u022C" +
		"\x03\u022C\x05\u022C\u240D\n\u022C\x05\u022C\u240F\n\u022C\x03\u022C\x03" +
		"\u022C\x03\u022C\x03\u022C\x03\u022C\x05\u022C\u2416\n\u022C\x03\u022C" +
		"\x03\u022C\x03\u022C\x05\u022C\u241B\n\u022C\x03\u022C\x03\u022C\x03\u022C" +
		"\x03\u022C\x07\u022C\u2421\n\u022C\f\u022C\x0E\u022C\u2424\v\u022C\x03" +
		"\u022D\x05\u022D\u2427\n\u022D\x03\u022D\x03\u022D\x03\u022D\x03\u022D" +
		"\x03\u022D\x05\u022D\u242E\n\u022D\x03\u022E\x03\u022E\x03\u022F\x03\u022F" +
		"\x03\u022F\x05\u022F\u2435\n\u022F\x03\u022F\x05\u022F\u2438\n\u022F\x03" +
		"\u022F\x03\u022F\x03\u022F\x03\u022F\x05\u022F\u243E\n\u022F\x03\u0230" +
		"\x03\u0230\x05\u0230\u2442\n\u0230\x03\u0231\x03\u0231\x03\u0231\x03\u0231" +
		"\x03\u0231\x03\u0231\x03\u0231\x05\u0231\u244B\n\u0231\x03\u0232\x05\u0232" +
		"\u244E\n\u0232\x03\u0232\x03\u0232\x05\u0232\u2452\n\u0232\x03\u0232\x05" +
		"\u0232\u2455\n\u0232\x03\u0232\x05\u0232\u2458\n\u0232\x03\u0232\x03\u0232" +
		"\x03\u0232\x03\u0232\x03\u0232\x03\u0232\x05\u0232\u2460\n\u0232\x03\u0232" +
		"\x03\u0232\x03\u0232\x03\u0232\x05\u0232\u2466\n\u0232\x05\u0232\u2468" +
		"\n\u0232\x03\u0233\x03\u0233\x05\u0233\u246C\n\u0233\x03\u0233\x03\u0233" +
		"\x05\u0233\u2470\n\u0233\x03\u0233\x03\u0233\x03\u0233\x03\u0233\x05\u0233" +
		"\u2476\n\u0233\x03\u0233\x05\u0233\u2479\n\u0233\x03\u0233\x03\u0233\x03" +
		"\u0233\x03\u0233\x03\u0233\x03\u0233\x03\u0233\x05\u0233\u2482\n\u0233" +
		"\x03\u0233\x03\u0233\x03\u0233\x03\u0233\x03\u0233\x05\u0233\u2489\n\u0233" +
		"\x05\u0233\u248B\n\u0233\x03\u0234\x03\u0234\x03\u0234\x07\u0234\u2490" +
		"\n\u0234\f\u0234\x0E\u0234\u2493\v\u0234\x03\u0235\x03\u0235\x03\u0235" +
		"\x07\u0235\u2498\n\u0235\f\u0235\x0E\u0235\u249B\v\u0235\x03\u0236\x03" +
		"\u0236\x05\u0236\u249F\n\u0236\x03\u0236\x05\u0236\u24A2\n\u0236\x03\u0237" +
		"\x03\u0237\x03\u0237\x03\u0237\x03\u0237\x03\u0237\x05\u0237\u24AA\n\u0237" +
		"\x03\u0238\x03\u0238\x03\u0238\x03\u0238\x03\u0238\x03\u0239\x03\u0239" +
		"\x05\u0239\u24B3\n\u0239\x03\u0239\x03\u0239\x03\u0239\x03\u0239\x03\u0239" +
		"\x03\u0239\x05\u0239\u24BB\n\u0239\x05\u0239\u24BD\n\u0239\x03\u023A\x03" +
		"\u023A\x05\u023A\u24C1\n\u023A\x03\u023B\x03\u023B\x03\u023B\x07\u023B" +
		"\u24C6\n\u023B\f\u023B\x0E\u023B\u24C9\v\u023B\x03\u023C\x03\u023C\x03" +
		"\u023C\x03\u023C\x03\u023C\x03\u023D\x03\u023D\x03\u023D\x03\u023E\x03" +
		"\u023E\x03\u023E\x03\u023F\x03\u023F\x03\u023F\x03\u023F\x03\u023F\x05" +
		"\u023F\u24DB\n\u023F\x03\u0240\x03\u0240\x03\u0241\x03\u0241\x03\u0241" +
		"\x07\u0241\u24E2\n\u0241\f\u0241\x0E\u0241\u24E5\v\u0241\x03\u0242\x03" +
		"\u0242\x03\u0242\x05\u0242\u24EA\n\u0242\x03\u0243\x03\u0243\x03\u0243" +
		"\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243" +
		"\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243\x03\u0243" +
		"\x05\u0243\u24FD\n\u0243\x03\u0243\x03\u0243\x03";
	private static readonly _serializedATNSegment4: string =
		"\u0244\x03\u0244\x03\u0244\x07\u0244\u2504\n\u0244\f\u0244\x0E\u0244\u2507" +
		"\v\u0244\x03\u0245\x03\u0245\x03\u0245\x05\u0245\u250C\n\u0245\x03\u0245" +
		"\x03\u0245\x05\u0245\u2510\n\u0245\x03\u0246\x06\u0246\u2513\n\u0246\r" +
		"\u0246\x0E\u0246\u2514\x03\u0247\x03\u0247\x03\u0247\x03\u0247\x03\u0247" +
		"\x03\u0247\x03\u0247\x03\u0247\x05\u0247\u251F\n\u0247\x03\u0248\x03\u0248" +
		"\x03\u0248\x07\u0248\u2524\n\u0248\f\u0248\x0E\u0248\u2527\v\u0248\x03" +
		"\u0249\x03\u0249\x03\u0249\x03\u0249\x03\u0249\x03\u0249\x05\u0249\u252F" +
		"\n\u0249\x03\u024A\x05\u024A\u2532\n\u024A\x03\u024A\x03\u024A\x03\u024A" +
		"\x03\u024A\x03\u024A\x03\u024A\x03\u024A\x05\u024A\u253B\n\u024A\x05\u024A" +
		"\u253D\n\u024A\x03\u024A\x03\u024A\x03\u024A\x03\u024A\x05\u024A\u2543" +
		"\n\u024A\x03\u024B\x03\u024B\x05\u024B\u2547\n\u024B\x03\u024B\x07\u024B" +
		"\u254A\n\u024B\f\u024B\x0E\u024B\u254D\v\u024B\x03\u024C\x03\u024C\x03" +
		"\u024C\x03\u024C\x03\u024C\x03\u024C\x03\u024C\x05\u024C\u2556\n\u024C" +
		"\x03\u024C\x03\u024C\x03\u024C\x03\u024C\x05\u024C\u255C\n\u024C\x05\u024C" +
		"\u255E\n\u024C\x03\u024D\x03\u024D\x03\u024D\x03\u024D\x05\u024D\u2564" +
		"\n\u024D\x03\u024E\x03\u024E\x05\u024E\u2568\n\u024E\x03\u024E\x05\u024E" +
		"\u256B\n\u024E\x03\u024F\x03\u024F\x03\u024F\x03\u024F\x03\u0250\x03\u0250" +
		"\x03\u0250\x03\u0250\x03\u0250\x03\u0250\x03\u0250\x05\u0250\u2578\n\u0250" +
		"\x03\u0250\x03\u0250\x03\u0250\x03\u0250\x05\u0250\u257E\n\u0250\x03\u0250" +
		"\x03\u0250\x05\u0250\u2582\n\u0250\x03\u0250\x03\u0250\x05\u0250\u2586" +
		"\n\u0250\x03\u0250\x05\u0250\u2589\n\u0250\x03\u0251\x03\u0251\x03\u0251" +
		"\x03\u0251\x03\u0252\x03\u0252\x05\u0252\u2591\n\u0252\x03\u0253\x03\u0253" +
		"\x05\u0253\u2595\n\u0253\x03\u0254\x03\u0254\x05\u0254\u2599\n\u0254\x03" +
		"\u0254\x03\u0254\x03\u0254\x03\u0254\x03\u0255\x03\u0255\x05\u0255\u25A1" +
		"\n\u0255\x03\u0256\x03\u0256\x03\u0256\x03\u0256\x03\u0256\x05\u0256\u25A8" +
		"\n\u0256\x03\u0257\x03\u0257\x03\u0257\x03\u0257\x03\u0257\x05\u0257\u25AF" +
		"\n\u0257\x03\u0258\x03\u0258\x05\u0258\u25B3\n\u0258\x03\u0258\x03\u0258" +
		"\x03\u0258\x03\u0258\x05\u0258\u25B9\n\u0258\x05\u0258\u25BB\n\u0258\x03" +
		"\u0259\x03\u0259\x03\u025A\x03\u025A\x03\u025A\x03\u025A\x03\u025A\x05" +
		"\u025A\u25C4\n\u025A\x03\u025A\x05\u025A\u25C7\n\u025A\x03\u025B\x03\u025B" +
		"\x03\u025C\x03\u025C\x03\u025C\x03\u025C\x03\u025C\x03\u025C\x05\u025C" +
		"\u25D1\n\u025C\x03\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D" +
		"\x03\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D" +
		"\x03\u025D\x05\u025D\u25E1\n\u025D\x03\u025D\x03\u025D\x03\u025D\x03\u025D" +
		"\x05\u025D\u25E7\n\u025D\x03\u025D\x03\u025D\x03\u025D\x05\u025D\u25EC" +
		"\n\u025D\x03\u025E\x03\u025E\x03\u025E\x03\u025E\x03\u025E\x05\u025E\u25F3" +
		"\n\u025E\x03\u025F\x03\u025F\x03\u025F\x03\u0260\x03\u0260\x03\u0261\x03" +
		"\u0261\x05\u0261\u25FC\n\u0261\x03\u0262\x03\u0262\x03\u0262\x07\u0262" +
		"\u2601\n\u0262\f\u0262\x0E\u0262\u2604\v\u0262\x03\u0263\x03\u0263\x03" +
		"\u0263\x07\u0263\u2609\n\u0263\f\u0263\x0E\u0263\u260C\v\u0263\x03\u0264" +
		"\x03\u0264\x03\u0264\x07\u0264\u2611\n\u0264\f\u0264\x0E\u0264\u2614\v" +
		"\u0264\x03\u0265\x03\u0265\x05\u0265\u2618\n\u0265\x03\u0265\x03\u0265" +
		"\x05\u0265\u261C\n\u0265\x03\u0266\x05\u0266\u261F\n\u0266\x03\u0266\x03" +
		"\u0266\x03\u0267\x03\u0267\x05\u0267\u2625\n\u0267\x03\u0268\x03\u0268" +
		"\x03\u0268\x05\u0268\u262A\n\u0268\x03\u0268\x03\u0268\x03\u0268\x03\u0268" +
		"\x03\u0268\x03\u0268\x03\u0268\x03\u0268\x03\u0268\x03\u0268\x03\u0268" +
		"\x03\u0268\x03\u0268\x03\u0268\x05\u0268\u263A\n\u0268\x03\u0268\x05\u0268" +
		"\u263D\n\u0268\x05\u0268\u263F\n\u0268\x03\u0269\x03\u0269\x03\u0269\x03" +
		"\u0269\x03\u0269\x03\u0269\x03\u0269\x03\u0269\x03\u0269\x03\u0269\x05" +
		"\u0269\u264B\n\u0269\x05\u0269\u264D\n\u0269\x03\u026A\x03\u026A\x05\u026A" +
		"\u2651\n\u026A\x03\u026A\x03\u026A\x03\u026A\x03\u026A\x03\u026A\x03\u026A" +
		"\x05\u026A\u2659\n\u026A\x05\u026A\u265B\n\u026A\x03\u026A\x03\u026A\x05" +
		"\u026A\u265F\n\u026A\x05\u026A\u2661\n\u026A\x03\u026B\x03\u026B\x03\u026B" +
		"\x03\u026B\x07\u026B\u2667\n\u026B\f\u026B\x0E\u026B\u266A\v\u026B\x03" +
		"\u026C\x05\u026C\u266D\n\u026C\x03\u026C\x03\u026C\x03\u026D\x03\u026D" +
		"\x03\u026D\x07\u026D\u2674\n\u026D\f\u026D\x0E\u026D\u2677\v\u026D\x03" +
		"\u026E\x03\u026E\x03\u026E\x07\u026E\u267C\n\u026E\f\u026E\x0E\u026E\u267F" +
		"\v\u026E\x03\u026F\x03\u026F\x03\u026F\x05\u026F\u2684\n\u026F\x03\u0270" +
		"\x05\u0270\u2687\n\u0270\x03\u0270\x03\u0270\x03\u0271\x03\u0271\x03\u0271" +
		"\x03\u0271\x03\u0271\x05\u0271\u2690\n\u0271\x03\u0272\x03\u0272\x03\u0272" +
		"\x05\u0272\u2695\n\u0272\x03\u0273\x03\u0273\x03\u0273\x07\u0273\u269A" +
		"\n\u0273\f\u0273\x0E\u0273\u269D\v\u0273\x03\u0274\x03\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x05\u0274\u26A6\n\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x05\u0274\u26C0\n\u0274\x03\u0274\x03\u0274\x03\u0274" +
		"\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x03\u0274\x05\u0274" +
		"\u26CB\n\u0274\x07\u0274\u26CD\n\u0274\f\u0274\x0E\u0274\u26D0\v\u0274" +
		"\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x05\u0275\u26D7\n\u0275" +
		"\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275" +
		"\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275" +
		"\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275" +
		"\x05\u0275\u26EE\n\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275\x03\u0275" +
		"\x03\u0275\x05\u0275\u26F6\n\u0275\x03\u0276\x03\u0276\x03\u0277\x03\u0277" +
		"\x03\u0277\x03\u0277\x03\u0277\x03\u0277\x05\u0277\u2700\n\u0277\x03\u0277" +
		"\x05\u0277\u2703\n\u0277\x03\u0277\x03\u0277\x03\u0277\x05\u0277\u2708" +
		"\n\u0277\x03\u0277\x03\u0277\x03\u0277\x05\u0277\u270D\n\u0277\x03\u0277" +
		"\x03\u0277\x05\u0277\u2711\n\u0277\x03\u0277\x05\u0277\u2714\n\u0277\x03" +
		"\u0278\x03\u0278\x05\u0278\u2718\n\u0278\x03\u0278\x05\u0278\u271B\n\u0278" +
		"\x03\u0278\x05\u0278\u271E\n\u0278\x03\u0278\x05\u0278\u2721\n\u0278\x03" +
		"\u0279\x03\u0279\x05\u0279\u2725\n\u0279\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x05\u027A\u2733\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x05\u027A\u273A\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x05\u027A\u2741\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x05\u027A\u2748\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x05\u027A" +
		"\u275A\n\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x05\u027A\u2762\n\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x05\u027A\u276E\n\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x05\u027A\u2774\n\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x05\u027A\u2781\n\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x05\u027A\u27A8\n\u027A\x05\u027A\u27AA\n\u027A\x03\u027A\x03\u027A\x03" +
		"\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03" +
		"\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03" +
		"\u027A\x03\u027A\x05\u027A\u27BE\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x05\u027A\u27C8\n\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x05\u027A\u27D3\n\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A\x03\u027A" +
		"\x05\u027A\u27DF\n\u027A\x03\u027B\x03\u027B\x03\u027B\x03\u027B\x03\u027B" +
		"\x05\u027B\u27E6\n\u027B\x03\u027C\x03\u027C\x03\u027C\x03\u027C\x03\u027C" +
		"\x03\u027C\x03\u027C\x03\u027C\x03\u027C\x03\u027C\x05\u027C\u27F2\n\u027C" +
		"\x03\u027D\x03\u027D\x03\u027D\x03\u027D\x03\u027D\x03\u027E\x03\u027E" +
		"\x03\u027E\x07\u027E\u27FC\n\u027E\f\u027E\x0E\u027E\u27FF\v\u027E\x03" +
		"\u027F\x03\u027F\x03\u027F\x05\u027F\u2804\n\u027F\x03\u0280\x03\u0280" +
		"\x03\u0281\x03\u0281\x03\u0281\x03\u0281\x05\u0281\u280C\n\u0281\x03\u0282" +
		"\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282" +
		"\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282\x03\u0282" +
		"\x05\u0282\u281D\n\u0282\x03\u0283\x03\u0283\x03\u0283\x03\u0284\x03\u0284" +
		"\x03\u0284\x03\u0284\x03\u0284\x03\u0284\x03\u0285\x03\u0285\x03\u0285" +
		"\x03\u0285\x03\u0285\x03\u0285\x03\u0286\x03\u0286\x03\u0286\x03\u0287" +
		"\x03\u0287\x03\u0287\x07\u0287\u2834\n\u0287\f\u0287\x0E\u0287\u2837\v" +
		"\u0287\x03\u0288\x03\u0288\x03\u0288\x03\u0288\x03\u0289\x03\u0289\x03" +
		"\u0289\x05\u0289\u2840\n\u0289\x03\u028A\x03\u028A\x05\u028A\u2844\n\u028A" +
		"\x03\u028A\x05\u028A\u2847\n\u028A\x03\u028A\x05\u028A\u284A\n\u028A\x03" +
		"\u028A\x05\u028A\u284D\n\u028A\x03\u028A\x03\u028A\x03\u028B\x03\u028B" +
		"\x03\u028C\x03\u028C\x03\u028C\x03\u028C\x03\u028D\x03\u028D\x03\u028D" +
		"\x05\u028D\u285A\n\u028D\x03\u028D\x03\u028D\x03\u028D\x05\u028D\u285F" +
		"\n\u028D\x03\u028D\x03\u028D\x03\u028D\x05\u028D\u2864\n\u028D\x05\u028D" +
		"\u2866\n\u028D\x03\u028E\x03\u028E\x03\u028E\x03\u028E\x03\u028E\x03\u028E" +
		"\x05\u028E\u286E\n\u028E\x03\u028F\x03\u028F\x03\u028F\x03\u028F\x03\u028F" +
		"\x03\u028F\x03\u028F\x05\u028F\u2877\n\u028F\x03\u0290\x03\u0290\x03\u0290" +
		"\x03\u0290\x03\u0290\x03\u0290\x03\u0290\x05\u0290\u2880\n\u0290\x03\u0291" +
		"\x03\u0291\x03\u0291\x05\u0291\u2885\n\u0291\x03\u0291\x03\u0291\x03\u0291" +
		"\x03\u0291\x03\u0291\x03\u0291\x03\u0291\x05\u0291\u288E\n\u0291\x03\u0292" +
		"\x03\u0292\x03\u0292\x05\u0292\u2893\n\u0292\x03\u0292\x03\u0292\x03\u0293" +
		"\x03\u0293\x03\u0293\x03\u0293\x03\u0293\x03\u0293\x03\u0294\x03\u0294" +
		"\x03\u0295\x03\u0295\x05\u0295\u28A1\n\u0295\x03\u0296\x03\u0296\x03\u0297" +
		"\x03\u0297\x03\u0297\x03\u0297\x03\u0297\x03\u0297\x05\u0297\u28AB\n\u0297" +
		"\x03\u0298\x03\u0298\x03\u0298\x03\u0298\x03\u0298\x03\u0298\x05\u0298" +
		"\u28B3\n\u0298\x03\u0299\x03\u0299\x03\u0299\x03\u0299\x03\u0299\x03\u0299" +
		"\x03\u0299\x03\u0299\x03\u0299\x03\u0299\x03\u0299\x03\u0299\x05\u0299" +
		"\u28C1\n\u0299\x03\u029A\x03\u029A\x03\u029A\x07\u029A\u28C6\n\u029A\f" +
		"\u029A\x0E\u029A\u28C9\v\u029A\x03\u029B\x03\u029B\x03\u029B\x07\u029B" +
		"\u28CE\n\u029B\f\u029B\x0E\u029B\u28D1\v\u029B\x03\u029C\x03\u029C\x03" +
		"\u029C\x07\u029C\u28D6\n\u029C\f\u029C\x0E\u029C\u28D9\v\u029C\x03\u029D" +
		"\x03\u029D\x03\u029D\x03\u029D\x03\u029D\x05\u029D\u28E0\n\u029D\x03\u029E" +
		"\x03\u029E\x05\u029E\u28E4\n\u029E\x03\u029F\x03\u029F\x03\u029F\x07\u029F" +
		"\u28E9\n\u029F\f\u029F\x0E\u029F\u28EC\v\u029F\x03\u02A0\x03\u02A0\x03" +
		"\u02A0\x03\u02A0\x03\u02A0\x05\u02A0\u28F3\n\u02A0\x03\u02A1\x03\u02A1" +
		"\x03\u02A1\x07\u02A1\u28F8\n\u02A1\f\u02A1\x0E\u02A1\u28FB\v\u02A1\x03" +
		"\u02A2\x03\u02A2\x03\u02A2\x05\u02A2\u2900\n\u02A2\x03\u02A2\x03\u02A2" +
		"\x03\u02A3\x03\u02A3\x03\u02A3\x07\u02A3\u2907\n\u02A3\f\u02A3\x0E\u02A3" +
		"\u290A\v\u02A3\x03\u02A4\x03\u02A4\x03\u02A4\x03\u02A4\x03\u02A5\x03\u02A5" +
		"\x03\u02A5\x03\u02A5\x03\u02A5\x03\u02A5\x03\u02A5\x03\u02A5\x05\u02A5" +
		"\u2918\n\u02A5\x03\u02A6\x03\u02A6\x03\u02A7\x03\u02A7\x03\u02A7\x03\u02A7" +
		"\x03\u02A7\x03\u02A7\x03\u02A7\x05\u02A7\u2923\n\u02A7\x03\u02A8\x03\u02A8" +
		"\x03\u02A8\x03\u02A8\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9" +
		"\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9" +
		"\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9" +
		"\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9\x03\u02A9" +
		"\x03\u02A9\x05\u02A9\u2944\n\u02A9\x03\u02AA\x03\u02AA\x03\u02AA\x03\u02AA" +
		"\x03\u02AA\x03\u02AA\x03\u02AA\x05\u02AA\u294D\n\u02AA\x03\u02AB\x03\u02AB" +
		"\x03\u02AB\x03\u02AB\x03\u02AB\x05\u02AB\u2954\n\u02AB\x03\u02AC\x03\u02AC" +
		"\x05\u02AC\u2958\n\u02AC\x03\u02AC\x03\u02AC\x05\u02AC\u295C\n\u02AC\x03" +
		"\u02AC\x03\u02AC\x03\u02AD\x06\u02AD\u2961\n\u02AD\r\u02AD\x0E\u02AD\u2962" +
		"\x03\u02AE\x03\u02AE\x03\u02AE\x03\u02AE\x03\u02AE\x03\u02AF\x03\u02AF" +
		"\x03\u02AF\x03\u02B0\x03\u02B0\x03\u02B1\x03\u02B1\x05\u02B1\u2971\n\u02B1" +
		"\x03\u02B2\x03\u02B2\x03\u02B2\x05\u02B2\u2976\n\u02B2\x03\u02B2\x03\u02B2" +
		"\x03\u02B2\x05\u02B2\u297B\n\u02B2\x03\u02B2\x03\u02B2\x05\u02B2\u297F" +
		"\n\u02B2\x05\u02B2\u2981\n\u02B2\x03\u02B2\x05\u02B2\u2984\n\u02B2\x03" +
		"\u02B3\x03\u02B3\x03\u02B4\x06\u02B4\u2989\n\u02B4\r\u02B4\x0E\u02B4\u298A" +
		"\x03\u02B5\x07\u02B5\u298E\n\u02B5\f\u02B5\x0E\u02B5\u2991\v\u02B5\x03" +
		"\u02B6\x03\u02B6\x03\u02B7\x03\u02B7\x03\u02B7\x07\u02B7\u2998\n\u02B7" +
		"\f\u02B7\x0E\u02B7\u299B\v\u02B7\x03\u02B8\x03\u02B8\x03\u02B8\x03\u02B8" +
		"\x03\u02B8\x05\u02B8\u29A2\n\u02B8\x03\u02B8\x05\u02B8\u29A5\n\u02B8\x03" +
		"\u02B9\x03\u02B9\x03\u02B9\x07\u02B9\u29AA\n\u02B9\f\u02B9\x0E\u02B9\u29AD" +
		"\v\u02B9\x03\u02BA\x03\u02BA\x03\u02BA\x07\u02BA\u29B2\n\u02BA\f\u02BA" +
		"\x0E\u02BA\u29B5\v\u02BA\x03\u02BB\x03\u02BB\x03\u02BB\x07\u02BB\u29BA" +
		"\n\u02BB\f\u02BB\x0E\u02BB\u29BD\v\u02BB\x03\u02BC\x03\u02BC\x03\u02BC" +
		"\x07\u02BC\u29C2\n\u02BC\f\u02BC\x0E\u02BC\u29C5\v\u02BC\x03\u02BD\x03" +
		"\u02BD\x03\u02BD\x07\u02BD\u29CA\n\u02BD\f\u02BD\x0E\u02BD\u29CD\v\u02BD" +
		"\x03\u02BE\x03\u02BE\x05\u02BE\u29D1\n\u02BE\x03\u02BF\x03\u02BF\x05\u02BF" +
		"\u29D5\n\u02BF\x03\u02C0\x03\u02C0\x05\u02C0\u29D9\n\u02C0\x03\u02C1\x03" +
		"\u02C1\x05\u02C1\u29DD\n\u02C1\x03\u02C2\x03\u02C2\x05\u02C2\u29E1\n\u02C2" +
		"\x03\u02C3\x03\u02C3\x05\u02C3\u29E5\n\u02C3\x03\u02C4\x03\u02C4\x05\u02C4" +
		"\u29E9\n\u02C4\x03\u02C5\x03\u02C5\x03\u02C5\x07\u02C5\u29EE\n\u02C5\f" +
		"\u02C5\x0E\u02C5\u29F1\v\u02C5\x03\u02C6\x03\u02C6\x03\u02C6\x07\u02C6" +
		"\u29F6\n\u02C6\f\u02C6\x0E\u02C6\u29F9\v\u02C6\x03\u02C7\x03\u02C7\x05" +
		"\u02C7\u29FD\n\u02C7\x03\u02C8\x03\u02C8\x05\u02C8\u2A01\n\u02C8\x03\u02C9" +
		"\x03\u02C9\x05\u02C9\u2A05\n\u02C9\x03\u02CA\x03\u02CA\x03\u02CB\x03\u02CB" +
		"\x03\u02CC\x03\u02CC\x03\u02CC\x03\u02CC\x05\u02CC\u2A0F\n\u02CC\x03\u02CD" +
		"\x03\u02CD\x03\u02CD\x03\u02CD\x05\u02CD\u2A15\n\u02CD\x03\u02CE\x03\u02CE" +
		"\x03\u02CF\x03\u02CF\x03\u02D0\x03\u02D0\x03\u02D1\x03\u02D1\x03\u02D2" +
		"\x03\u02D2\x03\u02D3\x03\u02D3\x03\u02D3\x03\u02D3\x05\u02D3\u2A25\n\u02D3" +
		"\x03\u02D4\x03\u02D4\x03\u02D4\x03\u02D4\x05\u02D4\u2A2B\n\u02D4\x03\u02D5" +
		"\x03\u02D5\x03\u02D5\x03\u02D5\x05\u02D5\u2A31\n\u02D5\x03\u02D6\x03\u02D6" +
		"\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6" +
		"\x03\u02D6\x05\u02D6\u2A3D\n\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x05\u02D6" +
		"\u2A42\n\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6" +
		"\x05\u02D6\u2A4A\n\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x03\u02D6" +
		"\x05\u02D6\u2A51\n\u02D6\x03\u02D6\x03\u02D6\x03\u02D6\x05\u02D6\u2A56" +
		"\n\u02D6\x03\u02D7\x03\u02D7\x03\u02D8\x03\u02D8\x03\u02D9\x03\u02D9\x03" +
		"\u02DA\x03\u02DA\x03\u02DB\x03\u02DB\x05\u02DB\u2A62\n\u02DB\x03\u02DC" +
		"\x03\u02DC\x03\u02DC\x03\u02DC\x07\u02DC\u2A68\n\u02DC\f\u02DC\x0E\u02DC" +
		"\u2A6B\v\u02DC\x03\u02DC\x03\u02DC\x05\u02DC\u2A6F\n\u02DC\x03\u02DD\x03" +
		"\u02DD\x03\u02DD\x03\u02DE\x03\u02DE\x03\u02DE\x03\u02DE\x03\u02DE\x05" +
		"\u02DE\u2A79\n\u02DE\x03\u02DF\x03\u02DF\x03\u02E0\x03\u02E0\x03\u02E1" +
		"\x03\u02E1\x03\u02E1\x03\u02E1\x03\u02E1\x05\u02E1\u2A84\n\u02E1\x03\u02E2" +
		"\x03\u02E2\x03\u02E2\x07\u02E2\u2A89\n\u02E2\f\u02E2\x0E\u02E2\u2A8C\v" +
		"\u02E2\x03\u02E3\x03\u02E3\x03\u02E3\x03\u02E3\x05\u02E3\u2A92\n\u02E3" +
		"\x03\u02E4\x03\u02E4\x03\u02E5\x03\u02E5\x03\u02E5\x03\u02E5\x03\u02E5" +
		"\x03\u02E5\x03\u02E5\x05\u02E5\u2A9D\n\u02E5\x03\u02E5\x05\u02E5\u2AA0" +
		"\n\u02E5\x05\u02E5\u2AA2\n\u02E5\x03\u02E6\x03\u02E6\x05\u02E6\u2AA6\n" +
		"\u02E6\x03\u02E6\x05\u02E6\u2AA9\n\u02E6\x03\u02E7\x03\u02E7\x03\u02E7" +
		"\x03\u02E7\x05\u02E7\u2AAF\n\u02E7\x03\u02E8\x03\u02E8\x03\u02E8\x03\u02E8" +
		"\x05\u02E8\u2AB5\n\u02E8\x03\u02E9\x03\u02E9\x05\u02E9\u2AB9\n\u02E9\x03" +
		"\u02EA\x03\u02EA\x03\u02EA\x03\u02EA\x05\u02EA\u2ABF\n\u02EA\x03\u02EB" +
		"\x03\u02EB\x03\u02EB\x03\u02EB\x03\u02EB\x03\u02EB\x05\u02EB\u2AC7\n\u02EB" +
		"\x03\u02EC\x03\u02EC\x05\u02EC\u2ACB\n\u02EC\x03\u02EC\x03\u02EC\x03\u02EC" +
		"\x03\u02EC\x03\u02EC\x03\u02EC\x05\u02EC\u2AD3\n\u02EC\x03\u02ED\x03\u02ED" +
		"\x03\u02EE\x03\u02EE\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF" +
		"\x03\u02EF\x03\u02EF\x03\u02EF\x03\u02EF\x05\u02EF\u2B0C\n\u02EF\x03\u02F0" +
		"\x03\u02F0\x03\u02F1\x03\u02F1\x03\u02F2\x03\u02F2\x03\u02F2\x03\u02F2" +
		"\x03\u02F3\x07\u02F3\u2B17\n\u02F3\f\u02F3\x0E\u02F3\u2B1A\v\u02F3\x03" +
		"\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03" +
		"\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03" +
		"\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x03\u02F4\x05\u02F4\u2B30" +
		"\n\u02F4\x03\u02F5\x03\u02F5\x03\u02F6\x03\u02F6\x03\u02F6\x03\u02F6\x05" +
		"\u02F6\u2B38\n\u02F6\x03\u02F7\x03\u02F7\x05\u02F7\u2B3C\n\u02F7\x03\u02F8" +
		"\x03\u02F8\x03\u02F8\x03\u02F8\x03\u02F8\x03\u02F8\x03\u02F8\x03\u02F9" +
		"\x03\u02F9\x03\u02F9\x05\u02F9\u2B48\n\u02F9\x05\u02F9\u2B4A\n\u02F9\x03" +
		"\u02FA\x03\u02FA\x03\u02FB\x06\u02FB\u2B4F\n\u02FB\r\u02FB\x0E\u02FB\u2B50" +
		"\x03\u02FC\x03\u02FC\x03\u02FC\x03\u02FC\x03\u02FD\x03\u02FD\x03\u02FD" +
		"\x05\u02FD\u2B5A\n\u02FD\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE" +
		"\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE" +
		"\x03\u02FE\x03\u02FE\x03\u02FE\x03\u02FE\x05\u02FE\u2B6C\n\u02FE\x03\u02FE" +
		"\x03\u02FE\x03\u02FF\x03\u02FF\x03\u02FF\x03\u02FF\x05\u02FF\u2B74\n\u02FF" +
		"\x03\u0300\x03\u0300\x03\u0301\x03\u0301\x03\u0301\x03\u0301\x03\u0301" +
		"\x05\u0301\u2B7D\n\u0301\x03\u0302\x03\u0302\x03\u0302\x07\u0302\u2B82" +
		"\n\u0302\f\u0302\x0E\u0302\u2B85\v\u0302\x03\u0303\x03\u0303\x03\u0303" +
		"\x03\u0304\x03\u0304\x03\u0305\x03\u0305\x05\u0305\u2B8E\n\u0305\x03\u0306" +
		"\x03\u0306\x03\u0307\x03\u0307\x05\u0307\u2B94\n\u0307\x03\u0308\x03\u0308" +
		"\x03\u0309\x03\u0309\x03\u0309\x05\u0309\u2B9B\n\u0309\x03\u030A\x03\u030A" +
		"\x03\u030A\x05\u030A\u2BA0\n\u030A\x03\u030B\x03\u030B\x03\u030B\x03\u030B" +
		"\x05\u030B\u2BA6\n\u030B\x03\u030C\x03\u030C\x05\u030C\u2BAA\n\u030C\x03" +
		"\u030D\x03\u030D\x03\u030E\x07\u030E\u2BAF\n\u030E\f\u030E\x0E\u030E\u2BB2" +
		"\v\u030E\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03" +
		"\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03" +
		"\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03" +
		"\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x03\u030F\x05" +
		"\u030F\u2BCF\n\u030F\x03\u0310\x03\u0310\x03\u0310\x03\u0310\x03\u0311" +
		"\x03\u0311\x03\u0311\x03\u0311\x03\u0311\x03\u0311\x03\u0311\x05\u0311" +
		"\u2BDC\n\u0311\x03\u0311\x03\u0311\x03\u0311\x03\u0311\x03\u0311\x03\u0311" +
		"\x03\u0311\x05\u0311\u2BE5\n\u0311\x03\u0312\x03\u0312\x05\u0312\u2BE9" +
		"\n\u0312\x03\u0313\x03\u0313\x03\u0313\x03\u0313\x03\u0313\x03\u0314\x03" +
		"\u0314\x03\u0314\x03\u0314\x03\u0314\x03\u0314\x03\u0315\x03\u0315\x03" +
		"\u0315\x05\u0315\u2BF9\n\u0315\x03\u0316\x03\u0316\x03\u0316\x07\u0316" +
		"\u2BFE\n\u0316\f\u0316\x0E\u0316\u2C01\v\u0316\x03\u0317\x03\u0317\x03" +
		"\u0317\x03\u0317\x03\u0318\x03\u0318\x03\u0319\x03\u0319\x03\u031A\x03" +
		"\u031A\x05\u031A\u2C0D\n\u031A\x03\u031A\x03\u031A\x03\u031A\x03\u031A" +
		"\x07\u031A\u2C13\n\u031A\f\u031A\x0E\u031A\u2C16\v\u031A\x03\u031B\x03" +
		"\u031B\x03\u031B\x03\u031B\x03\u031B\x03\u031B\x03\u031B\x03\u031B\x03" +
		"\u031B\x03\u031B\x03\u031C\x03\u031C\x03\u031C\x03\u031C\x03\u031C\x07" +
		"\u031C\u2C27\n\u031C\f\u031C\x0E\u031C\u2C2A\v\u031C\x03\u031D\x03\u031D" +
		"\x03\u031D\x05\u031D\u2C2F\n\u031D\x03\u031E\x03\u031E\x03\u031E\x03\u031E" +
		"\x03\u031E\x03\u031E\x03\u031E\x03\u031E\x03\u031F\x03\u031F\x05\u031F" +
		"\u2C3B\n\u031F\x03\u0320\x06\u0320\u2C3E\n\u0320\r\u0320\x0E\u0320\u2C3F" +
		"\x03\u0321\x03\u0321\x03\u0321\x03\u0321\x03\u0321\x03\u0322\x03\u0322" +
		"\x03\u0322\x05\u0322\u2C4A\n\u0322\x03\u0323\x03\u0323\x03\u0323\x03\u0324" +
		"\x03\u0324\x03\u0324\x03\u0324\x03\u0324\x03\u0325\x03\u0325\x03\u0325" +
		"\x03\u0325\x03\u0325\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x03\u0326" +
		"\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x03\u0326" +
		"\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x03\u0326\x05\u0326\u2C6A\n\u0326" +
		"\x03\u0327\x03\u0327\x03\u0327\x05\u0327\u2C6F\n\u0327\x03\u0328\x03\u0328" +
		"\x03\u0328\x03\u0328\x03\u0328\x07\u0328\u2C76\n\u0328\f\u0328\x0E\u0328" +
		"\u2C79\v\u0328\x03\u0328\x03\u0328\x05\u0328\u2C7D\n\u0328\x03\u0329\x03" +
		"\u0329\x05\u0329\u2C81\n\u0329\x03\u032A\x03\u032A\x03\u032A\x05\u032A" +
		"\u2C86\n\u032A\x03\u032B\x03\u032B\x03\u032C\x03\u032C\x03\u032C\x03\u032C" +
		"\x03\u032C\x03\u032C\x03\u032C\x03\u032C\x03\u032C\x03\u032D\x03\u032D" +
		"\x03\u032D\x05\u032D\u2C96\n\u032D\x03\u032E\x03\u032E\x03\u032E\x05\u032E" +
		"\u2C9B\n\u032E\x03\u032E\x03\u032E\x03\u032F\x03\u032F\x03\u0330\x03\u0330" +
		"\x03\u0330\x03\u0330\x03\u0330\x03\u0330\x03\u0330\x03\u0330\x03\u0330" +
		"\x05\u0330\u2CAA\n\u0330\x03\u0330\x05\u0330\u2CAD\n\u0330\x03\u0330\x03" +
		"\u0330\x03\u0331\x03\u0331\x05\u0331\u2CB3\n\u0331\x03\u0332\x03\u0332" +
		"\x05\u0332\u2CB7\n\u0332\x03\u0332\x03\u0332\x03\u0332\x03\u0332\x03\u0332" +
		"\x03\u0332\x03\u0332\x05\u0332\u2CC0\n\u0332\x03\u0332\x03\u0332\x03\u0332" +
		"\x03\u0332\x03\u0332\x03\u0332\x05\u0332\u2CC8\n\u0332\x03\u0332\x03\u0332" +
		"\x03\u0332\x03\u0332\x03\u0332\x03\u0332\x03\u0332\x05\u0332\u2CD1\n\u0332" +
		"\x03\u0332\x03\u0332\x03\u0332\x03\u0332\x05\u0332\u2CD7\n\u0332\x03\u0333" +
		"\x03\u0333\x03\u0334\x03\u0334\x03\u0334\x06\u0334\u2CDE\n\u0334\r\u0334" +
		"\x0E\u0334\u2CDF\x05\u0334\u2CE2\n\u0334\x03\u0335\x03\u0335\x03\u0335" +
		"\x05\u0335\u2CE7\n\u0335\x03\u0336\x03\u0336\x03\u0336\x03\u0336\x03\u0337" +
		"\x03\u0337\x03\u0337\x07\u0337\u2CF0\n\u0337\f\u0337\x0E\u0337\u2CF3\v" +
		"\u0337\x03\u0338\x03\u0338\x03\u0338\x03\u0338\x03\u0338\x03\u0339\x03" +
		"\u0339\x03\u0339\x05\u0339\u2CFD\n\u0339\x03\u033A\x03\u033A\x03\u033A" +
		"\x03\u033A\x03\u033A\x03\u033A\x03\u033A\x03\u033B\x03\u033B\x03\u033B" +
		"\x03\u033C\x03\u033C\x03\u033C\x03\u033C\x03\u033C\x03\u033C\x03\u033C" +
		"\x03\u033C\x03\u033C\x05\u033C\u2D12\n\u033C\x03\u033C\x03\u033C\x03\u033D" +
		"\x03\u033D\x03\u033D\x05\u033D\u2D19\n\u033D\x03\u033E\x03\u033E\x03\u033E" +
		"\x07\u033E\u2D1E\n\u033E\f\u033E\x0E\u033E\u2D21\v\u033E\x03\u033F\x03" +
		"\u033F\x03\u033F\x05\u033F\u2D26\n\u033F\x03\u033F\x05\u033F\u2D29\n\u033F" +
		"\x03\u0340\x03\u0340\x03\u0340\x03\u0340\x03\u0340\x03\u0340\x03\u0340" +
		"\x03\u0340\x03\u0340\x05\u0340\u2D34\n\u0340\x03\u0340\x03\u0340\x03\u0340" +
		"\x03\u0340\x03\u0340\x05\u0340\u2D3B\n\u0340\x05\u0340\u2D3D\n\u0340\x03" +
		"\u0340\x03\u0340\x03\u0341\x03\u0341\x03\u0341\x03\u0341\x03\u0341\x05" +
		"\u0341\u2D46\n\u0341\x03\u0342\x03\u0342\x03\u0342\x07\u0342\u2D4B\n\u0342" +
		"\f\u0342\x0E\u0342\u2D4E\v\u0342\x03\u0343\x03\u0343\x03\u0343\x05\u0343" +
		"\u2D53\n\u0343\x03\u0344\x03\u0344\x03\u0344\x03\u0344\x05\u0344\u2D59" +
		"\n\u0344\x03\u0345\x03\u0345\x05\u0345\u2D5D\n\u0345\x03\u0346\x03\u0346" +
		"\x05\u0346\u2D61\n\u0346\x03\u0346\x03\u0346\x03\u0346\x03\u0346\x03\u0346" +
		"\x03\u0346\x03\u0347\x03\u0347\x03\u0348\x03\u0348\x03\u0348\x05\u0348" +
		"\u2D6E\n\u0348\x03\u0349\x03\u0349\x03\u0349\x03\u0349\x03\u0349\x03\u0349" +
		"\x03\u0349\x03\u0349\x03\u0349\x03\u0349\x03\u0349\x03\u0349\x03\u0349" +
		"\x05\u0349\u2D7D\n\u0349\x05\u0349\u2D7F\n\u0349\x03\u034A\x03\u034A\x05" +
		"\u034A\u2D83\n\u034A\x03\u034A\x03\u034A\x03\u034A\x03\u034B\x05\u034B" +
		"\u2D89\n\u034B\x03\u034B\x03\u034B\x03\u034B\x05\u034B\u2D8E\n\u034B\x03" +
		"\u034B\x03\u034B\x05\u034B\u2D92\n\u034B\x03\u034B\x05\u034B\u2D95\n\u034B" +
		"\x03\u034B\x05\u034B\u2D98\n\u034B\x03\u034B\x03\u034B\x03\u034B\x03\u034B" +
		"\x03\u034B\x06\u034B\u2D9F\n\u034B\r\u034B\x0E\u034B\u2DA0\x03\u034C\x05" +
		"\u034C\u2DA4\n\u034C\x03\u034C\x03\u034C\x05\u034C\u2DA8\n\u034C\x03\u034C" +
		"\x03\u034C\x05\u034C\u2DAC\n\u034C\x05\u034C\u2DAE\n\u034C\x03\u034C\x05" +
		"\u034C\u2DB1\n\u034C\x03\u034C\x05\u034C\u2DB4\n\u034C\x03\u034D\x03\u034D" +
		"\x03\u034E\x03\u034E\x03\u034E\x03\u034E\x05\u034E\u2DBC\n\u034E\x03\u034E" +
		"\x03\u034E\x03\u034E\x03\u034E\x03\u034E\x05\u034E\u2DC3\n\u034E\x03\u034E" +
		"\x03\u034E\x03\u034E\x03\u034E\x03\u034E\x05\u034E\u2DCA\n\u034E\x03\u034E" +
		"\x03\u034E\x03\u034E\x03\u034E\x05\u034E\u2DD0\n\u034E\x05\u034E\u2DD2" +
		"\n\u034E\x03\u034F\x03\u034F\x03\u034F\x03\u034F\x03\u034F\x05\u034F\u2DD9" +
		"\n\u034F\x03\u034F\x03\u034F\x03\u034F\x05\u034F\u2DDE\n\u034F\x03\u034F" +
		"\x03\u034F\x03\u0350\x03\u0350\x03\u0350\x03\u0350\x03\u0350\x03\u0350" +
		"\x03\u0350\x03\u0350\x03\u0350\x03\u0350\x03\u0350\x03\u0350\x03\u0350" +
		"\x03\u0350\x06\u0350\u2DF0\n\u0350\r\u0350\x0E\u0350\u2DF1\x03\u0351\x03" +
		"\u0351\x03\u0351\x03\u0351\x05\u0351\u2DF8\n\u0351\x03\u0352\x03\u0352" +
		"\x03\u0352\x03\u0352\x07\u0352\u2DFE\n\u0352\f\u0352\x0E\u0352\u2E01\v" +
		"\u0352\x03\u0352\x03\u0352\x03\u0353\x03\u0353\x05\u0353\u2E07\n\u0353" +
		"\x03\u0354\x03\u0354\x03\u0354\x03\u0354\x03\u0355\x03\u0355\x03\u0355" +
		"\x03\u0356\x03\u0356\x05\u0356\u2E12\n\u0356\x03\u0356\x03\u0356\x03\u0357" +
		"\x03\u0357";
	private static readonly _serializedATNSegment5: string =
		"\x05\u0357\u2E18\n\u0357\x03\u0357\x03\u0357\x03\u0358\x03\u0358\x05\u0358" +
		"\u2E1E\n\u0358\x03\u0358\x03\u0358\x03\u0359\x03\u0359\x03\u0359\x03\u0359" +
		"\x03\u0359\x03\u0359\x03\u0359\x03\u0359\x03\u0359\x05\u0359\u2E2B\n\u0359" +
		"\x03\u0359\x05\u0359\u2E2E\n\u0359\x03\u035A\x03\u035A\x05\u035A\u2E32" +
		"\n\u035A\x03\u035B\x03\u035B\x03\u035B\x05\u035B\u2E37\n\u035B\x03\u035C" +
		"\x06\u035C\u2E3A\n\u035C\r\u035C\x0E\u035C\u2E3B\x03\u035D\x03\u035D\x03" +
		"\u035D\x03\u035D\x03\u035D\x03\u035E\x03\u035E\x03\u035E\x07\u035E\u2E46" +
		"\n\u035E\f\u035E\x0E\u035E\u2E49\v\u035E\x03\u035F\x03\u035F\x03\u035F" +
		"\x05\u035F\u2E4E\n\u035F\x03\u0360\x03\u0360\x05\u0360\u2E52\n\u0360\x03" +
		"\u0361\x03\u0361\x05\u0361\u2E56\n\u0361\x03\u0362\x03\u0362\x05\u0362" +
		"\u2E5A\n\u0362\x03\u0363\x03\u0363\x03\u0363\x03\u0364\x03\u0364\x05\u0364" +
		"\u2E61\n\u0364\x03\u0365\x03\u0365\x03\u0366\x05\u0366\u2E66\n\u0366\x03" +
		"\u0366\x05\u0366\u2E69\n\u0366\x03\u0366\x05\u0366\u2E6C\n\u0366\x03\u0366" +
		"\x05\u0366\u2E6F\n\u0366\x03\u0366\x05\u0366\u2E72\n\u0366\x03\u0366\x05" +
		"\u0366\u2E75\n\u0366\x03\u0366\x05\u0366\u2E78\n\u0366\x03\u0367\x03\u0367" +
		"\x03\u0368\x03\u0368\x03\u0369\x03\u0369\x03\u036A\x03\u036A\x03\u036B" +
		"\x03\u036B\x05\u036B\u2E84\n\u036B\x03\u036C\x03\u036C\x03\u036C\x03\u036C" +
		"\x03\u036C\x02\x02\x03\u04E6\u036D\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\x02" +
		"8\x02:\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02" +
		"T\x02V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02" +
		"p\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\u034A\x02\u034C\x02\u034E\x02\u0350" +
		"\x02\u0352\x02\u0354\x02\u0356\x02\u0358\x02\u035A\x02\u035C\x02\u035E" +
		"\x02\u0360\x02\u0362\x02\u0364\x02\u0366\x02\u0368\x02\u036A\x02\u036C" +
		"\x02\u036E\x02\u0370\x02\u0372\x02\u0374\x02\u0376\x02\u0378\x02\u037A" +
		"\x02\u037C\x02\u037E\x02\u0380\x02\u0382\x02\u0384\x02\u0386\x02\u0388" +
		"\x02\u038A\x02\u038C\x02\u038E\x02\u0390\x02\u0392\x02\u0394\x02\u0396" +
		"\x02\u0398\x02\u039A\x02\u039C\x02\u039E\x02\u03A0\x02\u03A2\x02\u03A4" +
		"\x02\u03A6\x02\u03A8\x02\u03AA\x02\u03AC\x02\u03AE\x02\u03B0\x02\u03B2" +
		"\x02\u03B4\x02\u03B6\x02\u03B8\x02\u03BA\x02\u03BC\x02\u03BE\x02\u03C0" +
		"\x02\u03C2\x02\u03C4\x02\u03C6\x02\u03C8\x02\u03CA\x02\u03CC\x02\u03CE" +
		"\x02\u03D0\x02\u03D2\x02\u03D4\x02\u03D6\x02\u03D8\x02\u03DA\x02\u03DC" +
		"\x02\u03DE\x02\u03E0\x02\u03E2\x02\u03E4\x02\u03E6\x02\u03E8\x02\u03EA" +
		"\x02\u03EC\x02\u03EE\x02\u03F0\x02\u03F2\x02\u03F4\x02\u03F6\x02\u03F8" +
		"\x02\u03FA\x02\u03FC\x02\u03FE\x02\u0400\x02\u0402\x02\u0404\x02\u0406" +
		"\x02\u0408\x02\u040A\x02\u040C\x02\u040E\x02\u0410\x02\u0412\x02\u0414" +
		"\x02\u0416\x02\u0418\x02\u041A\x02\u041C\x02\u041E\x02\u0420\x02\u0422" +
		"\x02\u0424\x02\u0426\x02\u0428\x02\u042A\x02\u042C\x02\u042E\x02\u0430" +
		"\x02\u0432\x02\u0434\x02\u0436\x02\u0438\x02\u043A\x02\u043C\x02\u043E" +
		"\x02\u0440\x02\u0442\x02\u0444\x02\u0446\x02\u0448\x02\u044A\x02\u044C" +
		"\x02\u044E\x02\u0450\x02\u0452\x02\u0454\x02\u0456\x02\u0458\x02\u045A" +
		"\x02\u045C\x02\u045E\x02\u0460\x02\u0462\x02\u0464\x02\u0466\x02\u0468" +
		"\x02\u046A\x02\u046C\x02\u046E\x02\u0470\x02\u0472\x02\u0474\x02\u0476" +
		"\x02\u0478\x02\u047A\x02\u047C\x02\u047E\x02\u0480\x02\u0482\x02\u0484" +
		"\x02\u0486\x02\u0488\x02\u048A\x02\u048C\x02\u048E\x02\u0490\x02\u0492" +
		"\x02\u0494\x02\u0496\x02\u0498\x02\u049A\x02\u049C\x02\u049E\x02\u04A0" +
		"\x02\u04A2\x02\u04A4\x02\u04A6\x02\u04A8\x02\u04AA\x02\u04AC\x02\u04AE" +
		"\x02\u04B0\x02\u04B2\x02\u04B4\x02\u04B6\x02\u04B8\x02\u04BA\x02\u04BC" +
		"\x02\u04BE\x02\u04C0\x02\u04C2\x02\u04C4\x02\u04C6\x02\u04C8\x02\u04CA" +
		"\x02\u04CC\x02\u04CE\x02\u04D0\x02\u04D2\x02\u04D4\x02\u04D6\x02\u04D8" +
		"\x02\u04DA\x02\u04DC\x02\u04DE\x02\u04E0\x02\u04E2\x02\u04E4\x02\u04E6" +
		"\x02\u04E8\x02\u04EA\x02\u04EC\x02\u04EE\x02\u04F0\x02\u04F2\x02\u04F4" +
		"\x02\u04F6\x02\u04F8\x02\u04FA\x02\u04FC\x02\u04FE\x02\u0500\x02\u0502" +
		"\x02\u0504\x02\u0506\x02\u0508\x02\u050A\x02\u050C\x02\u050E\x02\u0510" +
		"\x02\u0512\x02\u0514\x02\u0516\x02\u0518\x02\u051A\x02\u051C\x02\u051E" +
		"\x02\u0520\x02\u0522\x02\u0524\x02\u0526\x02\u0528\x02\u052A\x02\u052C" +
		"\x02\u052E\x02\u0530\x02\u0532\x02\u0534\x02\u0536\x02\u0538\x02\u053A" +
		"\x02\u053C\x02\u053E\x02\u0540\x02\u0542\x02\u0544\x02\u0546\x02\u0548" +
		"\x02\u054A\x02\u054C\x02\u054E\x02\u0550\x02\u0552\x02\u0554\x02\u0556" +
		"\x02\u0558\x02\u055A\x02\u055C\x02\u055E\x02\u0560\x02\u0562\x02\u0564" +
		"\x02\u0566\x02\u0568\x02\u056A\x02\u056C\x02\u056E\x02\u0570\x02\u0572" +
		"\x02\u0574\x02\u0576\x02\u0578\x02\u057A\x02\u057C\x02\u057E\x02\u0580" +
		"\x02\u0582\x02\u0584\x02\u0586\x02\u0588\x02\u058A\x02\u058C\x02\u058E" +
		"\x02\u0590\x02\u0592\x02\u0594\x02\u0596\x02\u0598\x02\u059A\x02\u059C" +
		"\x02\u059E\x02\u05A0\x02\u05A2\x02\u05A4\x02\u05A6\x02\u05A8\x02\u05AA" +
		"\x02\u05AC\x02\u05AE\x02\u05B0\x02\u05B2\x02\u05B4\x02\u05B6\x02\u05B8" +
		"\x02\u05BA\x02\u05BC\x02\u05BE\x02\u05C0\x02\u05C2\x02\u05C4\x02\u05C6" +
		"\x02\u05C8\x02\u05CA\x02\u05CC\x02\u05CE\x02\u05D0\x02\u05D2\x02\u05D4" +
		"\x02\u05D6\x02\u05D8\x02\u05DA\x02\u05DC\x02\u05DE\x02\u05E0\x02\u05E2" +
		"\x02\u05E4\x02\u05E6\x02\u05E8\x02\u05EA\x02\u05EC\x02\u05EE\x02\u05F0" +
		"\x02\u05F2\x02\u05F4\x02\u05F6\x02\u05F8\x02\u05FA\x02\u05FC\x02\u05FE" +
		"\x02\u0600\x02\u0602\x02\u0604\x02\u0606\x02\u0608\x02\u060A\x02\u060C" +
		"\x02\u060E\x02\u0610\x02\u0612\x02\u0614\x02\u0616\x02\u0618\x02\u061A" +
		"\x02\u061C\x02\u061E\x02\u0620\x02\u0622\x02\u0624\x02\u0626\x02\u0628" +
		"\x02\u062A\x02\u062C\x02\u062E\x02\u0630\x02\u0632\x02\u0634\x02\u0636" +
		"\x02\u0638\x02\u063A\x02\u063C\x02\u063E\x02\u0640\x02\u0642\x02\u0644" +
		"\x02\u0646\x02\u0648\x02\u064A\x02\u064C\x02\u064E\x02\u0650\x02\u0652" +
		"\x02\u0654\x02\u0656\x02\u0658\x02\u065A\x02\u065C\x02\u065E\x02\u0660" +
		"\x02\u0662\x02\u0664\x02\u0666\x02\u0668\x02\u066A\x02\u066C\x02\u066E" +
		"\x02\u0670\x02\u0672\x02\u0674\x02\u0676\x02\u0678\x02\u067A\x02\u067C" +
		"\x02\u067E\x02\u0680\x02\u0682\x02\u0684\x02\u0686\x02\u0688\x02\u068A" +
		"\x02\u068C\x02\u068E\x02\u0690\x02\u0692\x02\u0694\x02\u0696\x02\u0698" +
		"\x02\u069A\x02\u069C\x02\u069E\x02\u06A0\x02\u06A2\x02\u06A4\x02\u06A6" +
		"\x02\u06A8\x02\u06AA\x02\u06AC\x02\u06AE\x02\u06B0\x02\u06B2\x02\u06B4" +
		"\x02\u06B6\x02\u06B8\x02\u06BA\x02\u06BC\x02\u06BE\x02\u06C0\x02\u06C2" +
		"\x02\u06C4\x02\u06C6\x02\u06C8\x02\u06CA\x02\u06CC\x02\u06CE\x02\u06D0" +
		"\x02\u06D2\x02\u06D4\x02\u06D6\x02\x02S\x04\x02\xC5\xC5\u016E\u016E\x03" +
		"\x02\xE6\xE7\x03\x02\xEE\xEF\x03\x02\xEC\xED\x03\x02\xEA\xEB\x03\x02\xE8" +
		"\xE9\x03\x02\u0219\u021A\x03\x02\u021B\u021C\x03\x02\u021D\u021E\x04\x02" +
		"DD\u0140\u0140\x04\x02ee\u0140\u0140\x03\x02\u0213\u0215\x04\x02\f\f`" +
		"`\x04\x02\x87\x87\xC1\xC1\x04\x02\u0100\u0100\u014E\u014E\x04\x02\xA4" +
		"\xA4\u016D\u016D\x04\x02\xB6\xB6\xDF\xDF\x07\x02  \u0122\u0122\u014B\u014B" +
		"\u0162\u0162\u0164\u0164\x04\x02oo\u0216\u0216\x04\x02\x98\x98\u013D\u013D" +
		"\x04\x02BB``\x04\x02\u0162\u0162\u0164\u0164\x04\x02\xCA\xCA\xE2\xE2\v" +
		"\x02  \xA2\xA2\xA7\xA7\xB5\xB5\xDD\xDD\xE5\xE5\u0158\u0158\u015B\u015B" +
		"\u01B8\u01B8\x05\x02ss\u011E\u011E\u0152\u0152\x04\x0277PP\x05\x02\xAF" +
		"\xAF\u0106\u0106\u0108\u0108\x04\x02\v\v``\x07\x02  ZZ\xB8\xB8\xF3\xF3" +
		"\u0173\u0173\x04\x02^^\xE4\xE4\x04\x02\u0157\u0157\u01A0\u01A0\x03\x02" +
		"\u01C2\u01C3\x04\x02^^\u01A0\u01A0\x05\x02DDee\u0140\u0140\x05\x02\u0143" +
		"\u0143\u0167\u0167\u01BF\u01BF\x04\x02BBFF\f\x0200ZZ\xB8\xB8\xCC\xCC\xF3" +
		"\xF3\u0162\u0162\u0164\u0164\u0167\u0168\u0173\u0173\u020B\u020D\x07\x02" +
		"\xD6\xD6\u014B\u014B\u0160\u0160\u016B\u016B\u01C9\u01CA\x04\x02\'\'9" +
		"9\x04\x02\f\f77\x06\x02ZZ\xB8\xB8\xF3\xF3\u0173\u0173\x04\x02\x8B\x8B" +
		"\xF4\xF4\x04\x02\u0166\u0166\u017E\u017E\x04\x02\x99\x99\u0100\u0100\x04" +
		"\x02\u013B\u013B\u014F\u014F\x03\x02!\"\x04\x02>>bb\x04\x02ee\u015F\u015F" +
		"\x04\x02\xCB\xCB\u0150\u0150\x03\x02\u0211\u0212\x04\x02\xD7\xD7\u0100" +
		"\u0100\x04\x02  ::\x04\x02\u0142\u0142\u01A0\u01A0\x04\x02\xD1\xD1\u010E" +
		"\u010E\x06\x02ssuuyy\x80\x80\x04\x02\u016A\u016A\u01DF\u01DF\x04\x02\u0189" +
		"\u018A\u0198\u0198\x03\x02\u0189\u018A\x03\x02\u01A4\u01A5\x03\x02\x14" +
		"\x15\x04\x02ww||\x07\x02\f\f\x12\x13\x17\x17\x19\x19\x1B\x1B\x03\x02\x0E" +
		"\x0F\x05\x02\v\v\x10\x10\x1D\x1D\x05\x02))KKaa\x04\x02\xA8\xA8\xBE\xBE" +
		"\x04\x02\u0132\u0132\u01C4\u01C4\x04\x02\xD2\xD2\u0123\u0123\x05\x02 " +
		" $$\\\\\b\x02\v\f\x0E\x13\x17\x17\x19\x19\x1B\x1B\x1D\x1D\x04\x02\x16" +
		"\x16\x18\x18\x03\x02\u01E5\u01E8\f\x02~~\x83\xE6\xF0\u0184\u01B3\u01C6" +
		"\u01C9\u01D7\u01D9\u01D9\u01DB\u01DB\u01DD\u01DD\u01E0\u01EA\u0225\u0226" +
		"\x05\x02l}\x7F\x82\u01DA\u01DA\x06\x02 68HJk\u01C8\u01C8\x04\x02@@vv\x04" +
		"\x02\f\f\x16\x16\x04\x02\xA9\xA9\u01FD\u01FD\x03\x02\u0202\u0207\x04\x02" +
		"\x92\x92\xD4\xD4&\x02##%%-/77;;??^^vv}}\x84\x84\x92\x92\x9B\x9B\x9F\x9F" +
		"\xA3\xA3\xA9\xA9\xAE\xAE\xD1\xD1\xD4\xD4\xF3\xF3\xFB\xFB\u010B\u010B\u010E" +
		"\u010F\u0119\u0119\u0127\u0127\u0135\u0135\u013B\u013B\u0141\u0141\u0145" +
		"\u0146\u014F\u014F\u016A\u016A\u01B3\u01B4\u01DF\u01DF\u01EC\u01F8\u01FA" +
		"\u01FA\u01FC\u0208\u020A\u020A\x02\u33C8\x02\u06DB\x03\x02\x02\x02\x04" +
		"\u06E0\x03\x02\x02\x02\x06\u06E2\x03\x02\x02\x02\b\u075B\x03\x02\x02\x02" +
		"\n\u075D\x03\x02\x02\x02\f\u0761\x03\x02\x02\x02\x0E\u0764\x03\x02\x02" +
		"\x02\x10\u076C\x03\x02\x02\x02\x12\u0771\x03\x02\x02\x02\x14\u0777\x03" +
		"\x02\x02\x02\x16\u079D\x03\x02\x02\x02\x18\u07A9\x03\x02\x02\x02\x1A\u07AB" +
		"\x03\x02\x02\x02\x1C\u07B3\x03\x02\x02\x02\x1E\u07BF\x03\x02\x02\x02 " +
		"\u07C1\x03\x02\x02\x02\"\u07CA\x03\x02\x02\x02$\u07E6\x03\x02\x02\x02" +
		"&\u07E8\x03\x02\x02\x02(\u0818\x03\x02\x02\x02*\u081A\x03\x02\x02\x02" +
		",\u0822\x03\x02\x02\x02.\u0829\x03\x02\x02\x020\u082B\x03\x02\x02\x02" +
		"2\u083A\x03\x02\x02\x024\u0841\x03\x02\x02\x026\u084A\x03\x02\x02\x02" +
		"8\u084C\x03\x02\x02\x02:\u085A\x03\x02\x02\x02<\u085E\x03\x02\x02\x02" +
		">\u0882\x03\x02\x02\x02@\u0884\x03\x02\x02\x02B\u088C\x03\x02\x02\x02" +
		"D\u0896\x03\x02\x02\x02F\u089D\x03\x02\x02\x02H\u08A3\x03\x02\x02\x02" +
		"J\u08A9\x03\x02\x02\x02L\u08BB\x03\x02\x02\x02N\u08BF\x03\x02\x02\x02" +
		"P\u08C3\x03\x02\x02\x02R\u08C7\x03\x02\x02\x02T\u08C9\x03\x02\x02\x02" +
		"V\u08D4\x03\x02\x02\x02X\u08D8\x03\x02\x02\x02Z\u08DD\x03\x02\x02\x02" +
		"\\\u08E2\x03\x02\x02\x02^\u08E4\x03\x02\x02\x02`\u08F0\x03\x02\x02\x02" +
		"b\u08F7\x03\x02\x02\x02d\u08F9\x03\x02\x02\x02f\u08FB\x03\x02\x02\x02" +
		"h\u08FD\x03\x02\x02\x02j\u0985\x03\x02\x02\x02l\u0987\x03\x02\x02\x02" +
		"n\u0998\x03\x02\x02\x02p\u099A\x03\x02\x02\x02r\u09A8\x03\x02\x02\x02" +
		"t\u09AA\x03\x02\x02\x02v\u09BA\x03\x02\x02\x02x\u09BC\x03\x02\x02\x02" +
		"z\u0AC6\x03\x02\x02\x02|\u0ACD\x03\x02\x02\x02~\u0ACF\x03\x02\x02\x02" +
		"\x80\u0AD1\x03\x02\x02\x02\x82\u0AD4\x03\x02\x02\x02\x84\u0ADD\x03\x02" +
		"\x02\x02\x86\u0ADF\x03\x02\x02\x02\x88\u0AE3\x03\x02\x02\x02\x8A\u0AE6" +
		"\x03\x02\x02\x02\x8C\u0AEE\x03\x02\x02\x02\x8E\u0AFA\x03\x02\x02\x02\x90" +
		"\u0B0B\x03\x02\x02\x02\x92\u0B27\x03\x02\x02\x02\x94\u0B29\x03\x02\x02" +
		"\x02\x96\u0B2C\x03\x02\x02\x02\x98\u0B34\x03\x02\x02\x02\x9A\u0B39\x03" +
		"\x02\x02\x02\x9C\u0B5E\x03\x02\x02\x02\x9E\u0B60\x03\x02\x02\x02\xA0\u0B8A" +
		"\x03\x02\x02\x02\xA2\u0B8C\x03\x02\x02\x02\xA4\u0B8E\x03\x02\x02\x02\xA6" +
		"\u0B93\x03\x02\x02\x02\xA8\u0B9A\x03\x02\x02\x02\xAA\u0B9F\x03\x02\x02" +
		"\x02\xAC\u0BC9\x03\x02\x02\x02\xAE\u0BCB\x03\x02\x02\x02\xB0\u0BCE\x03" +
		"\x02\x02\x02\xB2\u0BD3\x03\x02\x02\x02\xB4\u0BD5\x03\x02\x02\x02\xB6\u0BDD" +
		"\x03\x02\x02\x02\xB8\u0BE8\x03\x02\x02\x02\xBA\u0BEA\x03\x02\x02\x02\xBC" +
		"\u0BF2\x03\x02\x02\x02\xBE\u0BF4\x03\x02\x02\x02\xC0\u0C47\x03\x02\x02" +
		"\x02\xC2\u0C49\x03\x02\x02\x02\xC4\u0C4B\x03\x02\x02\x02\xC6\u0C4D\x03" +
		"\x02\x02\x02\xC8\u0C51\x03\x02\x02\x02\xCA\u0C59\x03\x02\x02\x02\xCC\u0C64" +
		"\x03\x02\x02\x02\xCE\u0C68\x03\x02\x02\x02\xD0\u0C6A\x03\x02\x02\x02\xD2" +
		"\u0C7F\x03\x02\x02\x02\xD4\u0C94\x03\x02\x02\x02\xD6\u0C97\x03\x02\x02" +
		"\x02\xD8\u0CA0\x03\x02\x02\x02\xDA\u0CAA\x03\x02\x02\x02\xDC\u0CBF\x03" +
		"\x02\x02\x02\xDE\u0CFB\x03\x02\x02\x02\xE0\u0CFD\x03\x02\x02\x02\xE2\u0D06" +
		"\x03\x02\x02\x02\xE4\u0D0B\x03\x02\x02\x02\xE6\u0D0D\x03\x02\x02\x02\xE8" +
		"\u0D10\x03\x02\x02\x02\xEA\u0D18\x03\x02\x02\x02\xEC\u0D1B\x03\x02\x02" +
		"\x02\xEE\u0D22\x03\x02\x02\x02\xF0\u0D7A\x03\x02\x02\x02\xF2\u0D7C\x03" +
		"\x02\x02\x02\xF4\u0D7F\x03\x02\x02\x02\xF6\u0D83\x03\x02\x02\x02\xF8\u0D8B" +
		"\x03\x02\x02\x02\xFA\u0D90\x03\x02\x02\x02\xFC\u0D93\x03\x02\x02\x02\xFE" +
		"\u0D9B\x03\x02\x02\x02\u0100\u0DA5\x03\x02\x02\x02\u0102\u0DB2\x03\x02" +
		"\x02\x02\u0104\u0DB4\x03\x02\x02\x02\u0106\u0DB8\x03\x02\x02\x02\u0108" +
		"\u0DC5\x03\x02\x02\x02\u010A\u0DC7\x03\x02\x02\x02\u010C\u0DCC\x03\x02" +
		"\x02\x02\u010E\u0DCE\x03\x02\x02\x02\u0110\u0DD5\x03\x02\x02\x02\u0112" +
		"\u0DF4\x03\x02\x02\x02\u0114\u0DF6\x03\x02\x02\x02\u0116\u0DFF\x03\x02" +
		"\x02\x02\u0118\u0E01\x03\x02\x02\x02\u011A\u0E0A\x03\x02\x02\x02\u011C" +
		"\u0E0E\x03\x02\x02\x02\u011E\u0E16\x03\x02\x02\x02\u0120\u0E1B\x03\x02" +
		"\x02\x02\u0122\u0E1F\x03\x02\x02\x02\u0124\u0E32\x03\x02\x02\x02\u0126" +
		"\u0E3C\x03\x02\x02\x02\u0128\u0E4A\x03\x02\x02\x02\u012A\u0E5A\x03\x02" +
		"\x02\x02\u012C\u0E60\x03\x02\x02\x02\u012E\u0E6F\x03\x02\x02\x02\u0130" +
		"\u0E7C\x03\x02\x02\x02\u0132\u0E7E\x03\x02\x02\x02\u0134\u0E88\x03\x02" +
		"\x02\x02\u0136\u0E94\x03\x02\x02\x02\u0138\u0E9C\x03\x02\x02\x02\u013A" +
		"\u0E9E\x03\x02\x02\x02\u013C\u0EA3\x03\x02\x02\x02\u013E\u0EC9\x03\x02" +
		"\x02\x02\u0140\u0ECB\x03\x02\x02\x02\u0142\u0ED3\x03\x02\x02\x02\u0144" +
		"\u0ED5\x03\x02\x02\x02\u0146\u0EDD\x03\x02\x02\x02\u0148\u0EF3\x03\x02" +
		"\x02\x02\u014A\u0EF5\x03\x02\x02\x02\u014C\u0EF9\x03\x02\x02\x02\u014E" +
		"\u0F00\x03\x02\x02\x02\u0150\u0F02\x03\x02\x02\x02\u0152\u0F04\x03\x02" +
		"\x02\x02\u0154\u0F06\x03\x02\x02\x02\u0156\u0F11\x03\x02\x02\x02\u0158" +
		"\u0F14\x03\x02\x02\x02\u015A\u0F22\x03\x02\x02\x02\u015C\u0F2C\x03\x02" +
		"\x02\x02\u015E\u0F2E\x03\x02\x02\x02\u0160\u0F37\x03\x02\x02\x02\u0162" +
		"\u0F3A\x03\x02\x02\x02\u0164\u0FA3\x03\x02\x02\x02\u0166\u0FA5\x03\x02" +
		"\x02\x02\u0168\u0FB8\x03\x02\x02\x02\u016A\u0FBB\x03\x02\x02\x02\u016C" +
		"\u0FBF\x03\x02\x02\x02\u016E\u0FD2\x03\x02\x02\x02\u0170\u0FD4\x03\x02" +
		"\x02\x02\u0172\u0FD9\x03\x02\x02\x02\u0174\u0FE1\x03\x02\x02\x02\u0176" +
		"\u0FE6\x03\x02\x02\x02\u0178\u0FF5\x03\x02\x02\x02\u017A\u0FF7\x03\x02" +
		"\x02\x02\u017C\u0FFA\x03\x02\x02\x02\u017E\u0FFC\x03\x02\x02\x02\u0180" +
		"\u0FFE\x03\x02\x02\x02\u0182\u1011\x03\x02\x02\x02\u0184\u1014\x03\x02" +
		"\x02\x02\u0186\u1019\x03\x02\x02\x02\u0188\u101B\x03\x02\x02\x02\u018A" +
		"\u104C\x03\x02\x02\x02\u018C\u104E\x03\x02\x02\x02\u018E\u1060\x03\x02" +
		"\x02\x02\u0190\u1062\x03\x02\x02\x02\u0192\u1067\x03\x02\x02\x02\u0194" +
		"\u1076\x03\x02\x02\x02\u0196\u1078\x03\x02\x02\x02\u0198\u1081\x03\x02" +
		"\x02\x02\u019A\u1095\x03\x02\x02\x02\u019C\u10A3\x03\x02\x02\x02\u019E" +
		"\u10C5\x03\x02\x02\x02\u01A0\u10E3\x03\x02\x02\x02\u01A2\u10E5\x03\x02" +
		"\x02\x02\u01A4\u10EA\x03\x02\x02\x02\u01A6\u10F0\x03\x02\x02\x02\u01A8" +
		"\u10F3\x03\x02\x02\x02\u01AA\u10F6\x03\x02\x02\x02\u01AC\u10FC\x03\x02" +
		"\x02\x02\u01AE\u10FF\x03\x02\x02\x02\u01B0\u1101\x03\x02\x02\x02\u01B2" +
		"\u110A\x03\x02\x02\x02\u01B4\u1142\x03\x02\x02\x02\u01B6\u1148\x03\x02" +
		"\x02\x02\u01B8\u114A\x03\x02\x02\x02\u01BA\u1150\x03\x02\x02\x02\u01BC" +
		"\u1152\x03\x02\x02\x02\u01BE\u1161\x03\x02\x02\x02\u01C0\u1163\x03\x02" +
		"\x02\x02\u01C2\u1167\x03\x02\x02\x02\u01C4\u116B\x03\x02\x02\x02\u01C6" +
		"\u1172\x03\x02\x02\x02\u01C8\u1174\x03\x02\x02\x02\u01CA\u1176\x03\x02" +
		"\x02\x02\u01CC\u1178\x03\x02\x02\x02\u01CE\u117E\x03\x02\x02\x02\u01D0" +
		"\u1180\x03\x02\x02\x02\u01D2\u1182\x03\x02\x02\x02\u01D4\u118B\x03\x02" +
		"\x02\x02\u01D6\u118F\x03\x02\x02\x02\u01D8\u119C\x03\x02\x02\x02\u01DA" +
		"\u119E\x03\x02\x02\x02\u01DC\u11A4\x03\x02\x02\x02\u01DE\u11B2\x03\x02" +
		"\x02\x02\u01E0\u11CC\x03\x02\x02\x02\u01E2\u11CE\x03\x02\x02\x02\u01E4" +
		"\u11D6\x03\x02\x02\x02\u01E6\u11DC\x03\x02\x02\x02\u01E8\u11E4\x03\x02" +
		"\x02\x02\u01EA\u11F0\x03\x02\x02\x02\u01EC\u11F2\x03\x02\x02\x02\u01EE" +
		"\u1262\x03\x02\x02\x02\u01F0\u1264\x03\x02\x02\x02\u01F2\u1268\x03\x02" +
		"\x02\x02\u01F4\u1270\x03\x02\x02\x02\u01F6\u127B\x03\x02\x02\x02\u01F8" +
		"\u127D\x03\x02\x02\x02\u01FA\u1281\x03\x02\x02\x02\u01FC\u1289\x03\x02" +
		"\x02\x02\u01FE\u128D\x03\x02\x02\x02\u0200\u128F\x03\x02\x02\x02\u0202" +
		"\u12C2\x03\x02\x02\x02\u0204\u12C4\x03\x02\x02\x02\u0206\u12C8\x03\x02" +
		"\x02\x02\u0208\u12DA\x03\x02\x02\x02\u020A\u1301\x03\x02\x02\x02\u020C" +
		"\u1303\x03\x02\x02\x02\u020E\u1305\x03\x02\x02\x02\u0210\u130E\x03\x02" +
		"\x02\x02\u0212\u1310\x03\x02\x02\x02\u0214\u1312\x03\x02\x02\x02\u0216" +
		"\u132B\x03\x02\x02\x02\u0218\u132D\x03\x02\x02\x02\u021A\u1341\x03\x02" +
		"\x02\x02\u021C\u1343\x03\x02\x02\x02\u021E\u14C5\x03\x02\x02\x02\u0220" +
		"\u14C7\x03\x02\x02\x02\u0222\u14F3\x03\x02\x02\x02\u0224\u1514\x03\x02" +
		"\x02\x02\u0226\u1516\x03\x02\x02\x02\u0228\u1518\x03\x02\x02\x02\u022A" +
		"\u1520\x03\x02\x02\x02\u022C\u1524\x03\x02\x02\x02\u022E\u1528\x03\x02" +
		"\x02\x02\u0230\u152C\x03\x02\x02\x02\u0232\u1532\x03\x02\x02\x02\u0234" +
		"\u1536\x03\x02\x02\x02\u0236\u153E\x03\x02\x02\x02\u0238\u154D\x03\x02" +
		"\x02\x02\u023A\u15F4\x03\x02\x02\x02\u023C\u15F8\x03\x02\x02\x02\u023E" +
		"\u1667\x03\x02\x02\x02\u0240\u1669\x03\x02\x02\x02\u0242\u166E\x03\x02" +
		"\x02\x02\u0244\u1674\x03\x02\x02\x02\u0246\u16CB\x03\x02\x02\x02\u0248" +
		"\u16CD\x03\x02\x02\x02\u024A\u16CF\x03\x02\x02\x02\u024C\u16D1\x03\x02" +
		"\x02\x02\u024E\u16EF\x03\x02\x02\x02\u0250\u1701\x03\x02\x02\x02\u0252" +
		"\u1703\x03\x02\x02\x02\u0254\u170B\x03\x02\x02\x02\u0256\u170D\x03\x02" +
		"\x02\x02\u0258\u1725\x03\x02\x02\x02\u025A\u1761\x03\x02\x02\x02\u025C" +
		"\u1763\x03\x02\x02\x02\u025E\u176E\x03\x02\x02\x02\u0260\u1770\x03\x02" +
		"\x02\x02\u0262\u1774\x03\x02\x02\x02\u0264\u1795\x03\x02\x02\x02\u0266" +
		"\u1797\x03\x02\x02\x02\u0268\u179B\x03\x02\x02\x02\u026A\u179F\x03\x02" +
		"\x02\x02\u026C\u17A8\x03\x02\x02\x02\u026E\u17B4\x03\x02\x02\x02\u0270" +
		"\u17D4\x03\x02\x02\x02\u0272\u17D6\x03\x02\x02\x02\u0274\u17D8\x03\x02" +
		"\x02\x02\u0276\u17FD\x03\x02\x02\x02\u0278\u17FF\x03\x02\x02\x02\u027A" +
		"\u1801\x03\x02\x02\x02\u027C\u1803\x03\x02\x02\x02\u027E\u1806\x03\x02" +
		"\x02\x02\u0280\u1825\x03\x02\x02\x02\u0282\u1832\x03\x02\x02\x02\u0284" +
		"\u1834\x03\x02\x02\x02\u0286\u1839\x03\x02\x02\x02\u0288\u1841\x03\x02" +
		"\x02\x02\u028A\u1844\x03\x02\x02\x02\u028C\u1846\x03\x02\x02\x02\u028E" +
		"\u184C\x03\x02\x02\x02\u0290\u184E\x03\x02\x02\x02\u0292\u1869\x03\x02" +
		"\x02\x02\u0294\u1874\x03\x02\x02\x02\u0296\u1877\x03\x02\x02\x02\u0298" +
		"\u187D\x03\x02\x02\x02\u029A\u1885\x03\x02\x02\x02\u029C\u1895\x03\x02" +
		"\x02\x02\u029E\u1897\x03\x02\x02\x02\u02A0\u18A7\x03\x02\x02\x02\u02A2" +
		"\u18A9\x03\x02\x02\x02\u02A4\u18B9\x03\x02\x02\x02\u02A6\u18BB\x03\x02" +
		"\x02\x02\u02A8\u18C1\x03\x02\x02\x02\u02AA\u18D6\x03\x02\x02\x02\u02AC" +
		"\u18DF\x03\x02\x02\x02\u02AE\u18E1\x03\x02\x02\x02\u02B0\u18E3\x03\x02" +
		"\x02\x02\u02B2\u18F1\x03\x02\x02\x02\u02B4\u18F3\x03\x02\x02\x02\u02B6" +
		"\u18F8\x03\x02\x02\x02\u02B8\u18FA\x03\x02\x02\x02\u02BA\u1909\x03\x02" +
		"\x02\x02\u02BC\u1911\x03\x02\x02\x02\u02BE\u1914\x03\x02\x02\x02\u02C0" +
		"\u191D\x03\x02\x02\x02\u02C2\u1944\x03\x02\x02\x02\u02C4\u195F\x03\x02" +
		"\x02\x02\u02C6\u1961\x03\x02\x02\x02\u02C8\u196D\x03\x02\x02\x02\u02CA" +
		"\u1970\x03\x02\x02\x02\u02CC\u1973\x03\x02\x02\x02\u02CE\u197B\x03\x02" +
		"\x02\x02\u02D0\u1987\x03\x02\x02\x02\u02D2\u198A\x03\x02\x02\x02\u02D4" +
		"\u198E\x03\x02\x02\x02\u02D6\u19AB\x03\x02\x02\x02\u02D8\u19AD\x03\x02" +
		"\x02\x02\u02DA\u19B6\x03\x02\x02\x02\u02DC\u19D5\x03\x02\x02\x02\u02DE" +
		"\u19DC\x03\x02\x02\x02\u02E0\u19E1\x03\x02\x02\x02\u02E2\u19E9\x03\x02" +
		"\x02\x02\u02E4\u19EC\x03\x02\x02\x02\u02E6\u19F0\x03\x02\x02\x02\u02E8" +
		"\u19F7\x03\x02\x02\x02\u02EA\u1A1E\x03\x02\x02\x02\u02EC\u1A24\x03\x02" +
		"\x02\x02\u02EE\u1A26\x03\x02\x02\x02\u02F0\u1A29\x03\x02\x02\x02\u02F2" +
		"\u1A58\x03\x02\x02\x02\u02F4\u1A6A\x03\x02\x02\x02\u02F6\u1A76\x03\x02" +
		"\x02\x02\u02F8\u1A87\x03\x02\x02\x02\u02FA\u1A89\x03\x02\x02\x02\u02FC" +
		"\u1A91\x03\x02\x02\x02\u02FE\u1A9F\x03\x02\x02\x02\u0300\u1C28\x03\x02" +
		"\x02\x02\u0302\u1C2A\x03\x02\x02\x02\u0304\u1C2C\x03\x02\x02\x02\u0306" +
		"\u1C74\x03\x02\x02\x02\u0308\u1C76\x03\x02\x02\x02\u030A\u1D31\x03\x02" +
		"\x02\x02\u030C\u1D33\x03\x02\x02\x02\u030E\u1D3B\x03\x02\x02\x02\u0310" +
		"\u1D4B\x03\x02\x02\x02\u0312\u1D52\x03\x02\x02\x02\u0314\u1D54\x03\x02" +
		"\x02\x02";
	private static readonly _serializedATNSegment6: string =
		"\u0316\u1E15\x03\x02\x02\x02\u0318\u1E17\x03\x02\x02\x02\u031A\u1E20\x03" +
		"\x02\x02\x02\u031C\u1E28\x03\x02\x02\x02\u031E\u1E50\x03\x02\x02\x02\u0320" +
		"\u1E52\x03\x02\x02\x02\u0322\u1E5C\x03\x02\x02\x02\u0324\u1E64\x03\x02" +
		"\x02\x02\u0326\u1EB4\x03\x02\x02\x02\u0328\u1EB6\x03\x02\x02\x02\u032A" +
		"\u1ED0\x03\x02\x02\x02\u032C\u1ED3\x03\x02\x02\x02\u032E\u1EE3\x03\x02" +
		"\x02\x02\u0330\u1EE5\x03\x02\x02\x02\u0332\u1EE7\x03\x02\x02\x02\u0334" +
		"\u1EE9\x03\x02\x02\x02\u0336\u1EEB\x03\x02\x02\x02\u0338\u1EF0\x03\x02" +
		"\x02\x02\u033A\u1EF3\x03\x02\x02\x02\u033C\u1EFA\x03\x02\x02\x02\u033E" +
		"\u1F41\x03\x02\x02\x02\u0340\u1F43\x03\x02\x02\x02\u0342\u1F4F\x03\x02" +
		"\x02\x02\u0344\u1F51\x03\x02\x02\x02\u0346\u1F5B\x03\x02\x02\x02\u0348" +
		"\u1F5D\x03\x02\x02\x02\u034A\u1F63\x03\x02\x02\x02\u034C\u1F83\x03\x02" +
		"\x02\x02\u034E\u1F8A\x03\x02\x02\x02\u0350\u1F8D\x03\x02\x02\x02\u0352" +
		"\u1F96\x03\x02\x02\x02\u0354\u1F99\x03\x02\x02\x02\u0356\u1F9D\x03\x02" +
		"\x02\x02\u0358\u1FAE\x03\x02\x02\x02\u035A\u1FB0\x03\x02\x02\x02\u035C" +
		"\u1FB2\x03\x02\x02\x02\u035E\u1FC5\x03\x02\x02\x02\u0360\u1FCB\x03\x02" +
		"\x02\x02\u0362\u1FD3\x03\x02\x02\x02\u0364\u1FD5\x03\x02\x02\x02\u0366" +
		"\u1FDB\x03\x02\x02\x02\u0368\u1FE0\x03\x02\x02\x02\u036A\u1FE9\x03\x02" +
		"\x02\x02\u036C\u2003\x03\x02\x02\x02\u036E\u2005\x03\x02\x02\x02\u0370" +
		"\u204B\x03\x02\x02\x02\u0372\u204D\x03\x02\x02\x02\u0374\u204F\x03\x02" +
		"\x02\x02\u0376\u206E\x03\x02\x02\x02\u0378\u2070\x03\x02\x02\x02\u037A" +
		"\u207B\x03\x02\x02\x02\u037C\u2098\x03\x02\x02\x02\u037E\u20A8\x03\x02" +
		"\x02\x02\u0380\u20AA\x03\x02\x02\x02\u0382\u20B2\x03\x02\x02\x02\u0384" +
		"\u20B4\x03\x02\x02\x02\u0386\u20BA\x03\x02\x02\x02\u0388\u20BE\x03\x02" +
		"\x02\x02\u038A\u20C0\x03\x02\x02\x02\u038C\u20C2\x03\x02\x02\x02\u038E" +
		"\u20CD\x03\x02\x02\x02\u0390\u20CF\x03\x02\x02\x02\u0392\u20D3\x03\x02" +
		"\x02\x02\u0394\u20D7\x03\x02\x02\x02\u0396\u20DC\x03\x02\x02\x02\u0398" +
		"\u20DE\x03\x02\x02\x02\u039A\u20E0\x03\x02\x02\x02\u039C\u20E4\x03\x02" +
		"\x02\x02\u039E\u20E8\x03\x02\x02\x02\u03A0\u20F0\x03\x02\x02\x02\u03A2" +
		"\u2104\x03\x02\x02\x02\u03A4\u210F\x03\x02\x02\x02\u03A6\u2111\x03\x02" +
		"\x02\x02\u03A8\u2119\x03\x02\x02\x02\u03AA\u211F\x03\x02\x02\x02\u03AC" +
		"\u2123\x03\x02\x02\x02\u03AE\u2125\x03\x02\x02\x02\u03B0\u212D\x03\x02" +
		"\x02\x02\u03B2\u2135\x03\x02\x02\x02\u03B4\u214E\x03\x02\x02\x02\u03B6" +
		"\u2150\x03\x02\x02\x02\u03B8\u215E\x03\x02\x02\x02\u03BA\u2161\x03\x02" +
		"\x02\x02\u03BC\u216D\x03\x02\x02\x02\u03BE\u2176\x03\x02\x02\x02\u03C0" +
		"\u2182\x03\x02\x02\x02\u03C2\u2184\x03\x02\x02\x02\u03C4\u218C\x03\x02" +
		"\x02\x02\u03C6\u218F\x03\x02\x02\x02\u03C8\u21A7\x03\x02\x02\x02\u03CA" +
		"\u21A9\x03\x02\x02\x02\u03CC\u21AD\x03\x02\x02\x02\u03CE\u21BB\x03\x02" +
		"\x02\x02\u03D0\u21BE\x03\x02\x02\x02\u03D2\u21C9\x03\x02\x02\x02\u03D4" +
		"\u21D9\x03\x02\x02\x02\u03D6\u21DB\x03\x02\x02\x02\u03D8\u21E0\x03\x02" +
		"\x02\x02\u03DA\u21E3\x03\x02\x02\x02\u03DC\u21F2\x03\x02\x02\x02\u03DE" +
		"\u220C\x03\x02\x02\x02\u03E0\u220E\x03\x02\x02\x02\u03E2\u2211\x03\x02" +
		"\x02\x02\u03E4\u2219\x03\x02\x02\x02\u03E6\u2221\x03\x02\x02\x02\u03E8" +
		"\u222A\x03\x02\x02\x02\u03EA\u2232\x03\x02\x02\x02\u03EC\u2236\x03\x02" +
		"\x02\x02\u03EE\u2240\x03\x02\x02\x02\u03F0\u225F\x03\x02\x02\x02\u03F2" +
		"\u2263\x03\x02\x02\x02\u03F4\u2292\x03\x02\x02\x02\u03F6\u22A1\x03\x02" +
		"\x02\x02\u03F8\u22A3\x03\x02\x02\x02\u03FA\u22A7\x03\x02\x02\x02\u03FC" +
		"\u22AD\x03\x02\x02\x02\u03FE\u22B5\x03\x02\x02\x02\u0400\u22C6\x03\x02" +
		"\x02\x02\u0402\u22CE\x03\x02\x02\x02\u0404\u22DF\x03\x02\x02\x02\u0406" +
		"\u22E1\x03\x02\x02\x02\u0408\u22E3\x03\x02\x02\x02\u040A\u22EC\x03\x02" +
		"\x02\x02\u040C\u22FE\x03\x02\x02\x02\u040E\u2300\x03\x02\x02\x02\u0410" +
		"\u2302\x03\x02\x02\x02\u0412\u2304\x03\x02\x02\x02\u0414\u230C\x03\x02" +
		"\x02\x02\u0416\u230E\x03\x02\x02\x02\u0418\u2310\x03\x02\x02\x02\u041A" +
		"\u2314\x03\x02\x02\x02\u041C\u231C\x03\x02\x02\x02\u041E\u2331\x03\x02" +
		"\x02\x02\u0420\u2333\x03\x02\x02\x02\u0422\u2335\x03\x02\x02\x02\u0424" +
		"\u233B\x03\x02\x02\x02\u0426\u234C\x03\x02\x02\x02\u0428\u2355\x03\x02" +
		"\x02\x02\u042A\u2357\x03\x02\x02\x02\u042C\u235E\x03\x02\x02\x02\u042E" +
		"\u2362\x03\x02\x02\x02\u0430\u2364\x03\x02\x02\x02\u0432\u2366\x03\x02" +
		"\x02\x02\u0434\u2368\x03\x02\x02\x02\u0436\u236F\x03\x02\x02\x02\u0438" +
		"\u2380\x03\x02\x02\x02\u043A\u2382\x03\x02\x02\x02\u043C\u2385\x03\x02" +
		"\x02\x02\u043E\u238A\x03\x02\x02\x02\u0440\u238F\x03\x02\x02\x02\u0442" +
		"\u2395\x03\x02\x02\x02\u0444\u239C\x03\x02\x02\x02\u0446\u239E\x03\x02" +
		"\x02\x02\u0448\u23A1\x03\x02\x02\x02\u044A\u23A5\x03\x02\x02\x02\u044C" +
		"\u23AC\x03\x02\x02\x02\u044E\u23B8\x03\x02\x02\x02\u0450\u23BB\x03\x02" +
		"\x02\x02\u0452\u23C9\x03\x02\x02\x02\u0454\u23CC\x03\x02\x02\x02\u0456" +
		"\u240E\x03\x02\x02\x02\u0458\u2426\x03\x02\x02\x02\u045A\u242F\x03\x02" +
		"\x02\x02\u045C\u243D\x03\x02\x02\x02\u045E\u243F\x03\x02\x02\x02\u0460" +
		"\u244A\x03\x02\x02\x02\u0462\u2467\x03\x02\x02\x02\u0464\u248A\x03\x02" +
		"\x02\x02\u0466\u248C\x03\x02\x02\x02\u0468\u2494\x03\x02\x02\x02\u046A" +
		"\u249C\x03\x02\x02\x02\u046C\u24A3\x03\x02\x02\x02\u046E\u24AB\x03\x02" +
		"\x02\x02\u0470\u24BC\x03\x02\x02\x02\u0472\u24BE\x03\x02\x02\x02\u0474" +
		"\u24C2\x03\x02\x02\x02\u0476\u24CA\x03\x02\x02\x02\u0478\u24CF\x03\x02" +
		"\x02\x02\u047A\u24D2\x03\x02\x02\x02\u047C\u24D5\x03\x02\x02\x02\u047E" +
		"\u24DC\x03\x02\x02\x02\u0480\u24DE\x03\x02\x02\x02\u0482\u24E6\x03\x02" +
		"\x02\x02\u0484\u24EB\x03\x02\x02\x02\u0486\u2500\x03\x02\x02\x02\u0488" +
		"\u2508\x03\x02\x02\x02\u048A\u2512\x03\x02\x02\x02\u048C\u251E\x03\x02" +
		"\x02\x02\u048E\u2520\x03\x02\x02\x02\u0490\u252E\x03\x02\x02\x02\u0492" +
		"\u2542\x03\x02\x02\x02\u0494\u254B\x03\x02\x02\x02\u0496\u255D\x03\x02" +
		"\x02\x02\u0498\u2563\x03\x02\x02\x02\u049A\u2565\x03\x02\x02\x02\u049C" +
		"\u256C\x03\x02\x02\x02\u049E\u2588\x03\x02\x02\x02\u04A0\u258A\x03\x02" +
		"\x02\x02\u04A2\u2590\x03\x02\x02\x02\u04A4\u2594\x03\x02\x02\x02\u04A6" +
		"\u2596\x03\x02\x02\x02\u04A8\u259E\x03\x02\x02\x02\u04AA\u25A2\x03\x02" +
		"\x02\x02\u04AC\u25A9\x03\x02\x02\x02\u04AE\u25BA\x03\x02\x02\x02\u04B0" +
		"\u25BC\x03\x02\x02\x02\u04B2\u25BE\x03\x02\x02\x02\u04B4\u25C8\x03\x02" +
		"\x02\x02\u04B6\u25D0\x03\x02\x02\x02\u04B8\u25EB\x03\x02\x02\x02\u04BA" +
		"\u25ED\x03\x02\x02\x02\u04BC\u25F4\x03\x02\x02\x02\u04BE\u25F7\x03\x02" +
		"\x02\x02\u04C0\u25F9\x03\x02\x02\x02\u04C2\u25FD\x03\x02\x02\x02\u04C4" +
		"\u2605\x03\x02\x02\x02\u04C6\u260D\x03\x02\x02\x02\u04C8\u2615\x03\x02" +
		"\x02\x02\u04CA\u261E\x03\x02\x02\x02\u04CC\u2622\x03\x02\x02\x02\u04CE" +
		"\u2626\x03\x02\x02\x02\u04D0\u2640\x03\x02\x02\x02\u04D2\u264E\x03\x02" +
		"\x02\x02\u04D4\u2662\x03\x02\x02\x02\u04D6\u266C\x03\x02\x02\x02\u04D8" +
		"\u2670\x03\x02\x02\x02\u04DA\u2678\x03\x02\x02\x02\u04DC\u2680\x03\x02" +
		"\x02\x02\u04DE\u2686\x03\x02\x02\x02\u04E0\u268A\x03\x02\x02\x02\u04E2" +
		"\u2691\x03\x02\x02\x02\u04E4\u2696\x03\x02\x02\x02\u04E6\u26A5\x03\x02" +
		"\x02\x02\u04E8\u26F5\x03\x02\x02\x02\u04EA\u26F7\x03\x02\x02\x02\u04EC" +
		"\u26F9\x03\x02\x02\x02\u04EE\u2720\x03\x02\x02\x02\u04F0\u2724\x03\x02" +
		"\x02\x02\u04F2\u27DE\x03\x02\x02\x02\u04F4\u27E5\x03\x02\x02\x02\u04F6" +
		"\u27F1\x03\x02\x02\x02\u04F8\u27F3\x03\x02\x02\x02\u04FA\u27F8\x03\x02" +
		"\x02\x02\u04FC\u2800\x03\x02\x02\x02\u04FE\u2805\x03\x02\x02\x02\u0500" +
		"\u280B\x03\x02\x02\x02\u0502\u281C\x03\x02\x02\x02\u0504\u281E\x03\x02" +
		"\x02\x02\u0506\u2821\x03\x02\x02\x02\u0508\u2827\x03\x02\x02\x02\u050A" +
		"\u282D\x03\x02\x02\x02\u050C\u2830\x03\x02\x02\x02\u050E\u2838\x03\x02" +
		"\x02\x02\u0510\u283C\x03\x02\x02\x02\u0512\u2841\x03\x02\x02\x02\u0514" +
		"\u2850\x03\x02\x02\x02\u0516\u2852\x03\x02\x02\x02\u0518\u2865\x03\x02" +
		"\x02\x02\u051A\u286D\x03\x02\x02\x02\u051C\u2876\x03\x02\x02\x02\u051E" +
		"\u2878\x03\x02\x02\x02\u0520\u288D\x03\x02\x02\x02\u0522\u288F\x03\x02" +
		"\x02\x02\u0524\u2896\x03\x02\x02\x02\u0526\u289C\x03\x02\x02\x02\u0528" +
		"\u28A0\x03\x02\x02\x02\u052A\u28A2\x03\x02\x02\x02\u052C\u28AA\x03\x02" +
		"\x02\x02\u052E\u28B2\x03\x02\x02\x02\u0530\u28C0\x03\x02\x02\x02\u0532" +
		"\u28C2\x03\x02\x02\x02\u0534\u28CA\x03\x02\x02\x02\u0536\u28D2\x03\x02" +
		"\x02\x02\u0538\u28DF\x03\x02\x02\x02\u053A\u28E3\x03\x02\x02\x02\u053C" +
		"\u28E5\x03\x02\x02\x02\u053E\u28F2\x03\x02\x02\x02\u0540\u28F4\x03\x02" +
		"\x02\x02\u0542\u28FC\x03\x02\x02\x02\u0544\u2903\x03\x02\x02\x02\u0546" +
		"\u290B\x03\x02\x02\x02\u0548\u2917\x03\x02\x02\x02\u054A\u2919\x03\x02" +
		"\x02\x02\u054C\u291B\x03\x02\x02\x02\u054E\u2924\x03\x02\x02\x02\u0550" +
		"\u2943\x03\x02\x02\x02\u0552\u294C\x03\x02\x02\x02\u0554\u2953\x03\x02" +
		"\x02\x02\u0556\u2955\x03\x02\x02\x02\u0558\u2960\x03\x02\x02\x02\u055A" +
		"\u2964\x03\x02\x02\x02\u055C\u2969\x03\x02\x02\x02\u055E\u296C\x03\x02" +
		"\x02\x02\u0560\u296E\x03\x02\x02\x02\u0562\u2983\x03\x02\x02\x02\u0564" +
		"\u2985\x03\x02\x02\x02\u0566\u2988\x03\x02\x02\x02\u0568\u298F\x03\x02" +
		"\x02\x02\u056A\u2992\x03\x02\x02\x02\u056C\u2994\x03\x02\x02\x02\u056E" +
		"\u29A4\x03\x02\x02\x02\u0570\u29A6\x03\x02\x02\x02\u0572\u29AE\x03\x02" +
		"\x02\x02\u0574\u29B6\x03\x02\x02\x02\u0576\u29BE\x03\x02\x02\x02\u0578" +
		"\u29C6\x03\x02\x02\x02\u057A\u29CE\x03\x02\x02\x02\u057C\u29D2\x03\x02" +
		"\x02\x02\u057E\u29D6\x03\x02\x02\x02\u0580\u29DA\x03\x02\x02\x02\u0582" +
		"\u29DE\x03\x02\x02\x02\u0584\u29E2\x03\x02\x02\x02\u0586\u29E6\x03\x02" +
		"\x02\x02\u0588\u29EA\x03\x02\x02\x02\u058A\u29F2\x03\x02\x02\x02\u058C" +
		"\u29FA\x03\x02\x02\x02\u058E\u29FE\x03\x02\x02\x02\u0590\u2A02\x03\x02" +
		"\x02\x02\u0592\u2A06\x03\x02\x02\x02\u0594\u2A08\x03\x02\x02\x02\u0596" +
		"\u2A0E\x03\x02\x02\x02\u0598\u2A14\x03\x02\x02\x02\u059A\u2A16\x03\x02" +
		"\x02\x02\u059C\u2A18\x03\x02\x02\x02\u059E\u2A1A\x03\x02\x02\x02\u05A0" +
		"\u2A1C\x03\x02\x02\x02\u05A2\u2A1E\x03\x02\x02\x02\u05A4\u2A24\x03\x02" +
		"\x02\x02\u05A6\u2A2A\x03\x02\x02\x02\u05A8\u2A30\x03\x02\x02\x02\u05AA" +
		"\u2A55\x03\x02\x02\x02\u05AC\u2A57\x03\x02\x02\x02\u05AE\u2A59\x03\x02" +
		"\x02\x02\u05B0\u2A5B\x03\x02\x02\x02\u05B2\u2A5D\x03\x02\x02\x02\u05B4" +
		"\u2A5F\x03\x02\x02\x02\u05B6\u2A6E\x03\x02\x02\x02\u05B8\u2A70\x03\x02" +
		"\x02\x02\u05BA\u2A78\x03\x02\x02\x02\u05BC\u2A7A\x03\x02\x02\x02\u05BE" +
		"\u2A7C\x03\x02\x02\x02\u05C0\u2A83\x03\x02\x02\x02\u05C2\u2A85\x03\x02" +
		"\x02\x02\u05C4\u2A91\x03\x02\x02\x02\u05C6\u2A93\x03\x02\x02\x02\u05C8" +
		"\u2AA1\x03\x02\x02\x02\u05CA\u2AA5\x03\x02\x02\x02\u05CC\u2AAE\x03\x02" +
		"\x02\x02\u05CE\u2AB4\x03\x02\x02\x02\u05D0\u2AB8\x03\x02\x02\x02\u05D2" +
		"\u2ABE\x03\x02\x02\x02\u05D4\u2AC6\x03\x02\x02\x02\u05D6\u2AD2\x03\x02" +
		"\x02\x02\u05D8\u2AD4\x03\x02\x02\x02\u05DA\u2AD6\x03\x02\x02\x02\u05DC" +
		"\u2B0B\x03\x02\x02\x02\u05DE\u2B0D\x03\x02\x02\x02\u05E0\u2B0F\x03\x02" +
		"\x02\x02\u05E2\u2B11\x03\x02\x02\x02\u05E4\u2B18\x03\x02\x02\x02\u05E6" +
		"\u2B2F\x03\x02\x02\x02\u05E8\u2B31\x03\x02\x02\x02\u05EA\u2B37\x03\x02" +
		"\x02\x02\u05EC\u2B3B\x03\x02\x02\x02\u05EE\u2B3D\x03\x02\x02\x02\u05F0" +
		"\u2B44\x03\x02\x02\x02\u05F2\u2B4B\x03\x02\x02\x02\u05F4\u2B4E\x03\x02" +
		"\x02\x02\u05F6\u2B52\x03\x02\x02\x02\u05F8\u2B59\x03\x02\x02\x02\u05FA" +
		"\u2B5B\x03\x02\x02\x02\u05FC\u2B73\x03\x02\x02\x02\u05FE\u2B75\x03\x02" +
		"\x02\x02\u0600\u2B7C\x03\x02\x02\x02\u0602\u2B7E\x03\x02\x02\x02\u0604" +
		"\u2B86\x03\x02\x02\x02\u0606\u2B89\x03\x02\x02\x02\u0608\u2B8D\x03\x02" +
		"\x02\x02\u060A\u2B8F\x03\x02\x02\x02\u060C\u2B93\x03\x02\x02\x02\u060E" +
		"\u2B95\x03\x02\x02\x02\u0610\u2B9A\x03\x02\x02\x02\u0612\u2B9F\x03\x02" +
		"\x02\x02\u0614\u2BA5\x03\x02\x02\x02\u0616\u2BA9\x03\x02\x02\x02\u0618" +
		"\u2BAB\x03\x02\x02\x02\u061A\u2BB0\x03\x02\x02\x02\u061C\u2BCE\x03\x02" +
		"\x02\x02\u061E\u2BD0\x03\x02\x02\x02\u0620\u2BE4\x03\x02\x02\x02\u0622" +
		"\u2BE8\x03\x02\x02\x02\u0624\u2BEA\x03\x02\x02\x02\u0626\u2BEF\x03\x02" +
		"\x02\x02\u0628\u2BF8\x03\x02\x02\x02\u062A\u2BFA\x03\x02\x02\x02\u062C" +
		"\u2C02\x03\x02\x02\x02\u062E\u2C06\x03\x02\x02\x02\u0630\u2C08\x03\x02" +
		"\x02\x02\u0632\u2C0C\x03\x02\x02\x02\u0634\u2C17\x03\x02\x02\x02\u0636" +
		"\u2C28\x03\x02\x02\x02\u0638\u2C2E\x03\x02\x02\x02\u063A\u2C30\x03\x02" +
		"\x02\x02\u063C\u2C3A\x03\x02\x02\x02\u063E\u2C3D\x03\x02\x02\x02\u0640" +
		"\u2C41\x03\x02\x02\x02\u0642\u2C49\x03\x02\x02\x02\u0644\u2C4B\x03\x02" +
		"\x02\x02\u0646\u2C4E\x03\x02\x02\x02\u0648\u2C53\x03\x02\x02\x02\u064A" +
		"\u2C58\x03\x02\x02\x02\u064C\u2C6E\x03\x02\x02\x02\u064E\u2C7C\x03\x02" +
		"\x02\x02\u0650\u2C80\x03\x02\x02\x02\u0652\u2C85\x03\x02\x02\x02\u0654" +
		"\u2C87\x03\x02\x02\x02\u0656\u2C89\x03\x02\x02\x02\u0658\u2C95\x03\x02" +
		"\x02\x02\u065A\u2C97\x03\x02\x02\x02\u065C\u2C9E\x03\x02\x02\x02\u065E" +
		"\u2CA0\x03\x02\x02\x02\u0660\u2CB2\x03\x02\x02\x02\u0662\u2CD6\x03\x02" +
		"\x02\x02\u0664\u2CD8\x03\x02\x02\x02\u0666\u2CE1\x03\x02\x02\x02\u0668" +
		"\u2CE6\x03\x02\x02\x02\u066A\u2CE8\x03\x02\x02\x02\u066C\u2CEC\x03\x02" +
		"\x02\x02\u066E\u2CF4\x03\x02\x02\x02\u0670\u2CFC\x03\x02\x02\x02\u0672" +
		"\u2CFE\x03\x02\x02\x02\u0674\u2D05\x03\x02\x02\x02\u0676\u2D08\x03\x02" +
		"\x02\x02\u0678\u2D18\x03\x02\x02\x02\u067A\u2D1A\x03\x02\x02\x02\u067C" +
		"\u2D28\x03\x02\x02\x02\u067E\u2D2A\x03\x02\x02\x02\u0680\u2D45\x03\x02" +
		"\x02\x02\u0682\u2D47\x03\x02\x02\x02\u0684\u2D52\x03\x02\x02\x02\u0686" +
		"\u2D58\x03\x02\x02\x02\u0688\u2D5C\x03\x02\x02\x02\u068A\u2D5E\x03\x02" +
		"\x02\x02\u068C\u2D68\x03\x02\x02\x02\u068E\u2D6D\x03\x02\x02\x02\u0690" +
		"\u2D7E\x03\x02\x02\x02\u0692\u2D80\x03\x02\x02\x02\u0694\u2D88\x03\x02" +
		"\x02\x02\u0696\u2DAD\x03\x02\x02\x02\u0698\u2DB5\x03\x02\x02\x02\u069A" +
		"\u2DD1\x03\x02\x02\x02\u069C\u2DD3\x03\x02\x02\x02\u069E\u2DE1\x03\x02" +
		"\x02\x02\u06A0\u2DF7\x03\x02\x02\x02\u06A2\u2DF9\x03\x02\x02\x02\u06A4" +
		"\u2E06\x03\x02\x02\x02\u06A6\u2E08\x03\x02\x02\x02\u06A8\u2E0C\x03\x02" +
		"\x02\x02\u06AA\u2E0F\x03\x02\x02\x02\u06AC\u2E15\x03\x02\x02\x02\u06AE" +
		"\u2E1B\x03\x02\x02\x02\u06B0\u2E2D\x03\x02\x02\x02\u06B2\u2E31\x03\x02" +
		"\x02\x02\u06B4\u2E36\x03\x02\x02\x02\u06B6\u2E39\x03\x02\x02\x02\u06B8" +
		"\u2E3D\x03\x02\x02\x02\u06BA\u2E42\x03\x02\x02\x02\u06BC\u2E4D\x03\x02" +
		"\x02\x02\u06BE\u2E51\x03\x02\x02\x02\u06C0\u2E55\x03\x02\x02\x02\u06C2" +
		"\u2E59\x03\x02\x02\x02\u06C4\u2E5B\x03\x02\x02\x02\u06C6\u2E60\x03\x02" +
		"\x02\x02\u06C8\u2E62\x03\x02\x02\x02\u06CA\u2E65\x03\x02\x02\x02\u06CC" +
		"\u2E79\x03\x02\x02\x02\u06CE\u2E7B\x03\x02\x02\x02\u06D0\u2E7D\x03\x02" +
		"\x02\x02\u06D2\u2E7F\x03\x02\x02\x02\u06D4\u2E81\x03\x02\x02\x02\u06D6" +
		"\u2E85\x03\x02\x02\x02\u06D8\u06DA\x05\x06\x04\x02\u06D9\u06D8\x03\x02" +
		"\x02\x02\u06DA\u06DD\x03\x02\x02\x02\u06DB\u06D9\x03\x02\x02\x02\u06DB" +
		"\u06DC\x03\x02\x02\x02\u06DC\u06DE\x03\x02\x02\x02\u06DD\u06DB\x03\x02" +
		"\x02\x02\u06DE\u06DF\x07\x02\x02\x03\u06DF\x03\x03\x02\x02\x02\u06E0\u06E1" +
		"\x05\u05E2\u02F2\x02\u06E1\x05\x03\x02\x02\x02\u06E2\u06E4\x05\b\x05\x02" +
		"\u06E3\u06E5\x07\t\x02\x02\u06E4\u06E3\x03\x02\x02\x02\u06E4\u06E5\x03" +
		"\x02\x02\x02\u06E5\x07\x03\x02\x02\x02\u06E6\u075C\x05\u01E8\xF5\x02\u06E7" +
		"\u075C\x05\u0364\u01B3\x02\u06E8\u075C\x05\u035C\u01AF\x02\u06E9\u075C" +
		"\x05\u035E\u01B0\x02\u06EA\u075C\x05\u026A\u0136\x02\u06EB\u075C\x05\u036A" +
		"\u01B6\x02\u06EC\u075C\x05\u0202\u0102\x02\u06ED\u075C\x05\u015E\xB0\x02" +
		"\u06EE\u075C\x05\u0164\xB3\x02\u06EF\u075C\x05\u016E\xB8\x02\u06F0\u075C" +
		"\x05\u0188\xC5\x02\u06F1\u075C\x05\u02CE\u0168\x02\u06F2\u075C\x05,\x17" +
		"\x02\u06F3\u075C\x05\u0306\u0184\x02\u06F4\u075C\x05\u030A\u0186\x02\u06F5" +
		"\u075C\x05\u0316\u018C\x02\u06F6\u075C\x05\u030C\u0187\x02\u06F7\u075C" +
		"\x05\u0314\u018B\x02\u06F8\u075C\x05\u019A\xCE\x02\u06F9\u075C\x05\u019C" +
		"\xCF\x02\u06FA\u075C\x05\u0136\x9C\x02\u06FB\u075C\x05\u0366\u01B4\x02" +
		"\u06FC\u075C\x05j6\x02\u06FD\u075C\x05\u02FE\u0180\x02\u06FE\u075C\x05" +
		"\x98M\x02\u06FF\u075C\x05\u031E\u0190\x02\u0700\u075C\x05 \x11\x02\u0701" +
		"\u075C\x05\"\x12\x02\u0702\u075C\x05\x1C\x0F\x02\u0703\u075C\x05\u0326" +
		"\u0194\x02\u0704\u075C\x05\u0124\x93\x02\u0705\u075C\x05\u0370\u01B9\x02" +
		"\u0706\u075C\x05\u036E\u01B8\x02\u0707\u075C\x05\u0196\xCC\x02\u0708\u075C" +
		"\x05\u037E\u01C0\x02\u0709\u075C\x05\f\x07\x02\u070A\u075C\x05f4\x02\u070B" +
		"\u075C\x05\x9EP\x02\u070C\u075C\x05\u0376\u01BC\x02\u070D\u075C\x05\u023A" +
		"\u011E\x02\u070E\u075C\x05`1\x02\u070F\u075C\x05\xA0Q\x02\u0710\u075C" +
		"\x05\u01B0\xD9\x02\u0711\u075C\x05\u0126\x94\x02\u0712\u075C\x05\u01EC" +
		"\xF7\x02\u0713\u075C\x05\u02EA\u0176\x02\u0714\u075C\x05\u0374\u01BB\x02" +
		"\u0715\u075C\x05\u0368\u01B5\x02\u0716\u075C\x05\u0158\xAD\x02\u0717\u075C" +
		"\x05\u0166\xB4\x02\u0718\u075C\x05\u0180\xC1\x02\u0719\u075C\x05\u018A" +
		"\xC6\x02\u071A\u075C\x05\u0290\u0149\x02\u071B\u075C\x05*\x16\x02\u071C" +
		"\u075C\x05\u012C\x97\x02\u071D\u075C\x05\u0206\u0104\x02\u071E\u075C\x05" +
		"\u0214\u010B\x02\u071F\u075C\x05\u0318\u018D\x02\u0720\u075C\x05\u0216" +
		"\u010C\x02\u0721\u075C\x05\u0198\xCD\x02\u0722\u075C\x05\u0146\xA4\x02" +
		"\u0723\u075C\x050\x19\x02\u0724\u075C\x05\u0134\x9B\x02\u0725\u075C\x05" +
		"\xBE`\x02\u0726\u075C\x05\u0320\u0191\x02\u0727\u075C\x05\u0122\x92\x02" +
		"\u0728\u075C\x05\u0154\xAB\x02\u0729\u075C\x05\u02F0\u0179\x02\u072A\u075C" +
		"\x05\u01B4\xDB\x02\u072B\u075C\x05\u01E0\xF1\x02\u072C\u075C\x05\x0E\b" +
		"\x02\u072D\u075C\x05\x1A\x0E\x02\u072E\u075C\x05\u0192\xCA\x02\u072F\u075C" +
		"\x05\u0350\u01A9\x02\u0730\u075C\x05\u03B8\u01DD\x02\u0731\u075C\x05\u03E4" +
		"\u01F3\x02\u0732\u075C\x05\u01EE\xF8\x02\u0733\u075C\x05\u03CC\u01E7\x02" +
		"\u0734\u075C\x05h5\x02\u0735\u075C\x05\u02E4\u0173\x02\u0736\u075C\x05" +
		"\u021E\u0110\x02\u0737\u075C\x05\u03B4\u01DB\x02\u0738\u075C\x05\u03A2" +
		"\u01D2\x02\u0739\u075C\x05\u0244\u0123\x02\u073A\u075C\x05\u024C\u0127" +
		"\x02\u073B\u075C\x05\u0262\u0132\x02\u073C\u075C\x05\u0694\u034B\x02\u073D" +
		"\u075C\x05\u018C\xC7\x02\u073E\u075C\x05\u0274\u013B\x02\u073F\u075C\x05" +
		"\u03BA\u01DE\x02\u0740\u075C\x05\u033A\u019E\x02\u0741\u075C\x05\u0132" +
		"\x9A\x02\u0742\u075C\x05\u034E\u01A8\x02\u0743\u075C\x05\u03D0\u01E9\x02" +
		"\u0744\u075C\x05\u0336\u019C\x02\u0745\u075C\x05\u03AE\u01D8\x02\u0746" +
		"\u075C\x05\u021C\u010F\x02\u0747\u075C\x05\u02F4\u017B\x02\u0748\u075C" +
		"\x05\u02D8\u016D\x02\u0749\u075C\x05\u02D6\u016C\x02\u074A\u075C\x05\u02DA" +
		"\u016E\x02\u074B\u075C\x05\u0300\u0181\x02\u074C\u075C\x05\u024E\u0128" +
		"\x02\u074D\u075C\x05\u0264\u0133\x02\u074E\u075C\x05\u0328\u0195\x02\u074F" +
		"\u075C\x05\u023E\u0120\x02\u0750\u075C\x05\u03EC\u01F7\x02\u0751\u075C" +
		"\x05\u033E\u01A0\x02\u0752\u075C\x05\u0236\u011C\x02\u0753\u075C\x05\u033C" +
		"\u019F\x02\u0754\u075C\x05\u03DA\u01EE\x02\u0755\u075C\x05\u037C\u01BF" +
		"\x02\u0756\u075C\x05T+\x02\u0757\u075C\x058\x1D\x02\u0758\u075C\x05^0" +
		"\x02\u0759\u075C\x05\u034A\u01A6\x02\u075A\u075C\x05\n\x06\x02\u075B\u06E6" +
		"\x03\x02\x02\x02\u075B\u06E7\x03\x02\x02\x02\u075B\u06E8\x03\x02\x02\x02" +
		"\u075B\u06E9\x03\x02\x02\x02\u075B\u06EA\x03\x02\x02\x02\u075B\u06EB\x03" +
		"\x02\x02\x02\u075B\u06EC\x03\x02\x02\x02\u075B\u06ED\x03\x02\x02\x02\u075B" +
		"\u06EE\x03\x02\x02\x02\u075B\u06EF\x03\x02\x02\x02\u075B\u06F0\x03\x02" +
		"\x02\x02\u075B\u06F1\x03\x02\x02\x02\u075B\u06F2\x03\x02\x02\x02\u075B" +
		"\u06F3\x03\x02\x02\x02\u075B\u06F4\x03\x02\x02\x02\u075B\u06F5\x03\x02" +
		"\x02\x02\u075B\u06F6\x03\x02\x02\x02\u075B\u06F7\x03\x02\x02\x02\u075B" +
		"\u06F8\x03\x02\x02\x02\u075B\u06F9\x03\x02\x02\x02\u075B\u06FA\x03\x02" +
		"\x02\x02\u075B\u06FB\x03\x02\x02\x02\u075B\u06FC\x03\x02\x02\x02\u075B" +
		"\u06FD\x03\x02\x02\x02\u075B\u06FE\x03\x02\x02\x02\u075B\u06FF\x03\x02" +
		"\x02\x02\u075B\u0700\x03\x02\x02\x02\u075B\u0701\x03\x02\x02\x02\u075B" +
		"\u0702\x03\x02\x02\x02\u075B\u0703\x03\x02\x02\x02\u075B\u0704\x03\x02" +
		"\x02\x02\u075B\u0705\x03\x02\x02\x02\u075B\u0706\x03\x02\x02\x02\u075B" +
		"\u0707\x03\x02\x02\x02\u075B\u0708\x03\x02\x02\x02\u075B\u0709\x03\x02" +
		"\x02\x02\u075B\u070A\x03\x02\x02\x02\u075B\u070B\x03\x02\x02\x02\u075B" +
		"\u070C\x03\x02\x02\x02\u075B\u070D\x03\x02\x02\x02\u075B\u070E\x03\x02" +
		"\x02\x02\u075B\u070F\x03\x02\x02\x02\u075B\u0710\x03\x02\x02\x02\u075B" +
		"\u0711\x03\x02\x02\x02\u075B\u0712\x03\x02\x02\x02\u075B\u0713\x03\x02" +
		"\x02\x02\u075B\u0714\x03\x02\x02\x02\u075B\u0715\x03\x02\x02\x02\u075B" +
		"\u0716\x03\x02\x02\x02\u075B\u0717\x03\x02\x02\x02\u075B\u0718\x03\x02" +
		"\x02\x02\u075B\u0719\x03\x02\x02\x02\u075B\u071A\x03\x02\x02\x02\u075B" +
		"\u071B\x03\x02\x02\x02\u075B\u071C\x03\x02\x02\x02\u075B\u071D\x03\x02" +
		"\x02\x02\u075B\u071E\x03\x02\x02\x02\u075B\u071F\x03\x02\x02\x02\u075B" +
		"\u0720\x03\x02\x02\x02\u075B\u0721\x03\x02\x02\x02\u075B\u0722\x03\x02" +
		"\x02\x02\u075B\u0723\x03\x02\x02\x02\u075B\u0724\x03\x02\x02\x02\u075B" +
		"\u0725\x03\x02\x02\x02\u075B\u0726\x03\x02\x02\x02\u075B\u0727\x03\x02" +
		"\x02\x02\u075B\u0728\x03\x02\x02\x02\u075B\u0729\x03\x02\x02\x02\u075B" +
		"\u072A\x03\x02\x02\x02\u075B\u072B\x03\x02\x02\x02\u075B\u072C\x03\x02" +
		"\x02\x02\u075B\u072D\x03\x02\x02\x02\u075B\u072E\x03\x02\x02\x02\u075B" +
		"\u072F\x03\x02\x02\x02\u075B\u0730\x03\x02\x02\x02\u075B\u0731\x03\x02" +
		"\x02\x02\u075B\u0732\x03\x02\x02\x02\u075B\u0733\x03\x02\x02\x02\u075B" +
		"\u0734\x03\x02\x02\x02\u075B\u0735\x03\x02\x02\x02\u075B\u0736\x03\x02" +
		"\x02\x02\u075B\u0737\x03\x02\x02\x02\u075B\u0738\x03\x02\x02\x02\u075B" +
		"\u0739\x03\x02\x02\x02\u075B\u073A\x03\x02\x02\x02\u075B\u073B\x03\x02" +
		"\x02\x02\u075B\u073C\x03\x02\x02\x02\u075B\u073D\x03\x02\x02\x02\u075B" +
		"\u073E\x03\x02\x02\x02\u075B\u073F\x03\x02\x02\x02\u075B\u0740\x03\x02" +
		"\x02\x02\u075B\u0741\x03\x02\x02\x02\u075B\u0742\x03\x02\x02\x02\u075B" +
		"\u0743\x03\x02\x02\x02\u075B\u0744\x03\x02\x02\x02\u075B\u0745\x03\x02" +
		"\x02\x02\u075B\u0746\x03\x02\x02\x02\u075B\u0747\x03\x02\x02\x02\u075B" +
		"\u0748\x03\x02\x02\x02\u075B\u0749\x03\x02\x02\x02\u075B\u074A\x03\x02" +
		"\x02\x02\u075B\u074B\x03\x02\x02\x02\u075B\u074C\x03\x02\x02\x02\u075B" +
		"\u074D\x03\x02\x02\x02\u075B\u074E\x03\x02\x02\x02\u075B\u074F\x03\x02" +
		"\x02\x02\u075B\u0750\x03\x02\x02\x02\u075B\u0751\x03\x02\x02\x02\u075B" +
		"\u0752\x03\x02\x02\x02\u075B\u0753\x03\x02\x02\x02\u075B\u0754\x03\x02" +
		"\x02\x02\u075B\u0755\x03\x02\x02\x02\u075B\u0756\x03\x02\x02\x02\u075B" +
		"\u0757\x03\x02\x02\x02\u075B\u0758\x03\x02\x02\x02\u075B\u0759\x03\x02" +
		"\x02\x02\u075B\u075A\x03\x02\x02\x02\u075C\t\x03\x02\x02\x02\u075D\u075F" +
		"\x07\u0247\x02\x02\u075E\u0760\x07\u0248\x02\x02\u075F\u075E\x03\x02\x02" +
		"\x02\u075F\u0760\x03\x02\x02\x02\u0760\v\x03\x02\x02\x02\u0761\u0762\x07" +
		"\u01B3\x02\x02\u0762\u0763\x05\u04EC\u0277\x02\u0763\r\x03\x02\x02\x02" +
		"\u0764\u0765\x070\x02\x02\u0765\u0766\x07\u0140\x02\x02\u0766\u0768\x05" +
		"\u05BE\u02E0\x02\u0767\u0769\x05\x10\t\x02\u0768\u0767\x03\x02\x02\x02" +
		"\u0768\u0769\x03\x02\x02\x02\u0769\u076A\x03\x02\x02\x02\u076A\u076B\x05" +
		"\x12\n\x02\u076B\x0F\x03\x02\x02\x02\u076C\u076D\x07k\x02\x02\u076D\x11" +
		"\x03\x02\x02\x02\u076E\u0770\x05\x18\r\x02\u076F\u076E\x03\x02\x02\x02" +
		"\u0770\u0773\x03\x02\x02\x02\u0771\u076F\x03\x02\x02\x02\u0771\u0772\x03" +
		"\x02\x02\x02\u0772\x13\x03\x02\x02\x02\u0773\u0771\x03\x02\x02\x02\u0774" +
		"\u0776\x05\x16\f\x02\u0775\u0774\x03\x02\x02\x02\u0776\u0779\x03\x02\x02" +
		"\x02\u0777\u0775\x03\x02\x02\x02\u0777\u0778\x03\x02\x02\x02\u0778\x15" +
		"\x03\x02\x02\x02\u0779\u0777\x03\x02\x02\x02\u077A\u077D\x07\u0121\x02" +
		"\x02\u077B\u077E\x05\u05B4\u02DB\x02\u077C\u077E\x07P\x02\x02\u077D\u077B" +
		"\x03\x02\x02\x02\u077D\u077C\x03\x02\x02\x02\u077E\u079E\x03\x02\x02\x02" +
		"\u077F\u0780\t\x02\x02\x02\u0780\u0781\x07\u0121\x02\x02\u0781\u079E\x05" +
		"\u05B4\u02DB\x02\u0782\u079E\t\x03\x02\x02\u0783\u079E\t\x04\x02\x02\u0784" +
		"\u079E\t\x05\x02\x02\u0785\u079E\t\x06\x02\x02\u0786\u079E\t\x07\x02\x02" +
		"\u0787\u079E\t\b\x02\x02\u0788\u079E\t\t\x02\x02\u0789\u079E\t\n\x02\x02" +
		"\u078A\u078B\x07\xA6\x02\x02\u078B\u078C\x07L\x02\x02\u078C\u079E\x05" +
		"\u05BA\u02DE\x02\u078D\u078E\x07\u0175\x02\x02\u078E\u078F\x07\u0172\x02" +
		"\x02\u078F\u079E\x05\u05B4\u02DB\x02\u0790\u0791\x07F\x02\x02\u0791\u0792" +
		"\x07\u0140\x02\x02\u0792\u079E\x05\u058A\u02C6\x02\u0793\u0794\x07F\x02" +
		"\x02\u0794\u0795\x07D\x02\x02\u0795\u079E\x05\u058A\u02C6\x02\u0796\u0797" +
		"\x07\u0140\x02\x02\u0797\u079E\x05\u05C2\u02E2\x02\u0798\u0799\x07\x88" +
		"\x02\x02\u0799\u079E\x05\u058A\u02C6\x02\u079A\u079B\x07e\x02\x02\u079B" +
		"\u079E\x05\u05C2\u02E2\x02\u079C\u079E\x05\u05D6\u02EC\x02\u079D\u077A" +
		"\x03\x02\x02\x02\u079D\u077F\x03\x02\x02\x02\u079D\u0782\x03\x02\x02\x02" +
		"\u079D\u0783\x03\x02\x02\x02\u079D\u0784\x03\x02\x02\x02\u079D\u0785\x03" +
		"\x02\x02\x02\u079D\u0786\x03\x02\x02\x02\u079D\u0787\x03\x02\x02\x02\u079D" +
		"\u0788\x03\x02\x02\x02\u079D\u0789\x03\x02\x02\x02\u079D\u078A\x03\x02" +
		"\x02\x02\u079D\u078D\x03\x02\x02\x02\u079D\u0790\x03\x02\x02\x02\u079D" +
		"\u0793\x03\x02\x02\x02\u079D\u0796\x03\x02\x02\x02\u079D\u0798\x03\x02" +
		"\x02\x02\u079D\u079A\x03\x02\x02\x02\u079D\u079C\x03\x02\x02\x02\u079E" +
		"\x17\x03\x02\x02\x02\u079F\u07AA\x05\x16\f\x02\u07A0\u07A1\x07\u015E\x02" +
		"\x02\u07A1\u07AA\x05\u05B2\u02DA\x02\u07A2\u07A3\x07\x88\x02\x02\u07A3" +
		"\u07AA\x05\u05C2\u02E2\x02\u07A4\u07A5\x07\u0140\x02\x02\u07A5\u07AA\x05" +
		"\u05C2\u02E2\x02\u07A6\u07A7\x07F\x02\x02\u07A7\u07A8\t\v\x02\x02\u07A8" +
		"\u07AA\x05\u05C2\u02E2\x02\u07A9\u079F\x03\x02\x02\x02\u07A9\u07A0\x03" +
		"\x02\x02\x02\u07A9\u07A2\x03\x02\x02\x02\u07A9\u07A4";
	private static readonly _serializedATNSegment7: string =
		"\x03\x02\x02\x02\u07A9\u07A6\x03\x02\x02\x02\u07AA\x19\x03\x02\x02\x02" +
		"\u07AB\u07AC\x070\x02\x02\u07AC\u07AD\x07e\x02\x02\u07AD\u07AF\x05\u05BE" +
		"\u02E0\x02\u07AE\u07B0\x05\x10\t\x02\u07AF\u07AE\x03\x02\x02\x02\u07AF" +
		"\u07B0\x03\x02\x02\x02\u07B0\u07B1\x03\x02\x02\x02\u07B1\u07B2\x05\x12" +
		"\n\x02\u07B2\x1B\x03\x02\x02\x02\u07B3\u07B4\x07\x8C\x02\x02\u07B4\u07B5" +
		"\t\f\x02\x02\u07B5\u07B7\x05\u05C0\u02E1\x02\u07B6\u07B8\x05\x10\t\x02" +
		"\u07B7\u07B6\x03\x02\x02\x02\u07B7\u07B8\x03\x02\x02\x02\u07B8\u07B9\x03" +
		"\x02\x02\x02\u07B9\u07BA\x05\x14\v\x02\u07BA\x1D\x03\x02\x02\x02\u07BB" +
		"\u07C0\x03\x02\x02\x02\u07BC\u07BD\x07F\x02\x02\u07BD\u07BE\x07\xB1\x02" +
		"\x02\u07BE\u07C0\x05\u058E\u02C8\x02\u07BF\u07BB\x03\x02\x02\x02\u07BF" +
		"\u07BC\x03\x02\x02\x02\u07C0\x1F\x03\x02\x02\x02\u07C1\u07C2\x07\x8C\x02" +
		"\x02\u07C2\u07C5\t\f\x02\x02\u07C3\u07C6\x07 \x02\x02\u07C4\u07C6\x05" +
		"\u05C0\u02E1\x02\u07C5\u07C3\x03\x02\x02\x02\u07C5\u07C4\x03\x02\x02\x02" +
		"\u07C6\u07C7\x03\x02\x02\x02\u07C7\u07C8\x05\x1E\x10\x02\u07C8\u07C9\x05" +
		"Z.\x02\u07C9!\x03\x02\x02\x02\u07CA\u07CB\x07\x8C\x02\x02\u07CB\u07CC" +
		"\x07\u01BC\x02\x02\u07CC\u07CE\x05\u0594\u02CB\x02\u07CD\u07CF\x05\u0296" +
		"\u014C\x02\u07CE\u07CD\x03\x02\x02\x02\u07CE\u07CF\x03\x02\x02\x02\u07CF" +
		"\u07D0\x03\x02\x02\x02\u07D0\u07D1\x05$\x13\x02\u07D1#\x03\x02\x02\x02" +
		"\u07D2\u07D4\x05&\x14\x02\u07D3\u07D5\x07\u013D\x02\x02\u07D4\u07D3\x03" +
		"\x02\x02\x02\u07D4\u07D5\x03\x02\x02\x02\u07D5\u07E7\x03\x02\x02\x02\u07D6" +
		"\u07D7\x07\u0137\x02\x02\u07D7\u07D8\x07`\x02\x02\u07D8\u07E7\x05\u0592" +
		"\u02CA\x02\u07D9\u07DA\x07\u011C\x02\x02\u07DA\u07DB\x07`\x02\x02\u07DB" +
		"\u07E7\x05\u05C0\u02E1\x02\u07DC\u07DD\x07\u014F\x02\x02\u07DD\u07DE\x07" +
		"\u0145\x02\x02\u07DE\u07E7\x052\x1A\x02\u07DF\u07E1\x07\u010F\x02\x02" +
		"\u07E0\u07DF\x03\x02\x02\x02\u07E0\u07E1\x03\x02\x02\x02\u07E1\u07E2\x03" +
		"\x02\x02\x02\u07E2\u07E3\x07\u01D0\x02\x02\u07E3\u07E4\x07R\x02\x02\u07E4" +
		"\u07E5\x07\xCE\x02\x02\u07E5\u07E7\x05\u059E\u02D0\x02\u07E6\u07D2\x03" +
		"\x02\x02\x02\u07E6\u07D6\x03\x02\x02\x02\u07E6\u07D9\x03\x02\x02\x02\u07E6" +
		"\u07DC\x03\x02\x02\x02\u07E6\u07E0\x03\x02\x02\x02\u07E7%\x03\x02\x02" +
		"\x02\u07E8\u07EC\x05(\x15\x02\u07E9\u07EB\x05(\x15\x02\u07EA\u07E9\x03" +
		"\x02\x02\x02\u07EB\u07EE\x03\x02\x02\x02\u07EC\u07EA\x03\x02\x02\x02\u07EC" +
		"\u07ED\x03\x02\x02\x02\u07ED\'\x03\x02\x02\x02\u07EE\u07EC\x03\x02\x02" +
		"\x02\u07EF\u0819\x07\xE0\x02\x02\u07F0\u0819\x07\u0154\x02\x02\u07F1\u0819" +
		"\x07\u017B\x02\x02\u07F2\u07F4\x07O\x02\x02\u07F3\u07F2\x03\x02\x02\x02" +
		"\u07F3\u07F4\x03\x02\x02\x02\u07F4\u07F5\x03\x02\x02\x02\u07F5\u0819\x07" +
		"\xFC\x02\x02\u07F6\u07F8\x07\xCF\x02\x02\u07F7\u07F6\x03\x02\x02\x02\u07F7" +
		"\u07F8\x03\x02\x02\x02\u07F8\u07F9\x03\x02\x02\x02\u07F9\u07FA\x07\u0149" +
		"\x02\x02\u07FA\u0801\x07\xF5\x02\x02\u07FB\u07FD\x07\xCF\x02\x02\u07FC" +
		"\u07FB\x03\x02\x02\x02\u07FC\u07FD\x03\x02\x02\x02\u07FD\u07FE\x03\x02" +
		"\x02\x02\u07FE\u07FF\x07\u0149\x02\x02\u07FF\u0801\x07\xB7\x02\x02\u0800" +
		"\u07F7\x03\x02\x02\x02\u0800\u07FC\x03\x02\x02\x02\u0801\u0819\x03\x02" +
		"\x02\x02\u0802\u0803\x07\u01CE\x02\x02\u0803\u0819\t\r\x02\x02\u0804\u0805" +
		"\x07\xAC\x02\x02\u0805\u0819\x05\u05A0\u02D1\x02\u0806\u0807\x07\u0142" +
		"\x02\x02\u0807\u0819\x05\u059E\u02D0\x02\u0808\u0809\x07\u014F\x02\x02" +
		"\u0809\u080A\x05\u059E\u02D0\x02\u080A\u080D\t\x0E\x02\x02\u080B\u080E" +
		"\x05\u059E\u02D0\x02\u080C\u080E\x077\x02\x02\u080D\u080B\x03\x02\x02" +
		"\x02\u080D\u080C\x03\x02\x02\x02\u080E\u0819\x03\x02\x02\x02\u080F\u0810" +
		"\x07\u014F\x02\x02\u0810\u0811\x05\u059E\u02D0\x02\u0811\u0812\x07B\x02" +
		"\x02\u0812\u0813\x07\u01B4\x02\x02\u0813\u0819\x03\x02\x02\x02\u0814\u0815" +
		"\x07\u013B\x02\x02\u0815\u0819\x05\u059E\u02D0\x02\u0816\u0817\x07\u013B" +
		"\x02\x02\u0817\u0819\x07 \x02\x02\u0818\u07EF\x03\x02\x02\x02\u0818\u07F0" +
		"\x03\x02\x02\x02\u0818\u07F1\x03\x02\x02\x02\u0818\u07F3\x03\x02\x02\x02" +
		"\u0818\u0800\x03\x02\x02\x02\u0818\u0802\x03\x02\x02\x02\u0818\u0804\x03" +
		"\x02\x02\x02\u0818\u0806\x03\x02\x02\x02\u0818\u0808\x03\x02\x02\x02\u0818" +
		"\u080F\x03\x02\x02\x02\u0818\u0814\x03\x02\x02\x02\u0818\u0816\x03\x02" +
		"\x02\x02\u0819)\x03\x02\x02\x02\u081A\u081B\x070\x02\x02\u081B\u081C\x07" +
		"D\x02\x02\u081C\u081E\x05\u05BC\u02DF\x02\u081D\u081F\x05\x10\t\x02\u081E" +
		"\u081D\x03\x02\x02\x02\u081E\u081F\x03\x02\x02\x02\u081F\u0820\x03\x02" +
		"\x02\x02\u0820\u0821\x05\x12\n\x02\u0821+\x03\x02\x02\x02\u0822\u0823" +
		"\x07\x8C\x02\x02\u0823\u0824\x07D\x02\x02\u0824\u0825\x05\u05C0\u02E1" +
		"\x02\u0825\u0826\x05.\x18\x02\u0826\u0827\x07e\x02\x02\u0827\u0828\x05" +
		"\u05C2\u02E2\x02\u0828-\x03\x02\x02\x02\u0829\u082A\t\x0F\x02\x02\u082A" +
		"/\x03\x02\x02\x02\u082B\u082C\x070\x02\x02\u082C\u082E\x07\u0145\x02\x02" +
		"\u082D\u082F\x05\u0204\u0103\x02\u082E\u082D\x03\x02\x02\x02\u082E\u082F" +
		"\x03\x02\x02\x02\u082F\u0836\x03\x02\x02\x02\u0830\u0832\x052\x1A\x02" +
		"\u0831\u0830\x03\x02\x02\x02\u0831\u0832\x03\x02\x02\x02\u0832\u0833\x03" +
		"\x02\x02\x02\u0833\u0834\x07l\x02\x02\u0834\u0837\x05\u05C0\u02E1\x02" +
		"\u0835\u0837\x052\x1A\x02\u0836\u0831\x03\x02\x02\x02\u0836\u0835\x03" +
		"\x02\x02\x02\u0837\u0838\x03\x02\x02\x02\u0838\u0839\x054\x1B\x02\u0839" +
		"1\x03\x02\x02\x02\u083A\u083C\x05\u05C4\u02E3\x02\u083B\u083D\x05\u0232" +
		"\u011A\x02\u083C\u083B\x03\x02\x02\x02\u083C\u083D\x03\x02\x02\x02\u083D" +
		"3\x03\x02\x02\x02\u083E\u0840\x056\x1C\x02\u083F\u083E\x03\x02\x02\x02" +
		"\u0840\u0843\x03\x02\x02\x02\u0841\u083F\x03\x02\x02\x02\u0841\u0842\x03" +
		"\x02\x02\x02\u08425\x03\x02\x02\x02\u0843\u0841\x03\x02\x02\x02\u0844" +
		"\u084B\x05\xBE`\x02\u0845\u084B\x05\u0274\u013B\x02\u0846\u084B\x05\u0134" +
		"\x9B\x02\u0847\u084B\x05\u01B4\xDB\x02\u0848\u084B\x05\u024C\u0127\x02" +
		"\u0849\u084B\x05\u034A\u01A6\x02\u084A\u0844\x03\x02\x02\x02\u084A\u0845" +
		"\x03\x02\x02\x02\u084A\u0846\x03\x02\x02\x02\u084A\u0847\x03\x02\x02\x02" +
		"\u084A\u0848\x03\x02\x02\x02\u084A\u0849\x03\x02\x02\x02\u084B7\x03\x02" +
		"\x02\x02\u084C\u084E\x07\u014F\x02\x02\u084D\u084F\t\x10\x02\x02\u084E" +
		"\u084D\x03\x02\x02\x02\u084E\u084F\x03\x02\x02\x02\u084F\u0850\x03\x02" +
		"\x02\x02\u0850\u0851\x05:\x1E\x02\u08519\x03\x02\x02\x02\u0852\u0853\x07" +
		"\u0166\x02\x02\u0853\u085B\x05\u0344\u01A3\x02\u0854\u0855\x07\u014E\x02" +
		"\x02\u0855\u0856\x07\x9C\x02\x02\u0856\u0857\x07&\x02\x02\u0857\u0858" +
		"\x07\u0166\x02\x02\u0858\u085B\x05\u0344\u01A3\x02\u0859\u085B\x05> \x02" +
		"\u085A\u0852\x03\x02\x02\x02\u085A\u0854\x03\x02\x02\x02\u085A\u0859\x03" +
		"\x02\x02\x02\u085B;\x03\x02\x02\x02\u085C\u085F\x05@!\x02\u085D\u085F" +
		"\x07 \x02\x02\u085E\u085C\x03\x02\x02\x02\u085E\u085D\x03\x02\x02\x02" +
		"\u085F\u0861\x03\x02\x02\x02\u0860\u0862\t\x0E\x02\x02\u0861\u0860\x03" +
		"\x02\x02\x02\u0861\u0862\x03\x02\x02\x02\u0862\u0865\x03\x02\x02\x02\u0863" +
		"\u0866\x05B\"\x02\u0864\u0866\x077\x02\x02\u0865\u0863\x03\x02\x02\x02" +
		"\u0865\u0864\x03\x02\x02\x02\u0865\u0866\x03\x02\x02\x02\u0866=\x03\x02" +
		"\x02\x02\u0867\u0883\x05<\x1F\x02\u0868\u0869\x05@!\x02\u0869\u086A\x07" +
		"B\x02\x02\u086A\u086B\x07\u01B4\x02\x02\u086B\u0883\x03\x02\x02\x02\u086C" +
		"\u086D\x07\u01A4\x02\x02\u086D\u086E\x07\u0184\x02\x02\u086E\u0883\x05" +
		"L\'\x02\u086F\u0870\x07\x9A\x02\x02\u0870\u0883\x05\u05B4\u02DB\x02\u0871" +
		"\u0872\x07\u0145\x02\x02\u0872\u0883\x05\u0590\u02C9\x02\u0873\u0875\x07" +
		"\u010D\x02\x02\u0874\u0876\x05N(\x02\u0875\u0874\x03\x02\x02\x02\u0875" +
		"\u0876\x03\x02\x02\x02\u0876\u0883\x03\x02\x02\x02\u0877\u0878\x07\u0140" +
		"\x02\x02\u0878\u0883\x05R*\x02\u0879\u087A\x07\u014E\x02\x02\u087A\u087B" +
		"\x07l\x02\x02\u087B\u0883\x05R*\x02\u087C\u087D\x07\u0181\x02\x02\u087D" +
		"\u087E\x07\u0119\x02\x02\u087E\u0883\x05\u04FE\u0280\x02\u087F\u0880\x07" +
		"\u0166\x02\x02\u0880\u0881\x07\u0153\x02\x02\u0881\u0883\x05\u05B4\u02DB" +
		"\x02\u0882\u0867\x03\x02\x02\x02\u0882\u0868\x03\x02\x02\x02\u0882\u086C" +
		"\x03\x02\x02\x02\u0882\u086F\x03\x02\x02\x02\u0882\u0871\x03\x02\x02\x02" +
		"\u0882\u0873\x03\x02\x02\x02\u0882\u0877\x03\x02\x02\x02\u0882\u0879\x03" +
		"\x02\x02\x02\u0882\u087C\x03\x02\x02\x02\u0882\u087F\x03\x02\x02\x02\u0883" +
		"?\x03\x02\x02\x02\u0884\u0889\x05\u05C4\u02E3\x02\u0885\u0886\x07\r\x02" +
		"\x02\u0886\u0888\x05\u05C4\u02E3\x02\u0887\u0885\x03\x02\x02\x02\u0888" +
		"\u088B\x03\x02\x02\x02\u0889\u0887\x03\x02\x02\x02\u0889\u088A\x03\x02" +
		"\x02\x02\u088AA\x03\x02\x02\x02\u088B\u0889\x03\x02\x02\x02\u088C\u0891" +
		"\x05D#\x02\u088D\u088E\x07\b\x02\x02\u088E\u0890\x05D#\x02\u088F\u088D" +
		"\x03\x02\x02\x02\u0890\u0893\x03\x02\x02\x02\u0891\u088F\x03\x02\x02\x02" +
		"\u0891\u0892\x03\x02\x02\x02\u0892C\x03\x02\x02\x02\u0893\u0891\x03\x02" +
		"\x02\x02\u0894\u0897\x05J&\x02\u0895\u0897\x05\u0142\xA2\x02\u0896\u0894" +
		"\x03\x02\x02\x02\u0896\u0895\x03\x02\x02\x02\u0897E\x03\x02\x02\x02\u0898" +
		"\u0899\x07\u012E\x02\x02\u0899\u089E\t\x11\x02\x02\u089A\u089B\x07\u0138" +
		"\x02\x02\u089B\u089E\x07\u012E\x02\x02\u089C\u089E\x07\u014C\x02\x02\u089D" +
		"\u0898\x03\x02\x02\x02\u089D\u089A\x03\x02\x02\x02\u089D\u089C\x03\x02" +
		"\x02\x02\u089EG\x03\x02\x02\x02\u089F\u08A4\x07b\x02\x02\u08A0\u08A4\x07" +
		">\x02\x02\u08A1\u08A4\x07R\x02\x02\u08A2\u08A4\x05P)\x02\u08A3\u089F\x03" +
		"\x02\x02\x02\u08A3\u08A0\x03\x02\x02\x02\u08A3\u08A1\x03\x02\x02\x02\u08A3" +
		"\u08A2\x03\x02\x02\x02\u08A4I\x03\x02\x02\x02\u08A5\u08AA\x07b\x02\x02" +
		"\u08A6\u08AA\x07>\x02\x02\u08A7\u08AA\x07R\x02\x02\u08A8\u08AA\x05R*\x02" +
		"\u08A9\u08A5\x03\x02\x02\x02\u08A9\u08A6\x03\x02\x02\x02\u08A9\u08A7\x03" +
		"\x02\x02\x02\u08A9\u08A8\x03\x02\x02\x02\u08AAK\x03\x02\x02\x02\u08AB" +
		"\u08BC\x05\u05B4\u02DB\x02\u08AC\u08BC\x05\u05D6\u02EC\x02\u08AD\u08AE" +
		"\x05\u04B4\u025B\x02\u08AE\u08B0\x05\u05B4\u02DB\x02\u08AF\u08B1\x05\u04B8" +
		"\u025D\x02\u08B0\u08AF\x03\x02\x02\x02\u08B0\u08B1\x03\x02\x02\x02\u08B1" +
		"\u08BC\x03\x02\x02\x02\u08B2\u08B3\x05\u04B4\u025B\x02\u08B3\u08B4\x07" +
		"\x04\x02\x02\u08B4\u08B5\x05\u05B2\u02DA\x02\u08B5\u08B6\x07\x05\x02\x02" +
		"\u08B6\u08B7\x05\u05B4\u02DB\x02\u08B7\u08BC\x03\x02\x02\x02\u08B8\u08BC" +
		"\x05\u0142\xA2\x02\u08B9\u08BC\x077\x02\x02\u08BA\u08BC\x07\u0100\x02" +
		"\x02\u08BB\u08AB\x03\x02\x02\x02\u08BB\u08AC\x03\x02\x02\x02\u08BB\u08AD" +
		"\x03\x02\x02\x02\u08BB\u08B2\x03\x02\x02\x02\u08BB\u08B8\x03\x02\x02\x02" +
		"\u08BB\u08B9\x03\x02\x02\x02\u08BB\u08BA\x03\x02\x02\x02\u08BCM\x03\x02" +
		"\x02\x02\u08BD\u08C0\x05\u05B4\u02DB\x02\u08BE\u08C0\x077\x02\x02\u08BF" +
		"\u08BD\x03\x02\x02\x02\u08BF\u08BE\x03\x02\x02\x02\u08C0O\x03\x02\x02" +
		"\x02\u08C1\u08C4\x05\u05D0\u02E9\x02\u08C2\u08C4\x05\u05B4\u02DB\x02\u08C3" +
		"\u08C1\x03\x02\x02\x02\u08C3\u08C2\x03\x02\x02\x02\u08C4Q\x03\x02\x02" +
		"\x02\u08C5\u08C8\x05\u05D2\u02EA\x02\u08C6\u08C8\x05\u05B4\u02DB\x02\u08C7" +
		"\u08C5\x03\x02\x02\x02\u08C7\u08C6\x03\x02\x02\x02\u08C8S\x03\x02\x02" +
		"\x02\u08C9\u08CA\x07\u013B\x02\x02\u08CA\u08CB\x05V,\x02\u08CBU\x03\x02" +
		"\x02\x02\u08CC\u08D5\x05X-\x02\u08CD\u08CE\x07\u01A4\x02\x02\u08CE\u08D5" +
		"\x07\u0184\x02\x02\u08CF\u08D0\x07\u0166\x02\x02\u08D0\u08D1\x07\xF6\x02" +
		"\x02\u08D1\u08D5\x07\xFD\x02\x02\u08D2\u08D3\x07\u014E\x02\x02\u08D3\u08D5" +
		"\x07l\x02\x02\u08D4\u08CC\x03\x02\x02\x02\u08D4\u08CD\x03\x02\x02\x02" +
		"\u08D4\u08CF\x03\x02\x02\x02\u08D4\u08D2\x03\x02\x02\x02\u08D5W\x03\x02" +
		"\x02\x02\u08D6\u08D9\x05@!\x02\u08D7\u08D9\x07 \x02\x02\u08D8\u08D6\x03" +
		"\x02\x02\x02\u08D8\u08D7\x03\x02\x02\x02\u08D9Y\x03\x02\x02\x02\u08DA" +
		"\u08DB\x07\u014F\x02\x02\u08DB\u08DE\x05:\x1E\x02\u08DC\u08DE\x05T+\x02" +
		"\u08DD\u08DA\x03\x02\x02\x02\u08DD\u08DC\x03\x02\x02\x02\u08DE[\x03\x02" +
		"\x02\x02\u08DF\u08E0\x07\u014F\x02\x02\u08E0\u08E3\x05> \x02\u08E1\u08E3" +
		"\x05T+\x02\u08E2\u08DF\x03\x02\x02\x02\u08E2\u08E1\x03\x02\x02\x02\u08E3" +
		"]\x03\x02\x02\x02\u08E4\u08EE\x07\u0151\x02\x02\u08E5\u08EF\x05@!\x02" +
		"\u08E6\u08E7\x07\u01A4\x02\x02\u08E7\u08EF\x07\u0184\x02\x02\u08E8\u08E9" +
		"\x07\u0166\x02\x02\u08E9\u08EA\x07\xF6\x02\x02\u08EA\u08EF\x07\xFD\x02" +
		"\x02\u08EB\u08EC\x07\u014E\x02\x02\u08EC\u08EF\x07l\x02\x02\u08ED\u08EF" +
		"\x07 \x02\x02\u08EE\u08E5\x03\x02\x02\x02\u08EE\u08E6\x03\x02\x02\x02" +
		"\u08EE\u08E8\x03\x02\x02\x02\u08EE\u08EB\x03\x02\x02\x02\u08EE\u08ED\x03" +
		"\x02\x02\x02\u08EF_\x03\x02\x02\x02\u08F0\u08F1\x07\u014F\x02\x02\u08F1" +
		"\u08F2\x07\xA7\x02\x02\u08F2\u08F3\x05b2\x02\u08F3\u08F4\x05d3\x02\u08F4" +
		"a\x03\x02\x02\x02\u08F5\u08F8\x07 \x02\x02\u08F6\u08F8\x05\u0570\u02B9" +
		"\x02\u08F7\u08F5\x03\x02\x02\x02\u08F7\u08F6\x03\x02\x02\x02\u08F8c\x03" +
		"\x02\x02\x02\u08F9\u08FA\t\x12\x02\x02\u08FAe\x03\x02\x02\x02\u08FB\u08FC" +
		"\x07\x9D\x02\x02\u08FCg\x03\x02\x02\x02\u08FD\u08FE\x07\xBD\x02\x02\u08FE" +
		"\u08FF\t\x13\x02\x02\u08FFi\x03\x02\x02\x02\u0900\u0901\x07\x8C\x02\x02" +
		"\u0901\u0903\x07^\x02\x02\u0902\u0904\x05\u02EE\u0178\x02\u0903\u0902" +
		"\x03\x02\x02\x02\u0903\u0904\x03\x02\x02\x02\u0904\u0905\x03\x02\x02\x02" +
		"\u0905\u0908\x05\u0462\u0232\x02\u0906\u0909\x05l7\x02\u0907\u0909\x05" +
		"v<\x02\u0908\u0906\x03\x02\x02\x02\u0908\u0907\x03\x02\x02\x02\u0909\u0986" +
		"\x03\x02\x02\x02\u090A\u090B\x07\x8C\x02\x02\u090B\u090C\x07^\x02\x02" +
		"\u090C\u090D\x07 \x02\x02\u090D\u090E\x07F\x02\x02\u090E\u090F\x07\u0161" +
		"\x02\x02\u090F\u0913\x05\u057C\u02BF\x02\u0910\u0911\x07\u011B\x02\x02" +
		"\u0911\u0912\x07\x95\x02\x02\u0912\u0914\x05\u05C2\u02E2\x02\u0913\u0910" +
		"\x03\x02\x02\x02\u0913\u0914\x03\x02\x02\x02\u0914\u0915\x03\x02\x02\x02" +
		"\u0915\u0916\x07\u014F\x02\x02\u0916\u0917\x07\u0161\x02\x02\u0917\u0919" +
		"\x05\u057A\u02BE\x02\u0918\u091A\x05\u03D6\u01EC\x02\u0919\u0918\x03\x02" +
		"\x02\x02\u0919\u091A\x03\x02\x02\x02\u091A\u0986\x03\x02\x02\x02\u091B" +
		"\u091C\x07\x8C\x02\x02\u091C\u091E\x07^\x02\x02\u091D\u091F\x05\u02EE" +
		"\u0178\x02\u091E\u091D\x03\x02\x02\x02\u091E\u091F\x03\x02\x02\x02\u091F" +
		"\u0920\x03\x02\x02\x02\u0920\u0921\x05\u0580\u02C1\x02\u0921\u0922\x07" +
		"\u01B5\x02\x02\u0922\u0923\x07\u011F\x02\x02\u0923\u0928\x05\u0586\u02C4" +
		"\x02\u0924\u0925\x07@\x02\x02\u0925\u0926\x07\u01A8\x02\x02\u0926\u0929" +
		"\x05n8\x02\u0927\u0929\x077\x02\x02\u0928\u0924\x03\x02\x02\x02\u0928" +
		"\u0927\x03\x02\x02\x02\u0929\u0986\x03\x02\x02\x02\u092A\u092B\x07\x8C" +
		"\x02\x02\u092B\u092D\x07^\x02\x02\u092C\u092E\x05\u02EE\u0178\x02\u092D" +
		"\u092C\x03\x02\x02\x02\u092D\u092E\x03\x02\x02\x02\u092E\u092F\x03\x02" +
		"\x02\x02\u092F\u0930\x05\u0580\u02C1\x02\u0930\u0931\x07\u01B6\x02\x02" +
		"\u0931\u0932\x07\u011F\x02\x02\u0932\u0934\x05\u0586\u02C4\x02\u0933\u0935" +
		"\t\x14\x02\x02\u0934\u0933\x03\x02\x02\x02\u0934\u0935\x03\x02\x02\x02" +
		"\u0935\u0986\x03\x02\x02\x02\u0936\u0937\x07\x8C\x02\x02\u0937\u0939\x07" +
		"\xE4\x02\x02\u0938\u093A\x05\u02EE\u0178\x02\u0939\u0938\x03\x02\x02\x02" +
		"\u0939\u093A\x03\x02\x02\x02\u093A\u093B\x03\x02\x02\x02\u093B\u093E\x05" +
		"\u0586\u02C4\x02\u093C\u093F\x05l7\x02\u093D\u093F\x05x=\x02\u093E\u093C" +
		"\x03\x02\x02\x02\u093E\u093D\x03\x02\x02\x02\u093F\u0986\x03\x02\x02\x02" +
		"\u0940\u0941\x07\x8C\x02\x02\u0941\u0942\x07\xE4\x02\x02\u0942\u0943\x07" +
		" \x02\x02\u0943\u0944\x07F\x02\x02\u0944\u0945\x07\u0161\x02\x02\u0945" +
		"\u0949\x05\u057C\u02BF\x02\u0946\u0947\x07\u011B\x02\x02\u0947\u0948\x07" +
		"\x95\x02\x02\u0948\u094A\x05\u05C2\u02E2\x02\u0949\u0946\x03\x02\x02\x02" +
		"\u0949\u094A\x03\x02\x02\x02\u094A\u094B\x03\x02\x02\x02\u094B\u094C\x07" +
		"\u014F\x02\x02\u094C\u094D\x07\u0161\x02\x02\u094D\u094F\x05\u057A\u02BE" +
		"\x02\u094E\u0950\x05\u03D6\u01EC\x02\u094F\u094E\x03\x02\x02\x02\u094F" +
		"\u0950\x03\x02\x02\x02\u0950\u0986\x03\x02\x02\x02\u0951\u0952\x07\x8C" +
		"\x02\x02\u0952\u0954\x07\u014A\x02\x02\u0953\u0955\x05\u02EE\u0178\x02" +
		"\u0954\u0953\x03\x02\x02\x02\u0954\u0955\x03\x02\x02\x02\u0955\u0956\x03" +
		"\x02\x02\x02\u0956\u0957\x05\u0586\u02C4\x02\u0957\u0958\x05l7\x02\u0958" +
		"\u0986\x03\x02\x02\x02\u0959\u095A\x07\x8C\x02\x02\u095A\u095C\x07\u017A" +
		"\x02\x02\u095B\u095D\x05\u02EE\u0178\x02\u095C\u095B\x03\x02\x02\x02\u095C" +
		"\u095D\x03\x02\x02\x02\u095D\u095E\x03\x02\x02\x02\u095E\u095F\x05\u0584" +
		"\u02C3\x02\u095F\u0960\x05l7\x02\u0960\u0986\x03\x02\x02\x02\u0961\u0962" +
		"\x07\x8C\x02\x02\u0962\u0963\x07\u0105\x02\x02\u0963\u0965\x07\u017A\x02" +
		"\x02\u0964\u0966\x05\u02EE\u0178\x02\u0965\u0964\x03\x02\x02\x02\u0965" +
		"\u0966\x03\x02\x02\x02\u0966\u0967\x03\x02\x02\x02\u0967\u0968\x05\u0584" +
		"\u02C3\x02\u0968\u0969\x05l7\x02\u0969\u0986\x03\x02\x02\x02\u096A\u096B" +
		"\x07\x8C\x02\x02\u096B\u096C\x07\u0105\x02\x02\u096C\u096D\x07\u017A\x02" +
		"\x02\u096D\u096E\x07 \x02\x02\u096E\u096F\x07F\x02\x02\u096F\u0970\x07" +
		"\u0161\x02\x02\u0970\u0974\x05\u057C\u02BF\x02\u0971\u0972\x07\u011B\x02" +
		"\x02\u0972\u0973\x07\x95\x02\x02\u0973\u0975\x05\u05C2\u02E2\x02\u0974" +
		"\u0971\x03\x02\x02\x02\u0974\u0975\x03\x02\x02\x02\u0975\u0976\x03\x02" +
		"\x02\x02\u0976\u0977\x07\u014F\x02\x02\u0977\u0978\x07\u0161\x02\x02\u0978" +
		"\u097A\x05\u057A\u02BE\x02\u0979\u097B\x05\u03D6\u01EC\x02\u097A\u0979" +
		"\x03\x02\x02\x02\u097A\u097B\x03\x02\x02\x02\u097B\u0986\x03\x02\x02\x02" +
		"\u097C\u097D\x07\x8C\x02\x02\u097D\u097E\x07A\x02\x02\u097E\u0980\x07" +
		"^\x02\x02\u097F\u0981\x05\u02EE\u0178\x02\u0980\u097F\x03\x02\x02\x02" +
		"\u0980\u0981\x03\x02\x02\x02\u0981\u0982\x03\x02\x02\x02\u0982\u0983\x05" +
		"\u0462\u0232\x02\u0983\u0984\x05l7\x02\u0984\u0986\x03\x02\x02\x02\u0985" +
		"\u0900\x03\x02\x02\x02\u0985\u090A\x03\x02\x02\x02\u0985\u091B\x03\x02" +
		"\x02\x02\u0985\u092A\x03\x02\x02\x02\u0985\u0936\x03\x02\x02\x02\u0985" +
		"\u0940\x03\x02\x02\x02\u0985\u0951\x03\x02\x02\x02\u0985\u0959\x03\x02" +
		"\x02\x02\u0985\u0961\x03\x02\x02\x02\u0985\u096A\x03\x02\x02\x02\u0985" +
		"\u097C\x03\x02\x02\x02\u0986k\x03\x02\x02\x02\u0987\u098C\x05z>\x02\u0988" +
		"\u0989\x07\b\x02\x02\u0989\u098B\x05z>\x02\u098A\u0988\x03\x02\x02\x02" +
		"\u098B\u098E\x03\x02\x02\x02\u098C\u098A\x03\x02\x02\x02\u098C\u098D\x03" +
		"\x02\x02\x02\u098Dm\x03\x02\x02\x02\u098E\u098C\x03\x02\x02\x02\u098F" +
		"\u0990\x07F\x02\x02\u0990\u0999\x05\u049C\u024F\x02\u0991\u0992\x07B\x02" +
		"\x02\u0992\u0993\x05p9\x02\u0993\u0994\x07`\x02\x02\u0994\u0995\x05p9" +
		"\x02\u0995\u0999\x03\x02\x02\x02\u0996\u0997\x07k\x02\x02\u0997\u0999" +
		"\x05t;\x02\u0998\u098F\x03\x02\x02\x02\u0998\u0991\x03\x02\x02\x02\u0998" +
		"\u0996\x03\x02\x02\x02\u0999o\x03\x02\x02\x02\u099A\u099B\x07\x04\x02" +
		"\x02\u099B\u09A0\x05r:\x02\u099C\u099D\x07\b\x02\x02\u099D\u099F\x05r" +
		":\x02\u099E\u099C\x03\x02\x02\x02\u099F\u09A2\x03\x02\x02\x02\u09A0\u099E" +
		"\x03\x02\x02\x02\u09A0\u09A1\x03\x02\x02\x02\u09A1\u09A3\x03\x02\x02\x02" +
		"\u09A2\u09A0\x03\x02\x02\x02\u09A3\u09A4\x07\x05\x02\x02\u09A4q\x03\x02" +
		"\x02\x02\u09A5\u09A9\x05\u049C\u024F\x02\u09A6\u09A9\x07\u0108\x02\x02" +
		"\u09A7\u09A9\x07\u0106\x02\x02\u09A8\u09A5\x03\x02\x02\x02\u09A8\u09A6" +
		"\x03\x02\x02\x02\u09A8\u09A7\x03\x02\x02\x02\u09A9s\x03\x02\x02\x02\u09AA" +
		"\u09AB\x07\x04\x02\x02\u09AB\u09AC\x07\u0217\x02\x02\u09AC\u09AD\x05\u0142" +
		"\xA2\x02\u09AD\u09AE\x07\b\x02\x02\u09AE\u09AF\x07\u0218\x02\x02\u09AF" +
		"\u09B0\x05\u0142\xA2\x02\u09B0\u09B1\x07\x05\x02\x02\u09B1u\x03\x02\x02" +
		"\x02\u09B2\u09B3\x07\u01B5\x02\x02\u09B3\u09B4\x07\u011F\x02\x02\u09B4" +
		"\u09B5\x05\u0586\u02C4\x02\u09B5\u09B6\x05\x92J\x02\u09B6\u09BB\x03\x02" +
		"\x02\x02\u09B7\u09B8\x07\u01B6\x02\x02\u09B8\u09B9\x07\u011F\x02\x02\u09B9" +
		"\u09BB\x05\u0586\u02C4\x02\u09BA\u09B2\x03\x02\x02\x02\u09BA\u09B7\x03" +
		"\x02\x02\x02\u09BBw\x03\x02\x02\x02\u09BC\u09BD\x07\u01B5\x02\x02\u09BD" +
		"\u09BE\x07\u011F\x02\x02\u09BE\u09BF\x05\u0586\u02C4\x02\u09BFy\x03\x02" +
		"\x02\x02\u09C0\u09C2\x07\x87\x02\x02\u09C1\u09C3\x05\u0302\u0182\x02\u09C2" +
		"\u09C1\x03\x02\x02\x02\u09C2\u09C3\x03\x02\x02\x02\u09C3\u09C5\x03\x02" +
		"\x02\x02\u09C4\u09C6\x05\u0204\u0103\x02\u09C5\u09C4\x03\x02\x02\x02\u09C5" +
		"\u09C6\x03\x02\x02\x02\u09C6\u09C7\x03\x02\x02\x02\u09C7\u0AC7\x05\xD0" +
		"i\x02\u09C8\u09CA\x07\x8C\x02\x02\u09C9\u09CB\x05\u0302\u0182\x02\u09CA" +
		"\u09C9\x03\x02\x02\x02\u09CA\u09CB\x03\x02\x02\x02\u09CB\u09CC\x03\x02" +
		"\x02\x02\u09CC\u09CD\x05\u059A\u02CE\x02\u09CD\u09CE\x05|?\x02\u09CE\u0AC7" +
		"\x03\x02\x02\x02\u09CF\u09D1\x07\x8C\x02\x02\u09D0\u09D2\x05\u0302\u0182" +
		"\x02\u09D1\u09D0\x03\x02\x02\x02\u09D1\u09D2\x03\x02\x02\x02\u09D2\u09D3" +
		"\x03\x02\x02\x02\u09D3\u09D4\x05\u059A\u02CE\x02\u09D4\u09D5\x07\xC1\x02" +
		"\x02\u09D5\u09D6\x07O\x02\x02\u09D6\u09D7\x07P\x02\x02\u09D7\u0AC7\x03" +
		"\x02\x02\x02\u09D8\u09DA\x07\x8C\x02\x02\u09D9\u09DB\x05\u0302\u0182\x02" +
		"\u09DA\u09D9\x03\x02\x02\x02\u09DA\u09DB\x03\x02\x02\x02\u09DB\u09DC\x03" +
		"\x02\x02\x02\u09DC\u09DD\x05\u059A\u02CE\x02\u09DD\u09DE\x07\u014F\x02" +
		"\x02\u09DE\u09DF\x07O\x02\x02\u09DF\u09E0\x07P\x02\x02\u09E0\u0AC7\x03" +
		"\x02\x02\x02\u09E1\u09E3\x07\x8C\x02\x02\u09E2\u09E4\x05\u0302\u0182\x02" +
		"\u09E3\u09E2\x03\x02\x02\x02\u09E3\u09E4\x03\x02\x02\x02\u09E4\u09E5\x03" +
		"\x02\x02\x02\u09E5\u09E6\x05\u059A\u02CE\x02\u09E6\u09E7\x07\xC1\x02\x02" +
		"\u09E7\u09E9\x07\u01B7\x02\x02\u09E8\u09EA\x05\u02EE\u0178\x02\u09E9\u09E8" +
		"\x03\x02\x02\x02\u09E9\u09EA\x03\x02\x02\x02\u09EA\u0AC7\x03\x02\x02\x02" +
		"\u09EB\u09ED\x07\x8C\x02\x02\u09EC\u09EE\x05\u0302\u0182\x02\u09ED\u09EC" +
		"\x03\x02\x02\x02\u09ED\u09EE\x03\x02\x02\x02\u09EE\u09EF\x03\x02\x02\x02" +
		"\u09EF\u09F0\x05\u059A\u02CE\x02\u09F0\u09F1\x07\u014F\x02\x02\u09F1\u09F2" +
		"\x07\u0158\x02\x02\u09F2\u09F3\x05\u05BA\u02DE\x02\u09F3\u0AC7\x03\x02" +
		"\x02\x02\u09F4\u09F6\x07\x8C\x02\x02\u09F5\u09F7\x05\u0302\u0182\x02\u09F6" +
		"\u09F5\x03\x02\x02\x02\u09F6\u09F7\x03\x02\x02\x02\u09F7\u09F8\x03\x02" +
		"\x02\x02\u09F8\u09F9\x05\u059A\u02CE\x02\u09F9\u09FA\x07\u014F\x02\x02" +
		"\u09FA\u09FB\x07\u0158\x02\x02\u09FB\u09FC\x05\u05BA\u02DE\x02\u09FC\u0AC7" +
		"\x03\x02\x02\x02\u09FD\u09FF\x07\x8C\x02\x02\u09FE\u0A00\x05\u0302\u0182" +
		"\x02\u09FF\u09FE\x03\x02\x02\x02\u09FF\u0A00\x03\x02\x02\x02\u0A00\u0A01" +
		"\x03\x02\x02\x02\u0A01\u0A02\x05\u059A\u02CE\x02\u0A02\u0A03\x07\u014F" +
		"\x02\x02\u0A03\u0A04\x05\x86D\x02\u0A04\u0AC7\x03\x02\x02\x02\u0A05\u0A07" +
		"\x07\x8C\x02\x02\u0A06\u0A08\x05\u0302\u0182\x02\u0A07\u0A06\x03\x02\x02" +
		"\x02\u0A07\u0A08\x03\x02\x02\x02\u0A08\u0A09\x03\x02\x02\x02\u0A09\u0A0A" +
		"\x05\u059A\u02CE\x02\u0A0A\u0A0B\x07\u013B\x02\x02\u0A0B\u0A0C\x05\x86" +
		"D\x02\u0A0C\u0AC7\x03\x02\x02\x02\u0A0D\u0A0F\x07\x8C\x02\x02\u0A0E\u0A10" +
		"\x05\u0302\u0182\x02\u0A0F\u0A0E\x03\x02\x02\x02\u0A0F\u0A10\x03\x02\x02" +
		"\x02\u0A10\u0A11\x03\x02\x02\x02\u0A11\u0A12\x05\u059A\u02CE\x02\u0A12" +
		"\u0A13\x07\u014F\x02\x02\u0A13\u0A14\x07\u015B\x02\x02\u0A14\u0A15\x05" +
		"\u05C4\u02E3\x02\u0A15\u0AC7\x03\x02\x02\x02\u0A16\u0A18\x07\x8C\x02\x02" +
		"\u0A17\u0A19\x05\u0302\u0182\x02\u0A18\u0A17\x03\x02\x02\x02\u0A18\u0A19" +
		"\x03\x02\x02\x02\u0A19\u0A1A\x03\x02\x02\x02\u0A1A\u0A1B\x05\u059A\u02CE" +
		"\x02\u0A1B\u0A1C\x07\x87\x02\x02\u0A1C\u0A1D\x07\u01B8\x02\x02\u0A1D\u0A1E" +
		"\x05\xE2r\x02\u0A1E\u0A1F\x07&\x02\x02\u0A1F\u0A21\x07\xDD\x02\x02\u0A20" +
		"\u0A22\x05\u013A\x9E\x02\u0A21\u0A20\x03\x02\x02\x02\u0A21\u0A22\x03\x02" +
		"\x02\x02\u0A22\u0AC7\x03\x02\x02\x02\u0A23\u0A25\x07\x8C\x02\x02\u0A24" +
		"\u0A26\x05\u0302\u0182\x02\u0A25\u0A24\x03\x02\x02\x02\u0A25\u0A26\x03" +
		"\x02\x02\x02\u0A26\u0A27\x03\x02\x02\x02\u0A27\u0A28\x05\u059A\u02CE\x02" +
		"\u0A28\u0A29\x05\x8EH\x02\u0A29\u0AC7\x03\x02\x02\x02\u0A2A\u0A2C\x07" +
		"\x8C\x02\x02\u0A2B\u0A2D\x05\u0302\u0182\x02\u0A2C\u0A2B\x03\x02\x02\x02" +
		"\u0A2C\u0A2D\x03\x02\x02\x02\u0A2D\u0A2E\x03\x02\x02\x02\u0A2E\u0A2F\x05" +
		"\u059A\u02CE\x02\u0A2F\u0A30\x07\xC1\x02\x02\u0A30\u0A32\x07\xDD\x02\x02" +
		"\u0A31\u0A33\x05\u02EE\u0178\x02\u0A32\u0A31\x03\x02\x02\x02\u0A32\u0A33" +
		"\x03\x02\x02\x02\u0A33\u0AC7\x03\x02\x02\x02\u0A34\u0A36\x07\xC1\x02\x02" +
		"\u0A35\u0A37\x05\u0302\u0182\x02\u0A36\u0A35\x03\x02\x02\x02\u0A36\u0A37" +
		"\x03\x02\x02\x02\u0A37\u0A39\x03\x02\x02\x02\u0A38\u0A3A\x05\u02EE\u0178" +
		"\x02\u0A39\u0A38\x03\x02\x02\x02\u0A39\u0A3A\x03\x02\x02\x02\u0A3A\u0A3B" +
		"\x03\x02\x02\x02\u0A3B\u0A3D\x05\u059A\u02CE\x02\u0A3C\u0A3E\x05~@\x02" +
		"\u0A3D\u0A3C\x03\x02\x02\x02\u0A3D\u0A3E\x03\x02\x02\x02\u0A3E\u0AC7\x03" +
		"\x02\x02\x02\u0A3F\u0A41\x07\x8C\x02\x02\u0A40\u0A42\x05\u0302\u0182\x02" +
		"\u0A41\u0A40\x03\x02\x02\x02\u0A41\u0A42\x03\x02\x02\x02\u0A42\u0A43\x03" +
		"\x02\x02\x02\u0A43\u0A45\x05\u059A\u02CE\x02\u0A44\u0A46\x05\u0304\u0183" +
		"\x02\u0A45\u0A44\x03\x02\x02\x02\u0A45\u0A46\x03\x02\x02\x02\u0A46\u0A47" +
		"\x03\x02\x02\x02\u0A47\u0A48\x07\u016A\x02\x02\u0A48\u0A4A\x05\u0492\u024A" +
		"\x02\u0A49\u0A4B\x05\x80A\x02\u0A4A\u0A49\x03\x02\x02\x02\u0A4A\u0A4B" +
		"\x03\x02\x02\x02\u0A4B\u0A4D\x03\x02\x02\x02\u0A4C\u0A4E\x05\x82B\x02" +
		"\u0A4D\u0A4C\x03\x02\x02\x02\u0A4D\u0A4E\x03\x02\x02\x02\u0A4E\u0AC7\x03" +
		"\x02\x02\x02\u0A4F\u0A51\x07\x8C\x02\x02\u0A50\u0A52\x05\u0302\u0182\x02" +
		"\u0A51\u0A50\x03\x02\x02\x02\u0A51\u0A52\x03\x02\x02\x02\u0A52\u0A53\x03" +
		"\x02\x02\x02\u0A53\u0A54\x05\u059A\u02CE\x02\u0A54\u0A55\x05\u0174\xBB" +
		"\x02\u0A55\u0AC7\x03\x02";
	private static readonly _serializedATNSegment8: string =
		"\x02\x02\u0A56\u0A57\x07\x87\x02\x02\u0A57\u0AC7\x05\xEEx\x02\u0A58\u0A59" +
		"\x07\x8C\x02\x02\u0A59\u0A5A\x07/\x02\x02\u0A5A\u0A5B\x05\u059E\u02D0" +
		"\x02\u0A5B\u0A5C\x05\u01DC\xEF\x02\u0A5C\u0AC7\x03\x02\x02\x02\u0A5D\u0A5E" +
		"\x07\u0176\x02\x02\u0A5E\u0A5F\x07/\x02\x02\u0A5F\u0AC7\x05\u059E\u02D0" +
		"\x02\u0A60\u0A61\x07\xC1\x02\x02\u0A61\u0A63\x07/\x02\x02\u0A62\u0A64" +
		"\x05\u02EE\u0178\x02\u0A63\u0A62\x03\x02\x02\x02\u0A63\u0A64\x03\x02\x02" +
		"\x02\u0A64\u0A65\x03\x02\x02\x02\u0A65\u0A67\x05\u059E\u02D0\x02\u0A66" +
		"\u0A68\x05~@\x02\u0A67\u0A66\x03\x02\x02\x02\u0A67\u0A68\x03\x02\x02\x02" +
		"\u0A68\u0AC7\x03\x02\x02\x02\u0A69\u0A6A\x07\u014F\x02\x02\u0A6A\u0A6B" +
		"\x07\u017D\x02\x02\u0A6B\u0AC7\x07\u0117\x02\x02\u0A6C\u0A6D\x07\xA0\x02" +
		"\x02\u0A6D\u0A6E\x07R\x02\x02\u0A6E\u0AC7\x05\u059E\u02D0\x02\u0A6F\u0A70" +
		"\x07\u014F\x02\x02\u0A70\u0A71\x07\u017D\x02\x02\u0A71\u0AC7\x07\xA0\x02" +
		"\x02\u0A72\u0A73\x07\u014F\x02\x02\u0A73\u0AC7\x07\u01B9\x02\x02\u0A74" +
		"\u0A75\x07\u014F\x02\x02\u0A75\u0AC7\x07\u0171\x02\x02\u0A76\u0A77\x07" +
		"\xC3\x02\x02\u0A77\u0A78\x07\u0167\x02\x02\u0A78\u0AC7\x05\u059E\u02D0" +
		"\x02\u0A79\u0A7A\x07\xC3\x02\x02\u0A7A\u0A7B\x07\x8D\x02\x02\u0A7B\u0A7C" +
		"\x07\u0167\x02\x02\u0A7C\u0AC7\x05\u059E\u02D0\x02\u0A7D\u0A7E\x07\xC3" +
		"\x02\x02\u0A7E\u0A7F\x07\u013A\x02\x02\u0A7F\u0A80\x07\u0167\x02\x02\u0A80" +
		"\u0AC7\x05\u059E\u02D0\x02\u0A81\u0A82\x07\xC3\x02\x02\u0A82\u0A83\x07" +
		"\u0167\x02\x02\u0A83\u0AC7\x07 \x02\x02\u0A84\u0A85\x07\xC3\x02\x02\u0A85" +
		"\u0A86\x07\u0167\x02\x02\u0A86\u0AC7\x07e\x02\x02\u0A87\u0A88\x07\xBC" +
		"\x02\x02\u0A88\u0A89\x07\u0167\x02\x02\u0A89\u0AC7\x05\u059E\u02D0\x02" +
		"\u0A8A\u0A8B\x07\xBC\x02\x02\u0A8B\u0A8C\x07\u0167\x02\x02\u0A8C\u0AC7" +
		"\x07 \x02\x02\u0A8D\u0A8E\x07\xBC\x02\x02\u0A8E\u0A8F\x07\u0167\x02\x02" +
		"\u0A8F\u0AC7\x07e\x02\x02\u0A90\u0A91\x07\xC3\x02\x02\u0A91\u0A92\x07" +
		"\u0143\x02\x02\u0A92\u0AC7\x05\u059E\u02D0\x02\u0A93\u0A94\x07\xC3\x02" +
		"\x02\u0A94\u0A95\x07\x8D\x02\x02\u0A95\u0A96\x07\u0143\x02\x02\u0A96\u0AC7" +
		"\x05\u059E\u02D0\x02\u0A97\u0A98\x07\xC3\x02\x02\u0A98\u0A99\x07\u013A" +
		"\x02\x02\u0A99\u0A9A\x07\u0143\x02\x02\u0A9A\u0AC7\x05\u059E\u02D0\x02" +
		"\u0A9B\u0A9C\x07\xBC\x02\x02\u0A9C\u0A9D\x07\u0143\x02\x02\u0A9D\u0AC7" +
		"\x05\u059E\u02D0\x02\u0A9E\u0A9F\x07\xE6\x02\x02\u0A9F\u0AC7\x05\u0586" +
		"\u02C4\x02\u0AA0\u0AA1\x07\u010F\x02\x02\u0AA1\u0AA2\x07\xE6\x02\x02\u0AA2" +
		"\u0AC7\x05\u0586\u02C4\x02\u0AA3\u0AA4\x07\u0115\x02\x02\u0AA4\u0AC7\x05" +
		"\u0230\u0119\x02\u0AA5\u0AA6\x07O\x02\x02\u0AA6\u0AC7\x07\u0115\x02\x02" +
		"\u0AA7\u0AA8\x07\u011C\x02\x02\u0AA8\u0AA9\x07`\x02\x02\u0AA9\u0AC7\x05" +
		"\u05C0\u02E1\x02\u0AAA\u0AAB\x07\u014F\x02\x02\u0AAB\u0AAC\x07\u0161\x02" +
		"\x02\u0AAC\u0AC7\x05\u057A\u02BE\x02\u0AAD\u0AAE\x07\u014F\x02\x02\u0AAE" +
		"\u0AC7\x05\x86D\x02\u0AAF\u0AB0\x07\u013B\x02\x02\u0AB0\u0AC7\x05\x86" +
		"D\x02\u0AB1\u0AB2\x07\u013A\x02\x02\u0AB2\u0AB3\x07\xDD\x02\x02\u0AB3" +
		"\u0AC7\x05\x84C\x02\u0AB4\u0AB5\x07\xC3\x02\x02\u0AB5\u0AB6\x07\u01A0" +
		"\x02\x02\u0AB6\u0AB7\x07\xFD\x02\x02\u0AB7\u0AC7\x07\u0149\x02\x02\u0AB8" +
		"\u0AB9\x07\xBC\x02\x02\u0AB9\u0ABA\x07\u01A0\x02\x02\u0ABA\u0ABB\x07\xFD" +
		"\x02\x02\u0ABB\u0AC7\x07\u0149\x02\x02\u0ABC\u0ABD\x07\xD3\x02\x02\u0ABD" +
		"\u0ABE\x07\u01A0\x02\x02\u0ABE\u0ABF\x07\xFD\x02\x02\u0ABF\u0AC7\x07\u0149" +
		"\x02\x02\u0AC0\u0AC1\x07\u010F\x02\x02\u0AC1\u0AC2\x07\xD3\x02\x02\u0AC2" +
		"\u0AC3\x07\u01A0\x02\x02\u0AC3\u0AC4\x07\xFD\x02\x02\u0AC4\u0AC7\x07\u0149" +
		"\x02\x02\u0AC5\u0AC7\x05\u0174\xBB\x02\u0AC6\u09C0\x03\x02\x02\x02\u0AC6" +
		"\u09C8\x03\x02\x02\x02\u0AC6\u09CF\x03\x02\x02\x02\u0AC6\u09D8\x03\x02" +
		"\x02\x02\u0AC6\u09E1\x03\x02\x02\x02\u0AC6\u09EB\x03\x02\x02\x02\u0AC6" +
		"\u09F4\x03\x02\x02\x02\u0AC6\u09FD\x03\x02\x02\x02\u0AC6\u0A05\x03\x02" +
		"\x02\x02\u0AC6\u0A0D\x03\x02\x02\x02\u0AC6\u0A16\x03\x02\x02\x02\u0AC6" +
		"\u0A23\x03\x02\x02\x02\u0AC6\u0A2A\x03\x02\x02\x02\u0AC6\u0A34\x03\x02" +
		"\x02\x02\u0AC6\u0A3F\x03\x02\x02\x02\u0AC6\u0A4F\x03\x02\x02\x02\u0AC6" +
		"\u0A56\x03\x02\x02\x02\u0AC6\u0A58\x03\x02\x02\x02\u0AC6\u0A5D\x03\x02" +
		"\x02\x02\u0AC6\u0A60\x03\x02\x02\x02\u0AC6\u0A69\x03\x02\x02\x02\u0AC6" +
		"\u0A6C\x03\x02\x02\x02\u0AC6\u0A6F\x03\x02\x02\x02\u0AC6\u0A72\x03\x02" +
		"\x02\x02\u0AC6\u0A74\x03\x02\x02\x02\u0AC6\u0A76\x03\x02\x02\x02\u0AC6" +
		"\u0A79\x03\x02\x02\x02\u0AC6\u0A7D\x03\x02\x02\x02\u0AC6\u0A81\x03\x02" +
		"\x02\x02\u0AC6\u0A84\x03\x02\x02\x02\u0AC6\u0A87\x03\x02\x02\x02\u0AC6" +
		"\u0A8A\x03\x02\x02\x02\u0AC6\u0A8D\x03\x02\x02\x02\u0AC6\u0A90\x03\x02" +
		"\x02\x02\u0AC6\u0A93\x03\x02\x02\x02\u0AC6\u0A97\x03\x02\x02\x02\u0AC6" +
		"\u0A9B\x03\x02\x02\x02\u0AC6\u0A9E\x03\x02\x02\x02\u0AC6\u0AA0\x03\x02" +
		"\x02\x02\u0AC6\u0AA3\x03\x02\x02\x02\u0AC6\u0AA5\x03\x02\x02\x02\u0AC6" +
		"\u0AA7\x03\x02\x02\x02\u0AC6\u0AAA\x03\x02\x02\x02\u0AC6\u0AAD\x03\x02" +
		"\x02\x02\u0AC6\u0AAF\x03\x02\x02\x02\u0AC6\u0AB1\x03\x02\x02\x02\u0AC6" +
		"\u0AB4\x03\x02\x02\x02\u0AC6\u0AB8\x03\x02\x02\x02\u0AC6\u0ABC\x03\x02" +
		"\x02\x02\u0AC6\u0AC0\x03\x02\x02\x02\u0AC6\u0AC5\x03\x02\x02\x02\u0AC7" +
		"{\x03\x02\x02\x02\u0AC8\u0AC9\x07\u014F\x02\x02\u0AC9\u0ACA\x077\x02\x02" +
		"\u0ACA\u0ACE\x05\u04BE\u0260\x02\u0ACB\u0ACC\x07\xC1\x02\x02\u0ACC\u0ACE" +
		"\x077\x02\x02\u0ACD\u0AC8\x03\x02\x02\x02\u0ACD\u0ACB\x03\x02\x02\x02" +
		"\u0ACE}\x03\x02\x02\x02\u0ACF\u0AD0\t\x15\x02\x02\u0AD0\x7F\x03\x02\x02" +
		"\x02\u0AD1\u0AD2\x07-\x02\x02\u0AD2\u0AD3\x05\u0230\u0119\x02\u0AD3\x81" +
		"\x03\x02\x02\x02\u0AD4\u0AD5\x07f\x02\x02\u0AD5\u0AD6\x05\u04BE\u0260" +
		"\x02\u0AD6\x83\x03\x02\x02\x02\u0AD7\u0ADE\x07\u0110\x02\x02\u0AD8\u0ADE" +
		"\x07s\x02\x02\u0AD9\u0ADE\x077\x02\x02\u0ADA\u0ADB\x07f\x02\x02\u0ADB" +
		"\u0ADC\x07\xE4\x02\x02\u0ADC\u0ADE\x05\u059E\u02D0\x02\u0ADD\u0AD7\x03" +
		"\x02\x02\x02\u0ADD\u0AD8\x03\x02\x02\x02\u0ADD\u0AD9\x03\x02\x02\x02\u0ADD" +
		"\u0ADA\x03\x02\x02\x02\u0ADE\x85\x03\x02\x02\x02\u0ADF\u0AE0\x07\x04\x02" +
		"\x02\u0AE0\u0AE1\x05\x8AF\x02\u0AE1\u0AE2\x07\x05\x02\x02\u0AE2\x87\x03" +
		"\x02\x02\x02\u0AE3\u0AE4\x07k\x02\x02\u0AE4\u0AE5\x05\x86D\x02\u0AE5\x89" +
		"\x03\x02\x02\x02\u0AE6\u0AEB\x05\x8CG\x02\u0AE7\u0AE8\x07\b\x02\x02\u0AE8" +
		"\u0AEA\x05\x8CG\x02\u0AE9\u0AE7\x03\x02\x02\x02\u0AEA\u0AED\x03\x02\x02" +
		"\x02\u0AEB\u0AE9\x03\x02\x02\x02\u0AEB\u0AEC\x03\x02\x02\x02\u0AEC\x8B" +
		"\x03\x02\x02\x02\u0AED\u0AEB\x03\x02\x02\x02\u0AEE\u0AF7\x05\u05D4\u02EB" +
		"\x02\u0AEF\u0AF0\x07\f\x02\x02\u0AF0\u0AF8\x05\u01F6\xFC\x02\u0AF1\u0AF2" +
		"\x07\r\x02\x02\u0AF2\u0AF5\x05\u05D4\u02EB\x02\u0AF3\u0AF4\x07\f\x02\x02" +
		"\u0AF4\u0AF6\x05\u01F6\xFC\x02\u0AF5\u0AF3\x03\x02\x02\x02\u0AF5\u0AF6" +
		"\x03\x02\x02\x02\u0AF6\u0AF8\x03\x02\x02\x02\u0AF7\u0AEF\x03\x02\x02\x02" +
		"\u0AF7\u0AF1\x03\x02\x02\x02\u0AF7\u0AF8\x03\x02\x02\x02\u0AF8\x8D\x03" +
		"\x02\x02\x02\u0AF9\u0AFB\x05\x90I\x02\u0AFA\u0AF9\x03\x02\x02\x02\u0AFB" +
		"\u0AFC\x03\x02\x02\x02\u0AFC\u0AFA\x03\x02\x02\x02\u0AFC\u0AFD\x03\x02" +
		"\x02\x02\u0AFD\x8F\x03\x02\x02\x02\u0AFE\u0B03\x07\u013C\x02\x02\u0AFF" +
		"\u0B01\x05\x10\t\x02\u0B00\u0AFF\x03\x02\x02\x02\u0B00\u0B01\x03\x02\x02" +
		"\x02\u0B01\u0B02\x03\x02\x02\x02\u0B02\u0B04\x05\u0142\xA2\x02\u0B03\u0B00" +
		"\x03\x02\x02\x02\u0B03\u0B04\x03\x02\x02\x02\u0B04\u0B0C\x03\x02\x02\x02" +
		"\u0B05\u0B09\x07\u014F\x02\x02\u0B06\u0B0A\x05\u013E\xA0\x02\u0B07\u0B08" +
		"\x07\u01B8\x02\x02\u0B08\u0B0A\x05\xE2r\x02\u0B09\u0B06\x03\x02\x02\x02" +
		"\u0B09\u0B07\x03\x02\x02\x02\u0B0A\u0B0C\x03\x02\x02\x02\u0B0B\u0AFE\x03" +
		"\x02\x02\x02\u0B0B\u0B05\x03\x02\x02\x02\u0B0C\x91\x03\x02\x02\x02\u0B0D" +
		"\u0B0E\x07@\x02\x02\u0B0E\u0B0F\x07\u01A8\x02\x02\u0B0F\u0B10\x07k\x02" +
		"\x02\u0B10\u0B11\x07\x04\x02\x02\u0B11\u0B12\x05\x96L\x02\u0B12\u0B13" +
		"\x07\x05\x02\x02\u0B13\u0B28\x03\x02\x02\x02\u0B14\u0B15\x07@\x02\x02" +
		"\u0B15\u0B16\x07\u01A8\x02\x02\u0B16\u0B17\x07F\x02\x02\u0B17\u0B18\x07" +
		"\x04\x02\x02\u0B18\u0B19\x05\u0532\u029A\x02\u0B19\u0B1A\x07\x05\x02\x02" +
		"\u0B1A\u0B28\x03\x02\x02\x02\u0B1B\u0B1C\x07@\x02\x02\u0B1C\u0B1D\x07" +
		"\u01A8\x02\x02\u0B1D\u0B1E\x07B\x02\x02\u0B1E\u0B1F\x07\x04\x02\x02\u0B1F" +
		"\u0B20\x05\u0532\u029A\x02\u0B20\u0B21\x07\x05\x02\x02\u0B21\u0B22\x07" +
		"`\x02\x02\u0B22\u0B23\x07\x04\x02\x02\u0B23\u0B24\x05\u0532\u029A\x02" +
		"\u0B24\u0B25\x07\x05\x02\x02\u0B25\u0B28\x03\x02\x02\x02\u0B26\u0B28\x07" +
		"7\x02\x02\u0B27\u0B0D\x03\x02\x02\x02\u0B27\u0B14\x03\x02\x02\x02\u0B27" +
		"\u0B1B\x03\x02\x02\x02\u0B27\u0B26\x03\x02\x02\x02\u0B28\x93\x03\x02\x02" +
		"\x02\u0B29\u0B2A\x05\u05D2\u02EA\x02\u0B2A\u0B2B\x05\u05B2\u02DA\x02\u0B2B" +
		"\x95\x03\x02\x02\x02\u0B2C\u0B31\x05\x94K\x02\u0B2D\u0B2E\x07\b\x02\x02" +
		"\u0B2E\u0B30\x05\x94K\x02\u0B2F\u0B2D\x03\x02\x02\x02\u0B30\u0B33\x03" +
		"\x02\x02\x02\u0B31\u0B2F\x03\x02\x02\x02\u0B31\u0B32\x03\x02\x02\x02\u0B32" +
		"\x97\x03\x02\x02\x02\u0B33\u0B31\x03\x02\x02\x02\u0B34\u0B35\x07\x8C\x02" +
		"\x02\u0B35\u0B36\x07\u016A\x02\x02\u0B36\u0B37\x05\u0230\u0119\x02\u0B37" +
		"\u0B38\x05\x9AN\x02\u0B38\x99\x03\x02\x02\x02\u0B39\u0B3E\x05\x9CO\x02" +
		"\u0B3A\u0B3B\x07\b\x02\x02\u0B3B\u0B3D\x05\x9CO\x02\u0B3C\u0B3A\x03\x02" +
		"\x02\x02\u0B3D\u0B40\x03\x02\x02\x02\u0B3E\u0B3C\x03\x02\x02\x02\u0B3E" +
		"\u0B3F\x03\x02\x02\x02\u0B3F\x9B\x03\x02\x02\x02\u0B40\u0B3E\x03\x02\x02" +
		"\x02\u0B41\u0B42\x07\x87\x02\x02\u0B42\u0B43\x07\x91\x02\x02\u0B43\u0B45" +
		"\x05\u0482\u0242\x02\u0B44\u0B46\x05~@\x02\u0B45\u0B44\x03\x02\x02\x02" +
		"\u0B45\u0B46\x03\x02\x02\x02\u0B46\u0B5F\x03\x02\x02\x02\u0B47\u0B48\x07" +
		"\xC1\x02\x02\u0B48\u0B4A\x07\x91\x02\x02\u0B49\u0B4B\x05\u02EE\u0178\x02" +
		"\u0B4A\u0B49\x03\x02\x02\x02\u0B4A\u0B4B\x03\x02\x02\x02\u0B4B\u0B4C\x03" +
		"\x02\x02\x02\u0B4C\u0B4E\x05\u05C4\u02E3\x02\u0B4D\u0B4F\x05~@\x02\u0B4E" +
		"\u0B4D\x03\x02\x02\x02\u0B4E\u0B4F\x03\x02\x02\x02\u0B4F\u0B5F\x03\x02" +
		"\x02\x02\u0B50\u0B51\x07\x8C\x02\x02\u0B51\u0B52\x07\x91\x02\x02\u0B52" +
		"\u0B54\x05\u05C4\u02E3\x02\u0B53\u0B55\x05\u0304\u0183\x02\u0B54\u0B53" +
		"\x03\x02\x02\x02\u0B54\u0B55\x03\x02\x02\x02\u0B55\u0B56\x03\x02\x02\x02" +
		"\u0B56\u0B57\x07\u016A\x02\x02\u0B57\u0B59\x05\u0492\u024A\x02\u0B58\u0B5A" +
		"\x05\x80A\x02\u0B59\u0B58\x03\x02\x02\x02\u0B59\u0B5A\x03\x02\x02\x02" +
		"\u0B5A\u0B5C\x03\x02\x02\x02\u0B5B\u0B5D\x05~@\x02\u0B5C\u0B5B\x03\x02" +
		"\x02\x02\u0B5C\u0B5D\x03\x02\x02\x02\u0B5D\u0B5F\x03\x02\x02\x02\u0B5E" +
		"\u0B41\x03\x02\x02\x02\u0B5E\u0B47\x03\x02\x02\x02\u0B5E\u0B50\x03\x02" +
		"\x02\x02\u0B5F\x9D\x03\x02\x02\x02\u0B60\u0B63\x07\x9F\x02\x02\u0B61\u0B64" +
		"\x05\u03E6\u01F4\x02\u0B62\u0B64\x07 \x02\x02\u0B63\u0B61\x03\x02\x02" +
		"\x02\u0B63\u0B62\x03\x02\x02\x02\u0B64\x9F\x03\x02\x02\x02\u0B65\u0B67" +
		"\x07\xAB\x02\x02\u0B66\u0B68\x05\xAEX\x02\u0B67\u0B66\x03\x02\x02\x02" +
		"\u0B67\u0B68\x03\x02\x02\x02\u0B68\u0B69\x03\x02\x02\x02\u0B69\u0B6B\x05" +
		"\u0580\u02C1\x02\u0B6A\u0B6C\x05\xF4{\x02\u0B6B\u0B6A\x03\x02\x02\x02" +
		"\u0B6B\u0B6C\x03\x02\x02\x02\u0B6C\u0B6D\x03\x02\x02\x02\u0B6D\u0B6F\x05" +
		"\xA2R\x02\u0B6E\u0B70\x05\xA4S\x02\u0B6F\u0B6E\x03\x02\x02\x02\u0B6F\u0B70" +
		"\x03\x02\x02\x02\u0B70\u0B71\x03\x02\x02\x02\u0B71\u0B73\x05\xA6T\x02" +
		"\u0B72\u0B74\x05\xB0Y\x02\u0B73\u0B72\x03\x02\x02\x02\u0B73\u0B74\x03" +
		"\x02\x02\x02\u0B74\u0B76\x03\x02\x02\x02\u0B75\u0B77\x05\x10\t\x02\u0B76" +
		"\u0B75\x03\x02\x02\x02\u0B76\u0B77\x03\x02\x02\x02\u0B77\u0B78\x03\x02" +
		"\x02\x02\u0B78\u0B7A\x05\xA8U\x02\u0B79\u0B7B\x05\u047A\u023E\x02\u0B7A" +
		"\u0B79\x03\x02\x02\x02\u0B7A\u0B7B\x03\x02\x02\x02\u0B7B\u0B8B\x03\x02" +
		"\x02\x02\u0B7C\u0B7D\x07\xAB\x02\x02\u0B7D\u0B7E\x07\x04\x02\x02\u0B7E" +
		"\u0B7F\x05\u03B2\u01DA\x02\u0B7F\u0B80\x07\x05\x02\x02\u0B80\u0B82\x07" +
		"`\x02\x02\u0B81\u0B83\x05\xA4S\x02\u0B82\u0B81\x03\x02\x02\x02\u0B82\u0B83" +
		"\x03\x02\x02\x02\u0B83\u0B84\x03\x02\x02\x02\u0B84\u0B86\x05\xA6T\x02" +
		"\u0B85\u0B87\x05\x10\t\x02\u0B86\u0B85\x03\x02\x02\x02\u0B86\u0B87\x03" +
		"\x02\x02\x02\u0B87\u0B88\x03\x02\x02\x02\u0B88\u0B89\x05\xA8U\x02\u0B89" +
		"\u0B8B\x03\x02\x02\x02\u0B8A\u0B65\x03\x02\x02\x02\u0B8A\u0B7C\x03\x02" +
		"\x02\x02\u0B8B\xA1\x03\x02\x02\x02\u0B8C\u0B8D\t\x16\x02\x02\u0B8D\xA3" +
		"\x03\x02\x02\x02\u0B8E\u0B8F\x07\u012B\x02\x02\u0B8F\xA5\x03\x02\x02\x02" +
		"\u0B90\u0B94\x05\u05B4\u02DB\x02\u0B91\u0B94\x07\u0159\x02\x02\u0B92\u0B94" +
		"\x07\u015A\x02\x02\u0B93\u0B90\x03\x02\x02\x02\u0B93\u0B91\x03\x02\x02" +
		"\x02\u0B93\u0B92\x03\x02\x02\x02\u0B94\xA7\x03\x02\x02\x02\u0B95\u0B9B" +
		"\x05\xAAV\x02\u0B96\u0B97\x07\x04\x02\x02\u0B97\u0B98\x05\xB4[\x02\u0B98" +
		"\u0B99\x07\x05\x02\x02\u0B99\u0B9B\x03\x02\x02\x02\u0B9A\u0B95\x03\x02" +
		"\x02\x02\u0B9A\u0B96\x03\x02\x02\x02\u0B9B\xA9\x03\x02\x02\x02\u0B9C\u0B9E" +
		"\x05\xACW\x02\u0B9D\u0B9C\x03\x02\x02\x02\u0B9E\u0BA1\x03\x02\x02\x02" +
		"\u0B9F\u0B9D\x03\x02\x02\x02\u0B9F\u0BA0\x03\x02\x02\x02\u0BA0\xAB\x03" +
		"\x02\x02\x02\u0BA1\u0B9F\x03\x02\x02\x02\u0BA2\u0BCA\x07m\x02\x02\u0BA3" +
		"\u0BCA\x07r\x02\x02\u0BA4\u0BA6\x07\xB9\x02\x02\u0BA5\u0BA7\x05\u036C" +
		"\u01B7\x02\u0BA6\u0BA5\x03\x02\x02\x02\u0BA6\u0BA7\x03\x02\x02\x02\u0BA7" +
		"\u0BA8\x03\x02\x02\x02\u0BA8\u0BCA\x05\u05B4\u02DB\x02\u0BA9\u0BAB\x07" +
		"P\x02\x02\u0BAA\u0BAC\x05\u036C\u01B7\x02\u0BAB\u0BAA\x03\x02\x02\x02" +
		"\u0BAB\u0BAC\x03\x02\x02\x02\u0BAC\u0BAD\x03\x02\x02\x02\u0BAD\u0BCA\x05" +
		"\u05B4\u02DB\x02\u0BAE\u0BCA\x07\xAD\x02\x02\u0BAF\u0BCA\x07\xDA\x02\x02" +
		"\u0BB0\u0BB2\x07\u012C\x02\x02\u0BB1\u0BB3\x05\u036C\u01B7\x02\u0BB2\u0BB1" +
		"\x03\x02\x02\x02\u0BB2\u0BB3\x03\x02\x02\x02\u0BB3\u0BB4\x03\x02\x02\x02" +
		"\u0BB4\u0BCA\x05\u05B4\u02DB\x02\u0BB5\u0BB7\x07\xC7\x02\x02\u0BB6\u0BB8" +
		"\x05\u036C\u01B7\x02\u0BB7\u0BB6\x03\x02\x02\x02\u0BB7\u0BB8\x03\x02\x02" +
		"\x02\u0BB8\u0BB9\x03\x02\x02\x02\u0BB9\u0BCA\x05\u05B4\u02DB\x02\u0BBA" +
		"\u0BBB\x07\xD3\x02\x02\u0BBB\u0BBC\x07\u012C\x02\x02\u0BBC\u0BCA\x05\xF6" +
		"|\x02\u0BBD\u0BBE\x07\xD3\x02\x02\u0BBE\u0BBF\x07\u012C\x02\x02\u0BBF" +
		"\u0BCA\x07\v\x02\x02\u0BC0\u0BC1\x07\xD3\x02\x02\u0BC1\u0BC2\x07O\x02" +
		"\x02\u0BC2\u0BC3\x07P\x02\x02\u0BC3\u0BCA\x05\xF6|\x02\u0BC4\u0BC5\x07" +
		"\xD3\x02\x02\u0BC5\u0BC6\x07P\x02\x02\u0BC6\u0BCA\x05\xF6|\x02\u0BC7\u0BC8" +
		"\x07\xC4\x02\x02\u0BC8\u0BCA\x05\u05B4\u02DB\x02\u0BC9\u0BA2\x03\x02\x02" +
		"\x02\u0BC9\u0BA3\x03\x02\x02\x02\u0BC9\u0BA4\x03\x02\x02\x02\u0BC9\u0BA9" +
		"\x03\x02\x02\x02\u0BC9\u0BAE\x03\x02\x02\x02\u0BC9\u0BAF\x03\x02\x02\x02" +
		"\u0BC9\u0BB0\x03\x02\x02\x02\u0BC9\u0BB5\x03\x02\x02\x02\u0BC9\u0BBA\x03" +
		"\x02\x02\x02\u0BC9\u0BBD\x03\x02\x02\x02\u0BC9\u0BC0\x03\x02\x02\x02\u0BC9" +
		"\u0BC4\x03\x02\x02\x02\u0BC9\u0BC7\x03\x02\x02\x02\u0BCA\xAD\x03\x02\x02" +
		"\x02\u0BCB\u0BCC\x07m\x02\x02\u0BCC\xAF\x03\x02\x02\x02\u0BCD\u0BCF\x05" +
		"\xB2Z\x02\u0BCE\u0BCD\x03\x02\x02\x02\u0BCE\u0BCF\x03\x02\x02\x02\u0BCF" +
		"\u0BD0\x03\x02\x02\x02\u0BD0\u0BD1\x07\xBA\x02\x02\u0BD1\u0BD2\x05\u05B4" +
		"\u02DB\x02\u0BD2\xB1\x03\x02\x02\x02\u0BD3\u0BD4\x07f\x02\x02\u0BD4\xB3" +
		"\x03\x02\x02\x02\u0BD5\u0BDA\x05\xB6\\\x02\u0BD6\u0BD7\x07\b\x02\x02\u0BD7" +
		"\u0BD9\x05\xB6\\\x02\u0BD8\u0BD6\x03\x02\x02\x02\u0BD9\u0BDC\x03\x02\x02" +
		"\x02\u0BDA\u0BD8\x03\x02\x02\x02\u0BDA\u0BDB\x03\x02\x02\x02\u0BDB\xB5" +
		"\x03\x02\x02\x02\u0BDC\u0BDA\x03\x02\x02\x02\u0BDD\u0BDF\x05\u05D4\u02EB" +
		"\x02\u0BDE\u0BE0\x05\xB8]\x02\u0BDF\u0BDE\x03\x02\x02\x02\u0BDF\u0BE0" +
		"\x03\x02\x02\x02\u0BE0\xB7\x03\x02\x02\x02\u0BE1\u0BE9\x05J&\x02\u0BE2" +
		"\u0BE9\x05\u0142\xA2\x02\u0BE3\u0BE9\x07\v\x02\x02\u0BE4\u0BE5\x07\x04" +
		"\x02\x02\u0BE5\u0BE6\x05\xBA^\x02\u0BE6\u0BE7\x07\x05\x02\x02\u0BE7\u0BE9" +
		"\x03\x02\x02\x02\u0BE8\u0BE1\x03\x02\x02\x02\u0BE8\u0BE2\x03\x02\x02\x02" +
		"\u0BE8\u0BE3\x03\x02\x02\x02\u0BE8\u0BE4\x03\x02\x02\x02\u0BE9\xB9\x03" +
		"\x02\x02\x02\u0BEA\u0BEF\x05\xBC_\x02\u0BEB\u0BEC\x07\b\x02\x02\u0BEC" +
		"\u0BEE\x05\xBC_\x02\u0BED\u0BEB\x03\x02\x02\x02\u0BEE\u0BF1\x03\x02\x02" +
		"\x02\u0BEF\u0BED\x03\x02\x02\x02\u0BEF\u0BF0\x03\x02\x02\x02\u0BF0\xBB" +
		"\x03\x02\x02\x02\u0BF1\u0BEF\x03\x02\x02\x02\u0BF2\u0BF3\x05H%\x02\u0BF3" +
		"\xBD\x03\x02\x02\x02\u0BF4\u0BF6\x070\x02\x02\u0BF5\u0BF7\x05\xC0a\x02" +
		"\u0BF6\u0BF5\x03\x02\x02\x02\u0BF6\u0BF7\x03\x02\x02\x02\u0BF7\u0BF8\x03" +
		"\x02\x02\x02\u0BF8\u0BFA\x07^\x02\x02\u0BF9\u0BFB\x05\u0204\u0103\x02" +
		"\u0BFA\u0BF9\x03\x02\x02\x02\u0BFA\u0BFB\x03\x02\x02\x02\u0BFB\u0BFC\x03" +
		"\x02\x02\x02\u0BFC\u0C3E\x05\u057E\u02C0\x02\u0BFD\u0BFF\x07\x04\x02\x02" +
		"\u0BFE\u0C00\x05\xC2b\x02\u0BFF\u0BFE\x03\x02\x02\x02\u0BFF\u0C00\x03" +
		"\x02\x02\x02\u0C00\u0C01\x03\x02\x02\x02\u0C01\u0C03\x07\x05\x02\x02\u0C02" +
		"\u0C04\x05\u010A\x86\x02\u0C03\u0C02\x03\x02\x02\x02\u0C03\u0C04\x03\x02" +
		"\x02\x02\u0C04\u0C06\x03\x02\x02\x02\u0C05\u0C07\x05\u010C\x87\x02\u0C06" +
		"\u0C05\x03\x02\x02\x02\u0C06\u0C07\x03\x02\x02\x02\u0C07\u0C09\x03\x02" +
		"\x02\x02\u0C08\u0C0A\x05\u0114\x8B\x02\u0C09\u0C08\x03\x02\x02\x02\u0C09" +
		"\u0C0A\x03\x02\x02\x02\u0C0A\u0C0C\x03\x02\x02\x02\u0C0B\u0C0D\x05\u0116" +
		"\x8C\x02\u0C0C\u0C0B\x03\x02\x02\x02\u0C0C\u0C0D\x03\x02\x02\x02\u0C0D" +
		"\u0C0F\x03\x02\x02\x02\u0C0E\u0C10\x05\u0118\x8D\x02\u0C0F\u0C0E\x03\x02" +
		"\x02\x02\u0C0F\u0C10\x03\x02\x02\x02\u0C10\u0C12\x03\x02\x02\x02\u0C11" +
		"\u0C13\x05\u011A\x8E\x02\u0C12\u0C11\x03\x02\x02\x02\u0C12\u0C13\x03\x02" +
		"\x02\x02\u0C13\u0C3F\x03\x02\x02\x02\u0C14\u0C15\x07\u0115\x02\x02\u0C15" +
		"\u0C17\x05\u0230\u0119\x02\u0C16\u0C18\x05\xC6d\x02\u0C17\u0C16\x03\x02" +
		"\x02\x02\u0C17\u0C18\x03\x02\x02\x02\u0C18\u0C1A\x03\x02\x02\x02\u0C19" +
		"\u0C1B\x05\u010C\x87\x02\u0C1A\u0C19\x03\x02\x02\x02\u0C1A\u0C1B\x03\x02" +
		"\x02\x02\u0C1B\u0C1D\x03\x02\x02\x02\u0C1C\u0C1E\x05\u0114\x8B\x02\u0C1D" +
		"\u0C1C\x03\x02\x02\x02\u0C1D\u0C1E\x03\x02\x02\x02\u0C1E\u0C20\x03\x02" +
		"\x02\x02\u0C1F\u0C21\x05\u0116\x8C\x02\u0C20\u0C1F\x03\x02\x02\x02\u0C20" +
		"\u0C21\x03\x02\x02\x02\u0C21\u0C23\x03\x02\x02\x02\u0C22\u0C24\x05\u0118" +
		"\x8D\x02\u0C23\u0C22\x03\x02\x02\x02\u0C23\u0C24\x03\x02\x02\x02\u0C24" +
		"\u0C26\x03\x02\x02\x02\u0C25\u0C27\x05\u011A\x8E\x02\u0C26\u0C25\x03\x02" +
		"\x02\x02\u0C26\u0C27\x03\x02\x02\x02\u0C27\u0C3F\x03\x02\x02\x02\u0C28" +
		"\u0C29\x07\u011F\x02\x02\u0C29\u0C2A\x07\u0115\x02\x02\u0C2A\u0C2C\x05" +
		"\u0586\u02C4\x02\u0C2B\u0C2D\x05\xC6d\x02\u0C2C\u0C2B\x03\x02\x02\x02" +
		"\u0C2C\u0C2D\x03\x02\x02\x02\u0C2D\u0C2E\x03\x02\x02\x02\u0C2E\u0C30\x05" +
		"\x92J\x02\u0C2F\u0C31\x05\u010C\x87\x02\u0C30\u0C2F\x03\x02\x02\x02\u0C30" +
		"\u0C31\x03\x02\x02\x02\u0C31\u0C33\x03\x02\x02\x02\u0C32\u0C34\x05\u0114" +
		"\x8B\x02\u0C33\u0C32\x03\x02\x02\x02\u0C33\u0C34\x03\x02\x02\x02\u0C34" +
		"\u0C36\x03\x02\x02\x02\u0C35\u0C37\x05\u0116\x8C\x02\u0C36\u0C35\x03\x02" +
		"\x02\x02\u0C36\u0C37\x03\x02\x02\x02\u0C37\u0C39\x03\x02\x02\x02\u0C38" +
		"\u0C3A\x05\u0118\x8D\x02\u0C39\u0C38\x03\x02\x02\x02\u0C39\u0C3A\x03\x02" +
		"\x02\x02\u0C3A\u0C3C\x03\x02\x02\x02\u0C3B\u0C3D\x05\u011A\x8E\x02\u0C3C" +
		"\u0C3B\x03\x02\x02\x02\u0C3C\u0C3D\x03\x02\x02\x02\u0C3D\u0C3F\x03\x02" +
		"\x02\x02\u0C3E\u0BFD\x03\x02\x02\x02\u0C3E\u0C14\x03\x02\x02\x02\u0C3E" +
		"\u0C28\x03\x02\x02\x02\u0C3F\xBF\x03\x02\x02\x02\u0C40\u0C48\x07\u0164" +
		"\x02\x02\u0C41\u0C48\x07\u0162\x02\x02\u0C42\u0C43\x07\u0100\x02\x02\u0C43" +
		"\u0C48\t\x17\x02\x02\u0C44\u0C45\x07\xD7\x02\x02\u0C45\u0C48\t\x17\x02" +
		"\x02\u0C46\u0C48\x07\u0171\x02\x02\u0C47\u0C40\x03\x02\x02\x02\u0C47\u0C41" +
		"\x03\x02\x02\x02\u0C47\u0C42\x03\x02\x02\x02\u0C47\u0C44\x03\x02\x02\x02" +
		"\u0C47\u0C46\x03\x02\x02\x02\u0C48\xC1\x03\x02\x02\x02\u0C49\u0C4A\x05" +
		"\xC8e\x02\u0C4A\xC3\x03\x02\x02\x02\u0C4B\u0C4C\x05\xC8e\x02\u0C4C\xC5" +
		"\x03\x02\x02\x02\u0C4D\u0C4E\x07\x04\x02\x02\u0C4E\u0C4F\x05\xCAf\x02" +
		"\u0C4F\u0C50\x07\x05\x02\x02\u0C50\xC7\x03\x02\x02\x02\u0C51\u0C56\x05" +
		"\xCCg\x02\u0C52\u0C53\x07\b\x02\x02\u0C53\u0C55\x05\xCCg\x02\u0C54\u0C52" +
		"\x03\x02\x02\x02\u0C55\u0C58\x03\x02\x02\x02\u0C56\u0C54\x03\x02\x02\x02" +
		"\u0C56\u0C57\x03\x02\x02\x02\u0C57\xC9\x03\x02\x02\x02\u0C58\u0C56\x03" +
		"\x02\x02\x02\u0C59\u0C5E\x05\xCEh\x02\u0C5A\u0C5B\x07\b\x02\x02\u0C5B" +
		"\u0C5D\x05\xCEh\x02\u0C5C\u0C5A\x03\x02\x02\x02\u0C5D\u0C60\x03\x02\x02" +
		"\x02\u0C5E\u0C5C\x03\x02\x02\x02\u0C5E\u0C5F\x03\x02\x02\x02\u0C5F\xCB" +
		"\x03\x02\x02\x02\u0C60\u0C5E\x03\x02\x02\x02\u0C61\u0C65\x05\xD2j\x02" +
		"\u0C62\u0C65\x05\xE8u\x02\u0C63\u0C65\x05\xEEx\x02\u0C64\u0C61\x03\x02" +
		"\x02\x02\u0C64\u0C62\x03\x02\x02\x02\u0C64\u0C63\x03\x02\x02\x02\u0C65" +
		"\xCD\x03\x02\x02\x02\u0C66\u0C69\x05\xD8m\x02\u0C67\u0C69\x05\xEEx\x02" +
		"\u0C68\u0C66\x03\x02\x02\x02\u0C68\u0C67\x03\x02\x02\x02\u0C69\xCF\x03" +
		"\x02\x02\x02\u0C6A\u0C6B\x05\u059A\u02CE\x02\u0C6B\u0C6D\x05\u0492\u024A" +
		"\x02\u0C6C\u0C6E\x05\u0170\xB9\x02\u0C6D\u0C6C\x03\x02\x02\x02\u0C6D\u0C6E" +
		"\x03\x02\x02\x02\u0C6E\u0C70\x03\x02\x02\x02\u0C6F\u0C71\x05\xD6l\x02" +
		"\u0C70\u0C6F\x03\x02\x02\x02\u0C70\u0C71\x03\x02\x02\x02\u0C71\u0C73\x03" +
		"\x02\x02\x02\u0C72\u0C74\x05\xD4k\x02\u0C73\u0C72\x03\x02\x02\x02\u0C73" +
		"\u0C74\x03\x02\x02\x02\u0C74\u0C77\x03\x02\x02\x02\u0C75\u0C76\x07-\x02" +
		"\x02\u0C76\u0C78\x05\u0230\u0119\x02\u0C77\u0C75\x03\x02\x02\x02\u0C77" +
		"\u0C78\x03\x02\x02\x02\u0C78\u0C7B\x03\x02\x02\x02\u0C79\u0C7A\x07k\x02" +
		"\x02\u0C7A\u0C7C\x07\u011A\x02\x02\u0C7B\u0C79\x03\x02\x02\x02\u0C7B\u0C7C" +
		"\x03\x02\x02\x02\u0C7C\u0C7D\x03\x02\x02\x02\u0C7D\u0C7E\x05\xDAn\x02" +
		"\u0C7E\xD1\x03\x02\x02\x02\u0C7F\u0C80\x05\u059A\u02CE\x02\u0C80\u0C82" +
		"\x05\u0492\u024A\x02\u0C81\u0C83\x05\u0170\xB9\x02\u0C82\u0C81\x03\x02" +
		"\x02\x02\u0C82\u0C83\x03\x02\x02\x02\u0C83\u0C85\x03\x02\x02\x02\u0C84" +
		"\u0C86\x05\xD6l\x02\u0C85\u0C84\x03\x02\x02\x02\u0C85\u0C86\x03\x02\x02" +
		"\x02\u0C86\u0C88\x03\x02\x02\x02\u0C87\u0C89\x05\xD4k\x02\u0C88\u0C87" +
		"\x03\x02\x02\x02\u0C88\u0C89\x03\x02\x02\x02\u0C89\u0C8C\x03\x02\x02\x02" +
		"\u0C8A\u0C8B\x07-\x02\x02\u0C8B\u0C8D\x05\u0230\u0119\x02\u0C8C\u0C8A" +
		"\x03\x02\x02\x02\u0C8C\u0C8D\x03\x02\x02\x02\u0C8D\u0C90\x03\x02\x02\x02" +
		"\u0C8E\u0C8F\x07k\x02\x02\u0C8F\u0C91\x07\u011A\x02\x02\u0C90\u0C8E\x03" +
		"\x02\x02\x02\u0C90\u0C91\x03\x02\x02\x02\u0C91\u0C92\x03\x02\x02\x02\u0C92" +
		"\u0C93\x05\xDAn\x02\u0C93\xD3\x03\x02\x02\x02\u0C94\u0C95\x07\u0221\x02" +
		"\x02\u0C95\u0C96\x05\u05C4\u02E3\x02\u0C96\xD5\x03\x02\x02\x02\u0C97\u0C9E" +
		"\x07\u015B\x02\x02\u0C98\u0C9F\x07\u0222\x02\x02\u0C99\u0C9F\x07\xCF\x02" +
		"\x02\u0C9A\u0C9F\x07\u0223\x02\x02\u0C9B\u0C9F\x07\u0224\x02\x02\u0C9C" +
		"\u0C9F\x077\x02\x02\u0C9D\u0C9F\x05\u05C4\u02E3\x02\u0C9E\u0C98\x03\x02" +
		"\x02\x02\u0C9E\u0C99\x03\x02\x02\x02\u0C9E\u0C9A\x03\x02\x02\x02\u0C9E" +
		"\u0C9B\x03\x02\x02\x02\u0C9E\u0C9C\x03\x02\x02\x02\u0C9E\u0C9D\x03\x02" +
		"\x02\x02\u0C9F\xD7\x03\x02\x02\x02\u0CA0\u0CA3\x05\u059A\u02CE\x02\u0CA1" +
		"\u0CA2\x07k\x02\x02\u0CA2\u0CA4\x07\u011A\x02\x02\u0CA3\u0CA1\x03\x02" +
		"\x02\x02\u0CA3\u0CA4\x03\x02\x02\x02\u0CA4\u0CA5\x03\x02\x02\x02\u0CA5" +
		"\u0CA6\x05\xDAn\x02\u0CA6\xD9\x03\x02\x02\x02\u0CA7\u0CA9\x05\xDCo\x02" +
		"\u0CA8\u0CA7\x03\x02\x02\x02\u0CA9\u0CAC\x03\x02\x02\x02\u0CAA\u0CA8\x03" +
		"\x02\x02\x02\u0CAA\u0CAB\x03\x02\x02\x02\u0CAB\xDB\x03\x02\x02\x02\u0CAC" +
		"\u0CAA\x03\x02\x02\x02\u0CAD\u0CAE\x07/\x02\x02\u0CAE\u0CB0\x05\u059E" +
		"\u02D0\x02\u0CAF\u0CAD\x03\x02\x02\x02\u0CAF\u0CB0\x03\x02\x02\x02\u0CB0" +
		"\u0CB1\x03\x02\x02\x02\u0CB1\u0CB3\x05\xDEp\x02\u0CB2\u0CB4\x05\xE4s\x02" +
		"\u0CB3\u0CB2\x03\x02\x02\x02\u0CB3\u0CB4\x03\x02\x02\x02\u0CB4\u0CB6\x03" +
		"\x02\x02\x02\u0CB5\u0CB7\x05\xE6t\x02\u0CB6\u0CB5\x03\x02\x02\x02\u0CB6" +
		"\u0CB7\x03\x02\x02\x02\u0CB7\u0CC0\x03\x02\x02\x02\u0CB8\u0CBA\x05\xDE" +
		"p\x02\u0CB9\u0CBB\x05\xE4s\x02\u0CBA\u0CB9\x03\x02\x02\x02\u0CBA\u0CBB" +
		"\x03\x02\x02\x02\u0CBB\u0CBD\x03\x02\x02\x02\u0CBC\u0CBE\x05\xE6t\x02" +
		"\u0CBD\u0CBC\x03\x02\x02\x02\u0CBD\u0CBE\x03\x02\x02\x02\u0CBE\u0CC0\x03" +
		"\x02\x02\x02\u0CBF\u0CAF\x03\x02\x02\x02\u0CBF\u0CB8\x03\x02\x02\x02\u0CC0" +
		"\xDD\x03\x02\x02\x02\u0CC1\u0CC2\x07O\x02\x02\u0CC2\u0CFC\x07P\x02\x02" +
		"\u0CC3\u0CFC\x07P\x02\x02\u0CC4\u0CC6\x07d\x02\x02\u0CC5\u0CC7\x05\u02C8" +
		"\u0165\x02\u0CC6\u0CC5\x03\x02\x02\x02\u0CC6\u0CC7\x03\x02\x02\x02\u0CC7" +
		"\u0CC9\x03\x02\x02\x02\u0CC8\u0CCA\x05\u011E\x90\x02\u0CC9\u0CC8\x03\x02" +
		"\x02\x02\u0CC9\u0CCA\x03\x02\x02\x02\u0CCA\u0CFC\x03\x02\x02\x02\u0CCB" +
		"\u0CCD\x07d\x02\x02\u0CCC\u0CCE\x05\xE0q\x02\u0CCD\u0CCC\x03\x02\x02\x02" +
		"\u0CCD\u0CCE\x03\x02\x02\x02\u0CCE\u0CCF\x03\x02\x02\x02\u0CCF\u0CFC\x05" +
		"\u011C\x8F\x02\u0CD0\u0CD1\x07W\x02\x02\u0CD1\u0CD3\x07\xF7\x02\x02\u0CD2" +
		"\u0CD4\x05\u02C8\u0165\x02\u0CD3\u0CD2\x03\x02\x02\x02\u0CD3\u0CD4\x03" +
		"\x02\x02\x02\u0CD4\u0CD6\x03\x02\x02\x02\u0CD5\u0CD7\x05\u011E\x90\x02" +
		"\u0CD6\u0CD5\x03\x02\x02\x02\u0CD6\u0CD7\x03\x02\x02\x02\u0CD7\u0CFC\x03" +
		"\x02\x02\x02\u0CD8\u0CD9\x07,\x02\x02\u0CD9\u0CDA\x07\x04\x02\x02\u0CDA" +
		"\u0CDB\x05\u04BE\u0260\x02\u0CDB\u0CDD\x07\x05\x02\x02\u0CDC\u0CDE\x05" +
		"\xF2z\x02\u0CDD\u0CDC\x03\x02\x02\x02\u0CDD\u0CDE\x03\x02\x02\x02\u0CDE" +
		"\u0CFC\x03\x02\x02\x02\u0CDF\u0CE0\x077\x02\x02\u0CE0\u0CFC\x05\u04E6" +
		"\u0274\x02\u0CE1\u0CE2\x07\u01B8\x02\x02\u0CE2\u0CE3\x05\xE2r\x02\u0CE3" +
		"\u0CED\x07&\x02\x02\u0CE4\u0CE6\x07\xDD\x02\x02\u0CE5\u0CE7\x05\u013A" +
		"\x9E\x02\u0CE6\u0CE5\x03\x02\x02\x02";
	private static readonly _serializedATNSegment9: string =
		"\u0CE6\u0CE7\x03\x02\x02\x02\u0CE7\u0CEE\x03\x02\x02\x02\u0CE8\u0CE9\x07" +
		"\x04\x02\x02\u0CE9\u0CEA\x05\u04BE\u0260\x02\u0CEA\u0CEB\x07\x05\x02\x02" +
		"\u0CEB\u0CEC\x07\u01BA\x02\x02\u0CEC\u0CEE\x03\x02\x02\x02\u0CED\u0CE4" +
		"\x03\x02\x02\x02\u0CED\u0CE8\x03\x02\x02\x02\u0CEE\u0CFC\x03\x02\x02\x02" +
		"\u0CEF\u0CF0\x07X\x02\x02\u0CF0\u0CF2\x05\u0586\u02C4\x02\u0CF1\u0CF3" +
		"\x05\xF4{\x02\u0CF2\u0CF1\x03\x02\x02\x02\u0CF2\u0CF3\x03\x02\x02\x02" +
		"\u0CF3\u0CF5\x03\x02\x02\x02\u0CF4\u0CF6\x05\xFA~\x02\u0CF5\u0CF4\x03" +
		"\x02\x02\x02\u0CF5\u0CF6\x03\x02\x02\x02\u0CF6\u0CF8\x03\x02\x02\x02\u0CF7" +
		"\u0CF9\x05\u0102\x82\x02\u0CF8\u0CF7\x03\x02\x02\x02\u0CF8\u0CF9\x03\x02" +
		"\x02\x02\u0CF9\u0CFC\x03\x02\x02\x02\u0CFA\u0CFC\x05\u0288\u0145\x02\u0CFB" +
		"\u0CC1\x03\x02\x02\x02\u0CFB\u0CC3\x03\x02\x02\x02\u0CFB\u0CC4\x03\x02" +
		"\x02\x02\u0CFB\u0CCB\x03\x02\x02\x02\u0CFB\u0CD0\x03\x02\x02\x02\u0CFB" +
		"\u0CD8\x03\x02\x02\x02\u0CFB\u0CDF\x03\x02\x02\x02\u0CFB\u0CE1\x03\x02" +
		"\x02\x02\u0CFB\u0CEF\x03\x02\x02\x02\u0CFB\u0CFA\x03\x02\x02\x02\u0CFC" +
		"\xDF\x03\x02\x02\x02\u0CFD\u0CFF\x07\u0113\x02\x02\u0CFE\u0D00\x07O\x02" +
		"\x02\u0CFF\u0CFE\x03\x02\x02\x02\u0CFF\u0D00\x03\x02\x02\x02\u0D00\u0D01" +
		"\x03\x02\x02\x02\u0D01\u0D02\x07:\x02\x02\u0D02\xE1\x03\x02\x02\x02\u0D03" +
		"\u0D07\x07\x8D\x02\x02\u0D04\u0D05\x07\x95\x02\x02\u0D05\u0D07\x077\x02" +
		"\x02\u0D06\u0D03\x03\x02\x02\x02\u0D06\u0D04\x03\x02\x02\x02\u0D07\xE3" +
		"\x03\x02\x02\x02\u0D08\u0D0C\x078\x02\x02\u0D09\u0D0A\x07O\x02\x02\u0D0A" +
		"\u0D0C\x078\x02\x02\u0D0B\u0D08\x03\x02\x02\x02\u0D0B\u0D09\x03\x02\x02" +
		"\x02\u0D0C\xE5\x03\x02\x02\x02\u0D0D\u0D0E\x07G\x02\x02\u0D0E\u0D0F\t" +
		"\x12\x02\x02\u0D0F\xE7\x03\x02\x02\x02\u0D10\u0D11\x07z\x02\x02\u0D11" +
		"\u0D12\x05\u0586\u02C4\x02\u0D12\u0D13\x05\xEAv\x02\u0D13\xE9\x03\x02" +
		"\x02\x02\u0D14\u0D15\t\x18\x02\x02\u0D15\u0D17\x05\xECw\x02\u0D16\u0D14" +
		"\x03\x02\x02\x02\u0D17\u0D1A\x03\x02\x02\x02\u0D18\u0D16\x03\x02\x02\x02" +
		"\u0D18\u0D19\x03\x02\x02\x02\u0D19\xEB\x03\x02\x02\x02\u0D1A\u0D18\x03" +
		"\x02\x02\x02\u0D1B\u0D1C\t\x19\x02\x02\u0D1C\xED\x03\x02\x02\x02\u0D1D" +
		"\u0D1E\x07/\x02\x02\u0D1E\u0D1F\x05\u059E\u02D0\x02\u0D1F\u0D20\x05\xF0" +
		"y\x02\u0D20\u0D23\x03\x02\x02\x02\u0D21\u0D23\x05\xF0y\x02\u0D22\u0D1D" +
		"\x03\x02\x02\x02\u0D22\u0D21\x03\x02\x02\x02\u0D23\xEF\x03\x02\x02\x02" +
		"\u0D24\u0D25\x07,\x02\x02\u0D25\u0D26\x07\x04\x02\x02\u0D26\u0D27\x05" +
		"\u04BE\u0260\x02\u0D27\u0D28\x07\x05\x02\x02\u0D28\u0D29\x05\u01DC\xEF" +
		"\x02\u0D29\u0D7B\x03\x02\x02\x02\u0D2A\u0D3C\x07d\x02\x02\u0D2B\u0D2C" +
		"\x07\x04\x02\x02\u0D2C\u0D2D\x05\xF6|\x02\u0D2D\u0D2F\x07\x05\x02\x02" +
		"\u0D2E\u0D30\x05\xF8}\x02\u0D2F\u0D2E\x03\x02\x02\x02\u0D2F\u0D30\x03" +
		"\x02\x02\x02\u0D30\u0D32\x03\x02\x02\x02\u0D31\u0D33\x05\u02C8\u0165\x02" +
		"\u0D32\u0D31\x03\x02\x02\x02\u0D32\u0D33\x03\x02\x02\x02\u0D33\u0D35\x03" +
		"\x02\x02\x02\u0D34\u0D36\x05\u011E\x90\x02\u0D35\u0D34\x03\x02\x02\x02" +
		"\u0D35\u0D36\x03\x02\x02\x02\u0D36\u0D37\x03\x02\x02\x02\u0D37\u0D38\x05" +
		"\u01DC\xEF\x02\u0D38\u0D3D\x03\x02\x02\x02\u0D39\u0D3A\x05\u0120\x91\x02" +
		"\u0D3A\u0D3B\x05\u01DC\xEF\x02\u0D3B\u0D3D\x03\x02\x02\x02\u0D3C\u0D2B" +
		"\x03\x02\x02\x02\u0D3C\u0D39\x03\x02\x02\x02\u0D3D\u0D7B\x03\x02\x02\x02" +
		"\u0D3E\u0D3F\x07W\x02\x02\u0D3F\u0D51\x07\xF7\x02\x02\u0D40\u0D41\x07" +
		"\x04\x02\x02\u0D41\u0D42\x05\xF6|\x02\u0D42\u0D44\x07\x05\x02\x02\u0D43" +
		"\u0D45\x05\xF8}\x02\u0D44\u0D43\x03\x02\x02\x02\u0D44\u0D45\x03\x02\x02" +
		"\x02\u0D45\u0D47\x03\x02\x02\x02\u0D46\u0D48\x05\u02C8\u0165\x02\u0D47" +
		"\u0D46\x03\x02\x02\x02\u0D47\u0D48\x03\x02\x02\x02\u0D48\u0D4A\x03\x02" +
		"\x02\x02\u0D49\u0D4B\x05\u011E\x90\x02\u0D4A\u0D49\x03\x02\x02\x02\u0D4A" +
		"\u0D4B\x03\x02\x02\x02\u0D4B\u0D4C\x03\x02\x02\x02\u0D4C\u0D4D\x05\u01DC" +
		"\xEF\x02\u0D4D\u0D52\x03\x02\x02\x02\u0D4E\u0D4F\x05\u0120\x91\x02\u0D4F" +
		"\u0D50\x05\u01DC\xEF\x02\u0D50\u0D52\x03\x02\x02\x02\u0D51\u0D40\x03\x02" +
		"\x02\x02\u0D51\u0D4E\x03\x02\x02\x02\u0D52\u0D7B\x03\x02\x02\x02\u0D53" +
		"\u0D55\x07\xC9\x02\x02\u0D54\u0D56\x05\u027C\u013F\x02\u0D55\u0D54\x03" +
		"\x02\x02\x02\u0D55\u0D56\x03\x02\x02\x02\u0D56\u0D57\x03\x02\x02\x02\u0D57" +
		"\u0D58\x07\x04\x02\x02\u0D58\u0D59\x05\xFC\x7F\x02\u0D59\u0D5B\x07\x05" +
		"\x02\x02\u0D5A\u0D5C\x05\xF8}\x02\u0D5B\u0D5A\x03\x02\x02\x02\u0D5B\u0D5C" +
		"\x03\x02\x02\x02\u0D5C\u0D5E\x03\x02\x02\x02\u0D5D\u0D5F\x05\u02C8\u0165" +
		"\x02\u0D5E\u0D5D\x03\x02\x02\x02\u0D5E\u0D5F\x03\x02\x02\x02\u0D5F\u0D61" +
		"\x03\x02\x02\x02\u0D60\u0D62\x05\u011E\x90\x02\u0D61\u0D60\x03\x02\x02" +
		"\x02\u0D61\u0D62\x03\x02\x02\x02\u0D62\u0D64\x03\x02\x02\x02\u0D63\u0D65" +
		"\x05\u0100\x81\x02\u0D64\u0D63\x03\x02\x02\x02\u0D64\u0D65\x03\x02\x02" +
		"\x02\u0D65\u0D66\x03\x02\x02\x02\u0D66\u0D67\x05\u01DC\xEF\x02\u0D67\u0D7B" +
		"\x03\x02\x02\x02\u0D68\u0D69\x07A\x02\x02\u0D69\u0D6A\x07\xF7\x02\x02" +
		"\u0D6A\u0D6B\x07\x04\x02\x02\u0D6B\u0D6C\x05\xF6|\x02\u0D6C\u0D6D\x07" +
		"\x05\x02\x02\u0D6D\u0D6E\x07X\x02\x02\u0D6E\u0D70\x05\u0586\u02C4\x02" +
		"\u0D6F\u0D71\x05\xF4{\x02\u0D70\u0D6F\x03\x02\x02\x02\u0D70\u0D71\x03" +
		"\x02\x02\x02\u0D71\u0D73\x03\x02\x02\x02\u0D72\u0D74\x05\xFA~\x02\u0D73" +
		"\u0D72\x03\x02\x02\x02\u0D73\u0D74\x03\x02\x02\x02\u0D74\u0D76\x03\x02" +
		"\x02\x02\u0D75\u0D77\x05\u0102\x82\x02\u0D76\u0D75\x03\x02\x02\x02\u0D76" +
		"\u0D77\x03\x02\x02\x02\u0D77\u0D78\x03\x02\x02\x02\u0D78\u0D79\x05\u01DC" +
		"\xEF\x02\u0D79\u0D7B\x03\x02\x02\x02\u0D7A\u0D24\x03\x02\x02\x02\u0D7A" +
		"\u0D2A\x03\x02\x02\x02\u0D7A\u0D3E\x03\x02\x02\x02\u0D7A\u0D53\x03\x02" +
		"\x02\x02\u0D7A\u0D68\x03\x02\x02\x02\u0D7B\xF1\x03\x02\x02\x02\u0D7C\u0D7D" +
		"\x07\u010F\x02\x02\u0D7D\u0D7E\x07\xE6\x02\x02\u0D7E\xF3\x03\x02\x02\x02" +
		"\u0D7F\u0D80\x07\x04\x02\x02\u0D80\u0D81\x05\xF6|\x02\u0D81\u0D82\x07" +
		"\x05\x02\x02\u0D82\xF5\x03\x02\x02\x02\u0D83\u0D88\x05\u059A\u02CE\x02" +
		"\u0D84\u0D85\x07\b\x02\x02\u0D85\u0D87\x05\u059A\u02CE\x02\u0D86\u0D84" +
		"\x03\x02\x02\x02\u0D87\u0D8A\x03\x02\x02\x02\u0D88\u0D86\x03\x02\x02\x02" +
		"\u0D88\u0D89\x03\x02\x02\x02\u0D89\xF7\x03\x02\x02\x02\u0D8A\u0D88\x03" +
		"\x02\x02\x02\u0D8B\u0D8C\x07\u01BB\x02\x02\u0D8C\u0D8D\x07\x04\x02\x02" +
		"\u0D8D\u0D8E\x05\xF6|\x02\u0D8E\u0D8F\x07\x05\x02\x02\u0D8F\xF9\x03\x02" +
		"\x02\x02\u0D90\u0D91\x07\u0104\x02\x02\u0D91\u0D92\t\x1A\x02\x02\u0D92" +
		"\xFB\x03\x02\x02\x02\u0D93\u0D98\x05\xFE\x80\x02\u0D94\u0D95\x07\b\x02" +
		"\x02\u0D95\u0D97\x05\xFE\x80\x02\u0D96\u0D94\x03\x02\x02\x02\u0D97\u0D9A" +
		"\x03\x02\x02\x02\u0D98\u0D96\x03\x02\x02\x02\u0D98\u0D99\x03\x02\x02\x02" +
		"\u0D99\xFD\x03\x02\x02\x02\u0D9A\u0D98\x03\x02\x02\x02\u0D9B\u0D9C\x05" +
		"\u0282\u0142\x02\u0D9C\u0DA3\x07k\x02\x02\u0D9D\u0DA4\x05\u02DE\u0170" +
		"\x02\u0D9E\u0D9F\x07\u0118\x02\x02\u0D9F\u0DA0\x07\x04\x02\x02\u0DA0\u0DA1" +
		"\x05\u02DE\u0170\x02\u0DA1\u0DA2\x07\x05\x02\x02\u0DA2\u0DA4\x03\x02\x02" +
		"\x02\u0DA3\u0D9D\x03\x02\x02\x02\u0DA3\u0D9E\x03\x02\x02\x02\u0DA4\xFF" +
		"\x03\x02\x02\x02\u0DA5\u0DA6\x07i\x02\x02\u0DA6\u0DA7\x07\x04\x02\x02" +
		"\u0DA7\u0DA8\x05\u04BE\u0260\x02\u0DA8\u0DA9\x07\x05\x02\x02\u0DA9\u0101" +
		"\x03\x02\x02\x02\u0DAA\u0DB3\x05\u0104\x83\x02\u0DAB\u0DB3\x05\u0106\x84" +
		"\x02\u0DAC\u0DAD\x05\u0104\x83\x02\u0DAD\u0DAE\x05\u0106\x84\x02\u0DAE" +
		"\u0DB3\x03\x02\x02\x02\u0DAF\u0DB0\x05\u0106\x84\x02\u0DB0\u0DB1\x05\u0104" +
		"\x83\x02\u0DB1\u0DB3\x03\x02\x02\x02\u0DB2\u0DAA\x03\x02\x02\x02\u0DB2" +
		"\u0DAB\x03\x02\x02\x02\u0DB2\u0DAC\x03\x02\x02\x02\u0DB2\u0DAF\x03\x02" +
		"\x02\x02\u0DB3\u0103\x03\x02\x02\x02\u0DB4\u0DB5\x07R\x02\x02\u0DB5\u0DB6" +
		"\x07\u0173\x02\x02\u0DB6\u0DB7\x05\u0108\x85\x02\u0DB7\u0105\x03\x02\x02" +
		"\x02\u0DB8\u0DB9\x07R\x02\x02\u0DB9\u0DBA\x07\xB8\x02\x02\u0DBA\u0DBB" +
		"\x05\u0108\x85\x02\u0DBB\u0107\x03\x02\x02\x02\u0DBC\u0DBD\x07\u010F\x02" +
		"\x02\u0DBD\u0DC6\x07\x86\x02\x02\u0DBE\u0DC6\x07\u013D\x02\x02\u0DBF\u0DC6" +
		"\x07\x98\x02\x02\u0DC0\u0DC1\x07\u014F\x02\x02\u0DC1\u0DC3\t\x1B\x02\x02" +
		"\u0DC2\u0DC4\x05\xF6|\x02\u0DC3\u0DC2\x03\x02\x02\x02\u0DC3\u0DC4\x03" +
		"\x02\x02\x02\u0DC4\u0DC6\x03\x02\x02\x02\u0DC5\u0DBC\x03\x02\x02\x02\u0DC5" +
		"\u0DBE\x03\x02\x02\x02\u0DC5\u0DBF\x03\x02\x02\x02\u0DC5\u0DC0\x03\x02" +
		"\x02\x02\u0DC6\u0109\x03\x02\x02\x02\u0DC7\u0DC8\x07\xF0\x02\x02\u0DC8" +
		"\u0DC9\x07\x04\x02\x02\u0DC9\u0DCA\x05\u0570\u02B9\x02\u0DCA\u0DCB\x07" +
		"\x05\x02\x02\u0DCB\u010B\x03\x02\x02\x02\u0DCC\u0DCD\x05\u010E\x88\x02" +
		"\u0DCD\u010D\x03\x02\x02\x02\u0DCE\u0DCF\x07\u011F\x02\x02\u0DCF\u0DD0" +
		"\x07\x95\x02\x02\u0DD0\u0DD1\x05\u05C4\u02E3\x02\u0DD1\u0DD2\x07\x04\x02" +
		"\x02\u0DD2\u0DD3\x05\u0110\x89\x02\u0DD3\u0DD4\x07\x05\x02\x02\u0DD4\u010F" +
		"\x03\x02\x02\x02\u0DD5\u0DDA\x05\u0112\x8A\x02\u0DD6\u0DD7\x07\b\x02\x02" +
		"\u0DD7\u0DD9\x05\u0112\x8A\x02\u0DD8\u0DD6\x03\x02\x02\x02\u0DD9\u0DDC" +
		"\x03\x02\x02\x02\u0DDA\u0DD8\x03\x02\x02\x02\u0DDA\u0DDB\x03\x02\x02\x02" +
		"\u0DDB\u0111\x03\x02\x02\x02\u0DDC\u0DDA\x03\x02\x02\x02\u0DDD\u0DDF\x05" +
		"\u059A\u02CE\x02\u0DDE\u0DE0\x05\u0288\u0145\x02\u0DDF\u0DDE\x03\x02\x02" +
		"\x02\u0DDF\u0DE0\x03\x02\x02\x02\u0DE0\u0DE2\x03\x02\x02\x02\u0DE1\u0DE3" +
		"\x05\u028A\u0146\x02\u0DE2\u0DE1\x03\x02\x02\x02\u0DE2\u0DE3\x03\x02\x02" +
		"\x02\u0DE3\u0DF5\x03\x02\x02\x02\u0DE4\u0DE6\x05\u04F0\u0279\x02\u0DE5" +
		"\u0DE7\x05\u0288\u0145\x02\u0DE6\u0DE5\x03\x02\x02\x02\u0DE6\u0DE7\x03" +
		"\x02\x02\x02\u0DE7\u0DE9\x03\x02\x02\x02\u0DE8\u0DEA\x05\u028A\u0146\x02" +
		"\u0DE9\u0DE8\x03\x02\x02\x02\u0DE9\u0DEA\x03\x02\x02\x02\u0DEA\u0DF5\x03" +
		"\x02\x02\x02\u0DEB\u0DEC\x07\x04\x02\x02\u0DEC\u0DED\x05\u04BE\u0260\x02" +
		"\u0DED\u0DEF\x07\x05\x02\x02\u0DEE\u0DF0\x05\u0288\u0145\x02\u0DEF\u0DEE" +
		"\x03\x02\x02\x02\u0DEF\u0DF0\x03\x02\x02\x02\u0DF0\u0DF2\x03\x02\x02\x02" +
		"\u0DF1\u0DF3\x05\u028A\u0146\x02\u0DF2\u0DF1\x03\x02\x02\x02\u0DF2\u0DF3" +
		"\x03\x02\x02\x02\u0DF3\u0DF5\x03\x02\x02\x02\u0DF4\u0DDD\x03\x02\x02\x02" +
		"\u0DF4\u0DE4\x03\x02\x02\x02\u0DF4\u0DEB\x03\x02\x02\x02\u0DF5\u0113\x03" +
		"\x02\x02\x02\u0DF6\u0DF7\x07f\x02\x02\u0DF7\u0DF8\x05\u059E\u02D0\x02" +
		"\u0DF8\u0115\x03\x02\x02\x02\u0DF9\u0DFA\x07k\x02\x02\u0DFA\u0E00\x05" +
		"\x86D\x02\u0DFB\u0DFC\x07\u017D\x02\x02\u0DFC\u0E00\x07\u0117\x02\x02" +
		"\u0DFD\u0DFE\x07k\x02\x02\u0DFE\u0E00\x07\u0117\x02\x02\u0DFF\u0DF9\x03" +
		"\x02\x02\x02\u0DFF\u0DFB\x03\x02\x02\x02\u0DFF\u0DFD\x03\x02\x02\x02\u0E00" +
		"\u0117\x03\x02\x02\x02\u0E01\u0E02\x07R\x02\x02\u0E02\u0E08\x07\xA3\x02" +
		"\x02\u0E03\u0E09\x07\xC1\x02\x02\u0E04\u0E05\x07\xB8\x02\x02\u0E05\u0E09" +
		"\x07\u0142\x02\x02\u0E06\u0E07\x07\u0126\x02\x02\u0E07\u0E09\x07\u0142" +
		"\x02\x02\u0E08\u0E03\x03\x02\x02\x02\u0E08\u0E04\x03\x02\x02\x02\u0E08" +
		"\u0E06\x03\x02\x02\x02\u0E09\u0119\x03\x02\x02\x02\u0E0A\u0E0B\x07\u0161" +
		"\x02\x02\u0E0B\u0E0C\x05\u057C\u02BF\x02\u0E0C\u011B\x03\x02\x02\x02\u0E0D" +
		"\u0E0F\x05\u0284\u0143\x02\u0E0E\u0E0D\x03\x02\x02\x02\u0E0E\u0E0F\x03" +
		"\x02\x02\x02\u0E0F\u0E11\x03\x02\x02\x02\u0E10\u0E12\x05\u03FA\u01FE\x02" +
		"\u0E11\u0E10\x03\x02\x02\x02\u0E11\u0E12\x03\x02\x02\x02\u0E12\u0E14\x03" +
		"\x02\x02\x02\u0E13\u0E15\x05\u011E\x90\x02\u0E14\u0E13\x03\x02\x02\x02" +
		"\u0E14\u0E15\x03\x02\x02\x02\u0E15\u011D\x03\x02\x02\x02\u0E16\u0E17\x07" +
		"f\x02\x02\u0E17\u0E18\x07\xE4\x02\x02\u0E18\u0E19\x07\u0161\x02\x02\u0E19" +
		"\u0E1A\x05\u057C\u02BF\x02\u0E1A\u011F\x03\x02\x02\x02\u0E1B\u0E1C\x07" +
		"f\x02\x02\u0E1C\u0E1D\x07\xE4\x02\x02\u0E1D\u0E1E\x05\u059E\u02D0\x02" +
		"\u0E1E\u0121\x03\x02\x02\x02\u0E1F\u0E20\x070\x02\x02\u0E20\u0E25\x07" +
		"\u0158\x02\x02\u0E21\u0E23\x05\u0204\u0103\x02\u0E22\u0E21\x03\x02\x02" +
		"\x02\u0E22\u0E23\x03\x02\x02\x02\u0E23\u0E24\x03\x02\x02\x02\u0E24\u0E26" +
		"\x05\u0230\u0119\x02\u0E25\u0E22\x03\x02\x02\x02\u0E25\u0E26\x03\x02\x02" +
		"\x02\u0E26\u0E28\x03\x02\x02\x02\u0E27\u0E29\x05\u039A\u01CE\x02\u0E28" +
		"\u0E27\x03\x02\x02\x02\u0E28\u0E29\x03\x02\x02\x02\u0E29\u0E2A\x03\x02" +
		"\x02\x02\u0E2A\u0E2D\x07R\x02\x02\u0E2B\u0E2E\x05\u0536\u029C\x02\u0E2C" +
		"\u0E2E\x05\u0532\u029A\x02\u0E2D\u0E2B\x03\x02\x02\x02\u0E2D\u0E2C\x03" +
		"\x02\x02\x02\u0E2E\u0E2F\x03\x02\x02\x02\u0E2F\u0E30\x07B\x02\x02\u0E30" +
		"\u0E31\x05\u0454\u022B\x02\u0E31\u0123\x03\x02\x02\x02\u0E32\u0E33\x07" +
		"\x8C\x02\x02\u0E33\u0E35\x07\u0158\x02\x02\u0E34\u0E36\x05\u02EE\u0178" +
		"\x02\u0E35\u0E34\x03\x02\x02\x02\u0E35\u0E36\x03\x02\x02\x02\u0E36\u0E37" +
		"\x03\x02\x02\x02\u0E37\u0E38\x05\u0230\u0119\x02\u0E38\u0E39\x07\u014F" +
		"\x02\x02\u0E39\u0E3A\x07\u0158\x02\x02\u0E3A\u0E3B\x05\u05BA\u02DE\x02" +
		"\u0E3B\u0125\x03\x02\x02\x02\u0E3C\u0E3E\x070\x02\x02\u0E3D\u0E3F\x05" +
		"\xC0a\x02\u0E3E\u0E3D\x03\x02\x02\x02\u0E3E\u0E3F\x03\x02\x02\x02\u0E3F" +
		"\u0E40\x03\x02\x02\x02\u0E40\u0E42\x07^\x02\x02\u0E41\u0E43\x05\u0204" +
		"\u0103\x02\u0E42\u0E41\x03\x02\x02\x02\u0E42\u0E43\x03\x02\x02\x02\u0E43" +
		"\u0E44\x03\x02\x02\x02\u0E44\u0E45\x05\u0128\x95\x02\u0E45\u0E46\x07&" +
		"\x02\x02\u0E46\u0E48\x05\u03EC\u01F7\x02\u0E47\u0E49\x05\u012A\x96\x02" +
		"\u0E48\u0E47\x03\x02\x02\x02\u0E48\u0E49\x03\x02\x02\x02\u0E49\u0127\x03" +
		"\x02\x02\x02\u0E4A\u0E4C\x05\u057E\u02C0\x02\u0E4B\u0E4D\x05\xF4{\x02" +
		"\u0E4C\u0E4B\x03\x02\x02\x02\u0E4C\u0E4D\x03\x02\x02\x02\u0E4D\u0E4F\x03" +
		"\x02\x02\x02\u0E4E\u0E50\x05\u0114\x8B\x02\u0E4F\u0E4E\x03\x02\x02\x02" +
		"\u0E4F\u0E50\x03\x02\x02\x02\u0E50\u0E52\x03\x02\x02\x02\u0E51\u0E53\x05" +
		"\u0116\x8C\x02\u0E52\u0E51\x03\x02\x02\x02\u0E52\u0E53\x03\x02\x02\x02" +
		"\u0E53\u0E55\x03\x02\x02\x02\u0E54\u0E56\x05\u0118\x8D\x02\u0E55\u0E54" +
		"\x03\x02\x02\x02\u0E55\u0E56\x03\x02\x02\x02\u0E56\u0E58\x03\x02\x02\x02" +
		"\u0E57\u0E59\x05\u011A\x8E\x02\u0E58\u0E57\x03\x02\x02\x02\u0E58\u0E59" +
		"\x03\x02\x02\x02\u0E59\u0129\x03\x02\x02\x02\u0E5A\u0E5E\x07k\x02\x02" +
		"\u0E5B\u0E5F\x07\xB0\x02\x02\u0E5C\u0E5D\x07\u010F\x02\x02\u0E5D\u0E5F" +
		"\x07\xB0\x02\x02\u0E5E\u0E5B\x03\x02\x02\x02\u0E5E\u0E5C\x03\x02\x02\x02" +
		"\u0E5F\u012B\x03\x02\x02\x02\u0E60\u0E62\x070\x02\x02\u0E61\u0E63\x05" +
		"\u0130\x99\x02\u0E62\u0E61\x03\x02\x02\x02\u0E62\u0E63\x03\x02\x02\x02" +
		"\u0E63\u0E64\x03\x02\x02\x02\u0E64\u0E65\x07\u0105\x02\x02\u0E65\u0E67" +
		"\x07\u017A\x02\x02\u0E66\u0E68\x05\u0204\u0103\x02\u0E67\u0E66\x03\x02" +
		"\x02\x02\u0E67\u0E68\x03\x02\x02\x02\u0E68\u0E69\x03\x02\x02\x02\u0E69" +
		"\u0E6A\x05\u012E\x98\x02\u0E6A\u0E6B\x07&\x02\x02\u0E6B\u0E6D\x05\u03EC" +
		"\u01F7\x02\u0E6C\u0E6E\x05\u012A\x96\x02\u0E6D\u0E6C\x03\x02\x02\x02\u0E6D" +
		"\u0E6E\x03\x02\x02\x02\u0E6E\u012D\x03\x02\x02\x02\u0E6F\u0E71\x05\u0582" +
		"\u02C2\x02\u0E70\u0E72\x05\xF4{\x02\u0E71\u0E70\x03\x02\x02\x02\u0E71" +
		"\u0E72\x03\x02\x02\x02\u0E72\u0E74\x03\x02\x02\x02\u0E73\u0E75\x05\u0114" +
		"\x8B\x02\u0E74\u0E73\x03\x02\x02\x02\u0E74\u0E75\x03\x02\x02\x02\u0E75" +
		"\u0E77\x03\x02\x02\x02\u0E76\u0E78\x05\x88E\x02\u0E77\u0E76\x03\x02\x02" +
		"\x02\u0E77\u0E78\x03\x02\x02\x02\u0E78\u0E7A\x03\x02\x02\x02\u0E79\u0E7B" +
		"\x05\u011A\x8E\x02\u0E7A\u0E79\x03\x02\x02\x02\u0E7A\u0E7B\x03\x02\x02" +
		"\x02\u0E7B\u012F\x03\x02\x02\x02\u0E7C\u0E7D\x07\u0171\x02\x02\u0E7D\u0131" +
		"\x03\x02\x02\x02\u0E7E\u0E7F\x07\u0133\x02\x02\u0E7F\u0E80\x07\u0105\x02" +
		"\x02\u0E80\u0E82\x07\u017A\x02\x02\u0E81\u0E83\x05\u0278\u013D\x02\u0E82" +
		"\u0E81\x03\x02\x02\x02\u0E82\u0E83\x03\x02\x02\x02\u0E83\u0E84\x03\x02" +
		"\x02\x02\u0E84\u0E86\x05\u0584\u02C3\x02\u0E85\u0E87\x05\u012A\x96\x02" +
		"\u0E86\u0E85\x03\x02\x02\x02\u0E86\u0E87\x03\x02\x02\x02\u0E87\u0133\x03" +
		"\x02\x02\x02\u0E88\u0E8A\x070\x02\x02\u0E89\u0E8B\x05\xC0a\x02\u0E8A\u0E89" +
		"\x03\x02\x02\x02\u0E8A\u0E8B\x03\x02\x02\x02\u0E8B\u0E8C\x03\x02\x02\x02" +
		"\u0E8C\u0E8E\x07\u014A\x02\x02\u0E8D\u0E8F\x05\u0204\u0103\x02\u0E8E\u0E8D" +
		"\x03\x02\x02\x02\u0E8E\u0E8F\x03\x02\x02\x02\u0E8F\u0E90\x03\x02\x02\x02" +
		"\u0E90\u0E92\x05\u0586\u02C4\x02\u0E91\u0E93\x05\u0138\x9D\x02\u0E92\u0E91" +
		"\x03\x02\x02\x02\u0E92\u0E93\x03\x02\x02\x02\u0E93\u0135\x03\x02\x02\x02" +
		"\u0E94\u0E95\x07\x8C\x02\x02\u0E95\u0E97\x07\u014A\x02\x02\u0E96\u0E98" +
		"\x05\u02EE\u0178\x02\u0E97\u0E96\x03\x02\x02\x02\u0E97\u0E98\x03\x02\x02" +
		"\x02\u0E98\u0E99\x03\x02\x02\x02\u0E99\u0E9A\x05\u0586\u02C4\x02\u0E9A" +
		"\u0E9B\x05\u013C\x9F\x02\u0E9B\u0137\x03\x02\x02\x02\u0E9C\u0E9D\x05\u013C" +
		"\x9F\x02\u0E9D\u0139\x03\x02\x02\x02\u0E9E\u0E9F\x07\x04\x02\x02\u0E9F" +
		"\u0EA0\x05\u013C\x9F\x02\u0EA0\u0EA1\x07\x05\x02\x02\u0EA1\u013B\x03\x02" +
		"\x02\x02\u0EA2\u0EA4\x05\u013E\xA0\x02\u0EA3\u0EA2\x03\x02\x02\x02\u0EA4" +
		"\u0EA5\x03\x02\x02\x02\u0EA5\u0EA3\x03\x02\x02\x02\u0EA5\u0EA6\x03\x02" +
		"\x02\x02\u0EA6\u013D\x03\x02\x02\x02\u0EA7\u0EA8\x07&\x02\x02\u0EA8\u0ECA" +
		"\x05\u0496\u024C\x02\u0EA9\u0EAA\x07\x96\x02\x02\u0EAA\u0ECA\x05\u0142" +
		"\xA2\x02\u0EAB\u0ECA\x07\xAF\x02\x02\u0EAC\u0EAE\x07\xE3\x02\x02\u0EAD" +
		"\u0EAF\x05\u0140\xA1\x02\u0EAE\u0EAD\x03\x02\x02\x02\u0EAE\u0EAF\x03\x02" +
		"\x02\x02\u0EAF\u0EB0\x03\x02\x02\x02\u0EB0\u0ECA\x05\u0142\xA2\x02\u0EB1" +
		"\u0EB2\x07\u0106\x02\x02\u0EB2\u0ECA\x05\u0142\xA2\x02\u0EB3\u0EB4\x07" +
		"\u0108\x02\x02\u0EB4\u0ECA\x05\u0142\xA2\x02\u0EB5\u0EB6\x07\u010F\x02" +
		"\x02\u0EB6\u0ECA\t\x1C\x02\x02\u0EB7\u0EB8\x07\u011B\x02\x02\u0EB8\u0EB9" +
		"\x07\x95\x02\x02\u0EB9\u0ECA\x05\u022A\u0116\x02\u0EBA\u0EBB\x07\u014A" +
		"\x02\x02\u0EBB\u0EBC\x07\u010C\x02\x02\u0EBC\u0ECA\x05\u0230\u0119\x02" +
		"\u0EBD\u0EBF\x07\u0156\x02\x02\u0EBE\u0EC0\x05\x10\t\x02\u0EBF\u0EBE\x03" +
		"\x02\x02\x02\u0EBF\u0EC0\x03\x02\x02\x02\u0EC0\u0EC1\x03\x02\x02\x02\u0EC1" +
		"\u0ECA\x05\u0142\xA2\x02\u0EC2\u0EC4\x07\u013C\x02\x02\u0EC3\u0EC5\x05" +
		"\x10\t\x02\u0EC4\u0EC3\x03\x02\x02\x02\u0EC4\u0EC5\x03\x02\x02\x02\u0EC5" +
		"\u0EC7\x03\x02\x02\x02\u0EC6\u0EC8\x05\u0142\xA2\x02\u0EC7\u0EC6\x03\x02" +
		"\x02\x02\u0EC7\u0EC8\x03\x02\x02\x02\u0EC8\u0ECA\x03\x02\x02\x02\u0EC9" +
		"\u0EA7\x03\x02\x02\x02\u0EC9\u0EA9\x03\x02\x02\x02\u0EC9\u0EAB\x03\x02" +
		"\x02\x02\u0EC9\u0EAC\x03\x02\x02\x02\u0EC9\u0EB1\x03\x02\x02\x02\u0EC9" +
		"\u0EB3\x03\x02\x02\x02\u0EC9\u0EB5\x03\x02\x02\x02\u0EC9\u0EB7\x03\x02" +
		"\x02\x02\u0EC9\u0EBA\x03\x02\x02\x02\u0EC9\u0EBD\x03\x02\x02\x02\u0EC9" +
		"\u0EC2\x03\x02\x02\x02\u0ECA\u013F\x03\x02\x02\x02\u0ECB\u0ECC\x07\x95" +
		"\x02\x02\u0ECC\u0141\x03\x02\x02\x02\u0ECD\u0ED4\x05\u05B0\u02D9\x02\u0ECE" +
		"\u0ECF\x07\x0E\x02\x02\u0ECF\u0ED4\x05\u05B0\u02D9\x02\u0ED0\u0ED1\x07" +
		"\x0F\x02\x02\u0ED1\u0ED4\x05\u05B0\u02D9\x02\u0ED2\u0ED4\x05\u05BA\u02DE" +
		"\x02\u0ED3\u0ECD\x03\x02\x02\x02\u0ED3\u0ECE\x03\x02\x02\x02\u0ED3\u0ED0" +
		"\x03\x02\x02\x02\u0ED3\u0ED2\x03\x02\x02\x02\u0ED4\u0143\x03\x02\x02\x02" +
		"\u0ED5\u0EDA\x05\u0142\xA2\x02\u0ED6\u0ED7\x07\b\x02\x02\u0ED7\u0ED9\x05" +
		"\u0142\xA2\x02\u0ED8\u0ED6\x03\x02\x02\x02\u0ED9\u0EDC\x03\x02\x02\x02" +
		"\u0EDA\u0ED8\x03\x02\x02\x02\u0EDA\u0EDB\x03\x02\x02\x02\u0EDB\u0145\x03" +
		"\x02\x02\x02\u0EDC\u0EDA\x03\x02\x02\x02\u0EDD\u0EDF\x070\x02\x02\u0EDE" +
		"\u0EE0\x05\u0294\u014B\x02\u0EDF\u0EDE\x03\x02\x02\x02\u0EDF\u0EE0\x03" +
		"\x02\x02\x02\u0EE0\u0EE2\x03\x02\x02\x02\u0EE1\u0EE3\x05\u0148\xA5\x02" +
		"\u0EE2\u0EE1\x03\x02\x02\x02\u0EE2\u0EE3\x03\x02\x02\x02\u0EE3\u0EE5\x03" +
		"\x02\x02\x02\u0EE4\u0EE6\x05\u0152\xAA\x02\u0EE5\u0EE4\x03\x02\x02\x02" +
		"\u0EE5\u0EE6\x03\x02\x02\x02\u0EE6\u0EE7\x03\x02\x02\x02\u0EE7\u0EE8\x07" +
		"\xF9\x02\x02\u0EE8\u0EF1\x05\u059E\u02D0\x02\u0EE9\u0EEA\x07\xD9\x02\x02" +
		"\u0EEA\u0EEC\x05\u014A\xA6\x02\u0EEB\u0EED\x05\u014C\xA7\x02\u0EEC\u0EEB" +
		"\x03\x02\x02\x02\u0EEC\u0EED\x03\x02\x02\x02\u0EED\u0EEF\x03\x02\x02\x02" +
		"\u0EEE\u0EF0\x05\u0150\xA9\x02\u0EEF\u0EEE\x03\x02\x02\x02\u0EEF\u0EF0" +
		"\x03\x02\x02\x02\u0EF0\u0EF2\x03\x02\x02\x02\u0EF1\u0EE9\x03\x02\x02\x02" +
		"\u0EF1\u0EF2\x03\x02\x02\x02\u0EF2\u0147\x03\x02\x02\x02\u0EF3\u0EF4\x07" +
		"\u0169\x02\x02\u0EF4\u0149\x03\x02\x02\x02\u0EF5\u0EF7\x05\u059E\u02D0" +
		"\x02\u0EF6\u0EF8\x05\u0232\u011A\x02\u0EF7\u0EF6\x03\x02\x02\x02\u0EF7" +
		"\u0EF8\x03\x02\x02\x02\u0EF8\u014B\x03\x02\x02\x02\u0EF9\u0EFA\x07\xF1" +
		"\x02\x02\u0EFA\u0EFB\x05\u014A\xA6\x02\u0EFB\u014D\x03\x02\x02\x02\u0EFC" +
		"\u0EFD\x07\u0177\x02\x02\u0EFD\u0F01\x05\u014A\xA6\x02\u0EFE\u0EFF\x07" +
		"\u010F\x02\x02\u0EFF\u0F01\x07\u0177\x02\x02\u0F00\u0EFC\x03\x02\x02\x02" +
		"\u0F00\u0EFE\x03\x02\x02\x02\u0F01\u014F\x03\x02\x02\x02\u0F02\u0F03\x05" +
		"\u014E\xA8\x02\u0F03\u0151\x03\x02\x02\x02\u0F04\u0F05\x07\u0129\x02\x02" +
		"\u0F05\u0153\x03\x02\x02\x02\u0F06\u0F07\x070\x02\x02\u0F07\u0F08\x07" +
		"\u0161\x02\x02\u0F08\u0F0A\x05\u057C\u02BF\x02\u0F09\u0F0B\x05\u0156\xAC" +
		"\x02\u0F0A\u0F09\x03\x02\x02\x02\u0F0A\u0F0B\x03\x02\x02\x02\u0F0B\u0F0C" +
		"\x03\x02\x02\x02\u0F0C\u0F0D\x07\u0101\x02\x02\u0F0D\u0F0F\x05\u05B4\u02DB" +
		"\x02\u0F0E\u0F10\x05\x88E\x02\u0F0F\u0F0E\x03\x02\x02\x02\u0F0F\u0F10" +
		"\x03\x02\x02\x02\u0F10\u0155\x03\x02\x02\x02\u0F11\u0F12\x07\u011C\x02" +
		"\x02\u0F12\u0F13\x05\u05C0\u02E1\x02\u0F13\u0157\x03\x02\x02\x02\u0F14" +
		"\u0F15\x070\x02\x02\u0F15\u0F17\x07\xCE\x02\x02\u0F16\u0F18\x05\u0204" +
		"\u0103\x02\u0F17\u0F16\x03\x02\x02\x02\u0F17\u0F18\x03\x02\x02\x02\u0F18" +
		"\u0F19\x03\x02\x02\x02\u0F19\u0F1B\x05\u059E\u02D0\x02\u0F1A\u0F1C\x05" +
		"\x10\t\x02\u0F1B\u0F1A\x03\x02\x02\x02\u0F1B\u0F1C\x03\x02\x02\x02\u0F1C" +
		"\u0F1D\x03\x02\x02\x02\u0F1D\u0F1E\x05\u015A\xAE\x02\u0F1E\u0159\x03\x02" +
		"\x02\x02\u0F1F\u0F21\x05\u015C\xAF\x02\u0F20\u0F1F\x03\x02\x02\x02\u0F21" +
		"\u0F24\x03\x02\x02\x02\u0F22\u0F20\x03\x02\x02\x02\u0F22\u0F23\x03\x02" +
		"\x02\x02\u0F23\u015B\x03\x02\x02\x02\u0F24\u0F22\x03\x02\x02\x02\u0F25" +
		"\u0F26\x07\u0145\x02\x02\u0F26\u0F2D\x05\u0590\u02C9\x02\u0F27\u0F28\x07" +
		"\u0179\x02\x02\u0F28\u0F2D\x05R*\x02\u0F29\u0F2A\x07B\x02\x02\u0F2A\u0F2D" +
		"\x05R*\x02\u0F2B\u0F2D\x07\x98\x02\x02\u0F2C\u0F25\x03\x02\x02\x02\u0F2C" +
		"\u0F27\x03\x02\x02\x02\u0F2C\u0F29\x03\x02\x02\x02\u0F2C\u0F2B\x03\x02" +
		"\x02\x02\u0F2D\u015D\x03\x02\x02\x02\u0F2E\u0F2F\x07\x8C\x02\x02\u0F2F" +
		"\u0F30\x07\xCE\x02\x02\u0F30\u0F31\x05\u059E\u02D0\x02\u0F31\u0F32\x07" +
		"\u0173\x02\x02\u0F32\u0F33\x05\u0160\xB1\x02\u0F33\u015F\x03\x02\x02\x02" +
		"\u0F34\u0F36\x05\u0162\xB2\x02\u0F35\u0F34\x03\x02\x02\x02\u0F36\u0F39" +
		"\x03\x02\x02\x02\u0F37\u0F35\x03\x02\x02\x02\u0F37\u0F38\x03\x02\x02\x02" +
		"\u0F38\u0161\x03\x02\x02\x02\u0F39\u0F37\x03\x02\x02\x02\u0F3A\u0F3B\x07" +
		"`\x02\x02\u0F3B\u0F3C\x05R*\x02\u0F3C\u0163\x03\x02\x02\x02\u0F3D\u0F3E" +
		"\x07\x8C\x02\x02\u0F3E\u0F3F\x07\xCE\x02\x02\u0F3F\u0F40\x05\u059E\u02D0" +
		"\x02\u0F40\u0F41\x05.\x18\x02\u0F41\u0F42\x05\u0224\u0113\x02\u0F42\u0FA4" +
		"\x03\x02\x02\x02\u0F43\u0F44\x07\x8C\x02\x02\u0F44\u0F45\x07\xCE\x02\x02" +
		"\u0F45\u0F46\x05\u059E\u02D0\x02\u0F46\u0F47\x05.\x18\x02\u0F47\u0F48" +
		"\x05\u0222\u0112\x02\u0F48\u0FA4\x03\x02\x02\x02\u0F49\u0F4A\x07\x8C\x02" +
		"\x02\u0F4A\u0F4B\x07\xCE\x02\x02\u0F4B\u0F4C\x05\u059E\u02D0\x02\u0F4C" +
		"\u0F4D\x05.\x18\x02\u0F4D\u0F4E\x07\x8A\x02\x02\u0F4E\u0F4F\x05\u02BC" +
		"\u015F\x02\u0F4F\u0FA4\x03\x02\x02\x02\u0F50\u0F51\x07\x8C\x02\x02\u0F51" +
		"\u0F52\x07\xCE\x02\x02\u0F52\u0F53\x05\u059E\u02D0\x02\u0F53\u0F54\x05" +
		".\x18\x02\u0F54\u0F55\x07+\x02\x02\u0F55\u0F56\x07\x04\x02\x02\u0F56\u0F57" +
		"\x05\u0492\u024A\x02\u0F57\u0F58\x07&\x02\x02\u0F58\u0F59\x05\u0492\u024A" +
		"\x02\u0F59\u0F5A\x07\x05\x02\x02\u0F5A\u0FA4\x03\x02\x02\x02\u0F5B\u0F5C" +
		"\x07\x8C\x02\x02\u0F5C\u0F5D\x07\xCE\x02\x02\u0F5D\u0F5E\x05\u059E\u02D0" +
		"\x02\u0F5E\u0F5F\x05.\x18\x02\u0F5F\u0F60\x07\xBF\x02\x02\u0F60\u0F61" +
		"\x05\u0492\u024A\x02\u0F61\u0FA4\x03\x02\x02\x02\u0F62\u0F63\x07\x8C\x02" +
		"\x02\u0F63\u0F64\x07\xCE\x02\x02\u0F64\u0F65\x05\u059E\u02D0\x02\u0F65" +
		"\u0F66\x05.\x18\x02\u0F66\u0F67\x07\xD5\x02\x02\u0F67\u0F68\x05\u02A4" +
		"\u0153\x02\u0F68\u0FA4\x03\x02\x02\x02\u0F69\u0F6A\x07\x8C\x02\x02\u0F6A" +
		"\u0F6B\x07\xCE\x02\x02\u0F6B\u0F6C\x05\u059E\u02D0\x02\u0F6C\u0F6D\x05" +
		".\x18\x02\u0F6D\u0F6E\x07\u0118\x02\x02\u0F6E\u0F6F\x05\u02E2\u0172\x02" +
		"\u0F6F\u0FA4\x03\x02\x02\x02\u0F70\u0F71\x07\x8C\x02\x02\u0F71\u0F72\x07" +
		"\xCE\x02\x02\u0F72\u0F73\x05\u059E\u02D0\x02\u0F73\u0F74\x05.\x18\x02" +
		"\u0F74\u0F75\x07\u0118\x02\x02\u0F75\u0F76\x07\x9E\x02\x02\u0F76\u0F77" +
		"\x05\u0230\u0119\x02\u0F77\u0F78\x07f\x02\x02\u0F78\u0F79\x05\u059E\u02D0" +
		"\x02\u0F79\u0FA4\x03\x02\x02\x02\u0F7A\u0F7B\x07\x8C\x02\x02\u0F7B\u0F7C" +
		"\x07\xCE\x02\x02\u0F7C\u0F7D\x05\u059E\u02D0\x02\u0F7D\u0F7E\x05.\x18" +
		"\x02\u0F7E\u0F7F\x07\u0118\x02\x02\u0F7F\u0F80\x07\xD0\x02\x02\u0F80\u0F81" +
		"\x05\u0230\u0119\x02\u0F81\u0F82\x07f\x02\x02\u0F82\u0F83\x05\u059E\u02D0" +
		"\x02\u0F83\u0FA4\x03\x02\x02\x02\u0F84\u0F85\x07\x8C\x02\x02\u0F85\u0F86" +
		"\x07\xCE\x02\x02\u0F86\u0F87\x05\u059E\u02D0\x02\u0F87\u0F88\x05.\x18" +
		"\x02\u0F88\u0F89\x07\u012A\x02\x02\u0F89\u0F8A\x05\u02A0\u0151\x02\u0F8A" +
		"\u0FA4\x03\x02\x02\x02\u0F8B\u0F8C\x07\x8C\x02\x02\u0F8C\u0F8D\x07\xCE" +
		"\x02\x02\u0F8D\u0F8E\x05\u059E\u02D0\x02\u0F8E\u0F8F\x05.\x18\x02\u0F8F" +
		"\u0F90\x07\u01BC\x02\x02\u0F90\u0F91\x05\u029C\u014F\x02\u0F91\u0FA4\x03" +
		"\x02\x02\x02\u0F92\u0F93\x07\x8C\x02\x02\u0F93\u0F94\x07\xCE\x02\x02\u0F94" +
		"\u0F95\x05\u059E\u02D0\x02\u0F95\u0F96\x05.\x18\x02\u0F96\u0F97\x07\u01BD" +
		"\x02\x02\u0F97\u0F98\x07@\x02\x02\u0F98\u0F99\x05\u0492\u024A\x02\u0F99" +
		"\u0F9A\x07\xF9\x02\x02\u0F9A\u0F9B\x05\u059E\u02D0\x02\u0F9B\u0FA4\x03" +
		"\x02\x02\x02\u0F9C\u0F9D\x07\x8C\x02\x02\u0F9D\u0F9E\x07\xCE\x02\x02\u0F9E" +
		"\u0F9F\x05\u059E\u02D0\x02\u0F9F\u0FA0\x05.\x18\x02\u0FA0\u0FA1\x07\u016A" +
		"\x02\x02\u0FA1\u0FA2\x05\u0492\u024A\x02\u0FA2\u0FA4\x03\x02\x02\x02\u0FA3" +
		"\u0F3D\x03\x02\x02\x02\u0FA3\u0F43\x03\x02\x02\x02\u0FA3\u0F49\x03\x02" +
		"\x02\x02\u0FA3\u0F50\x03\x02\x02\x02\u0FA3\u0F5B\x03\x02\x02\x02\u0FA3" +
		"\u0F62";
	private static readonly _serializedATNSegment10: string =
		"\x03\x02\x02\x02\u0FA3\u0F69\x03\x02\x02\x02\u0FA3\u0F70\x03\x02\x02\x02" +
		"\u0FA3\u0F7A\x03\x02\x02\x02\u0FA3\u0F84\x03\x02\x02\x02\u0FA3\u0F8B\x03" +
		"\x02\x02\x02\u0FA3\u0F92\x03\x02\x02\x02\u0FA3\u0F9C\x03\x02\x02\x02\u0FA4" +
		"\u0165\x03\x02\x02\x02\u0FA5\u0FA6\x070\x02\x02\u0FA6\u0FA7\x07A\x02\x02" +
		"\u0FA7\u0FA8\x07\xB0\x02\x02\u0FA8\u0FA9\x07\u017F\x02\x02\u0FA9\u0FAB" +
		"\x05\u059E\u02D0\x02\u0FAA\u0FAC\x05\u016C\xB7\x02\u0FAB\u0FAA\x03\x02" +
		"\x02\x02\u0FAB\u0FAC\x03\x02\x02\x02\u0FAC\u0FAE\x03\x02\x02\x02\u0FAD" +
		"\u0FAF\x05\u0170\xB9\x02\u0FAE\u0FAD\x03\x02\x02\x02\u0FAE\u0FAF\x03\x02" +
		"\x02\x02\u0FAF\u0167\x03\x02\x02\x02\u0FB0\u0FB1\x07\xD9\x02\x02\u0FB1" +
		"\u0FB9\x05\u014A\xA6\x02\u0FB2\u0FB3\x07\u010F\x02\x02\u0FB3\u0FB9\x07" +
		"\xD9\x02\x02\u0FB4\u0FB5\x07\u0177\x02\x02\u0FB5\u0FB9\x05\u014A\xA6\x02" +
		"\u0FB6\u0FB7\x07\u010F\x02\x02\u0FB7\u0FB9\x07\u0177\x02\x02\u0FB8\u0FB0" +
		"\x03\x02\x02\x02\u0FB8\u0FB2\x03\x02\x02\x02\u0FB8\u0FB4\x03\x02\x02\x02" +
		"\u0FB8\u0FB6\x03\x02\x02\x02\u0FB9\u0169\x03\x02\x02\x02\u0FBA\u0FBC\x05" +
		"\u0168\xB5\x02\u0FBB\u0FBA\x03\x02\x02\x02\u0FBC\u0FBD\x03\x02\x02\x02" +
		"\u0FBD\u0FBB\x03\x02\x02\x02\u0FBD\u0FBE\x03\x02\x02\x02\u0FBE\u016B\x03" +
		"\x02\x02\x02\u0FBF\u0FC0\x05\u016A\xB6\x02\u0FC0\u016D\x03\x02\x02\x02" +
		"\u0FC1\u0FC2\x07\x8C\x02\x02\u0FC2\u0FC3\x07A\x02\x02\u0FC3\u0FC4\x07" +
		"\xB0\x02\x02\u0FC4\u0FC5\x07\u017F\x02\x02\u0FC5\u0FC7\x05\u059E\u02D0" +
		"\x02\u0FC6\u0FC8\x05\u016C\xB7\x02\u0FC7\u0FC6\x03\x02\x02\x02\u0FC7\u0FC8" +
		"\x03\x02\x02\x02\u0FC8\u0FC9\x03\x02\x02\x02\u0FC9\u0FCA\x05\u0174\xBB" +
		"\x02\u0FCA\u0FD3\x03\x02\x02\x02\u0FCB\u0FCC\x07\x8C\x02\x02\u0FCC\u0FCD" +
		"\x07A\x02\x02\u0FCD\u0FCE\x07\xB0\x02\x02\u0FCE\u0FCF\x07\u017F\x02\x02" +
		"\u0FCF\u0FD0\x05\u059E\u02D0\x02\u0FD0\u0FD1\x05\u016A\xB6\x02\u0FD1\u0FD3" +
		"\x03\x02\x02\x02\u0FD2\u0FC1\x03\x02\x02\x02\u0FD2\u0FCB\x03\x02\x02\x02" +
		"\u0FD3\u016F\x03\x02\x02\x02\u0FD4\u0FD5\x07\u011A\x02\x02\u0FD5\u0FD6" +
		"\x07\x04\x02\x02\u0FD6\u0FD7\x05\u0172\xBA\x02\u0FD7\u0FD8\x07\x05\x02" +
		"\x02\u0FD8\u0171\x03\x02\x02\x02\u0FD9\u0FDE\x05\u017A\xBE\x02\u0FDA\u0FDB" +
		"\x07\b\x02\x02\u0FDB\u0FDD\x05\u017A\xBE\x02\u0FDC\u0FDA\x03\x02\x02\x02" +
		"\u0FDD\u0FE0\x03\x02\x02\x02\u0FDE\u0FDC\x03\x02\x02\x02\u0FDE\u0FDF\x03" +
		"\x02\x02\x02\u0FDF\u0173\x03\x02\x02\x02\u0FE0\u0FDE\x03\x02\x02\x02\u0FE1" +
		"\u0FE2\x07\u011A\x02\x02\u0FE2\u0FE3\x07\x04\x02\x02\u0FE3\u0FE4\x05\u0176" +
		"\xBC\x02\u0FE4\u0FE5\x07\x05\x02\x02\u0FE5\u0175\x03\x02\x02\x02\u0FE6" +
		"\u0FEB\x05\u0178\xBD\x02\u0FE7\u0FE8\x07\b\x02\x02\u0FE8\u0FEA\x05\u0178" +
		"\xBD\x02\u0FE9\u0FE7\x03\x02\x02\x02\u0FEA\u0FED\x03\x02\x02\x02\u0FEB" +
		"\u0FE9\x03\x02\x02\x02\u0FEB\u0FEC\x03\x02\x02\x02\u0FEC\u0177\x03\x02" +
		"\x02\x02\u0FED\u0FEB\x03\x02\x02\x02\u0FEE\u0FF6\x05\u017A\xBE\x02\u0FEF" +
		"\u0FF0\x07\u014F\x02\x02\u0FF0\u0FF6\x05\u017A\xBE\x02\u0FF1\u0FF2\x07" +
		"\x87\x02\x02\u0FF2\u0FF6\x05\u017A\xBE\x02\u0FF3\u0FF4\x07\xC1\x02\x02" +
		"\u0FF4\u0FF6\x05\u017A\xBE\x02\u0FF5\u0FEE\x03\x02\x02\x02\u0FF5\u0FEF" +
		"\x03\x02\x02\x02\u0FF5\u0FF1\x03\x02\x02\x02\u0FF5\u0FF3\x03\x02\x02\x02" +
		"\u0FF6\u0179\x03\x02\x02\x02\u0FF7\u0FF8\x05\u017C\xBF\x02\u0FF8\u0FF9" +
		"\x05\u017E\xC0\x02\u0FF9\u017B\x03\x02\x02\x02\u0FFA\u0FFB\x05\u05D4\u02EB" +
		"\x02\u0FFB\u017D\x03\x02\x02\x02\u0FFC\u0FFD\x05\u05B4\u02DB\x02\u0FFD" +
		"\u017F\x03\x02\x02\x02\u0FFE\u0FFF\x070\x02\x02\u0FFF\u1001\x07\u014D" +
		"\x02\x02\u1000\u1002\x05\u0204\u0103\x02\u1001\u1000\x03\x02\x02\x02\u1001" +
		"\u1002\x03\x02\x02\x02\u1002\u1003\x03\x02\x02\x02\u1003\u1005\x05\u059E" +
		"\u02D0\x02\u1004\u1006\x05\u0182\xC2\x02\u1005\u1004\x03\x02\x02\x02\u1005" +
		"\u1006\x03\x02\x02\x02\u1006\u1008\x03\x02\x02\x02\u1007\u1009\x05\u0186" +
		"\xC4\x02\u1008\u1007\x03\x02\x02\x02\u1008\u1009\x03\x02\x02\x02\u1009" +
		"\u100A\x03\x02\x02\x02\u100A\u100B\x07A\x02\x02\u100B\u100C\x07\xB0\x02" +
		"\x02\u100C\u100D\x07\u017F\x02\x02\u100D\u100F\x05\u059E\u02D0\x02\u100E" +
		"\u1010\x05\u0170\xB9\x02\u100F\u100E\x03\x02\x02\x02\u100F\u1010\x03\x02" +
		"\x02\x02\u1010\u0181\x03\x02\x02\x02\u1011\u1012\x07\u016A\x02\x02\u1012" +
		"\u1013\x05\u05B4\u02DB\x02\u1013\u0183\x03\x02\x02\x02\u1014\u1017\x07" +
		"\u0179\x02\x02\u1015\u1018\x05\u05B4\u02DB\x02\u1016\u1018\x07P\x02\x02" +
		"\u1017\u1015\x03\x02\x02\x02\u1017\u1016\x03\x02\x02\x02\u1018\u0185\x03" +
		"\x02\x02\x02\u1019\u101A\x05\u0184\xC3\x02\u101A\u0187\x03\x02\x02\x02" +
		"\u101B\u101C\x07\x8C\x02\x02\u101C\u101D\x07\u014D\x02\x02\u101D\u1023" +
		"\x05\u059E\u02D0\x02\u101E\u1024\x05\u0174\xBB\x02\u101F\u1021\x05\u0184" +
		"\xC3\x02\u1020\u1022\x05\u0174\xBB\x02\u1021\u1020\x03\x02\x02\x02\u1021" +
		"\u1022\x03\x02\x02\x02\u1022\u1024\x03\x02\x02\x02\u1023\u101E\x03\x02" +
		"\x02\x02\u1023\u101F\x03\x02\x02\x02\u1024\u0189\x03\x02\x02\x02\u1025" +
		"\u1026\x070\x02\x02\u1026\u1027\x07A\x02\x02\u1027\u1029\x07^\x02\x02" +
		"\u1028\u102A\x05\u0204\u0103\x02\u1029\u1028\x03\x02\x02\x02\u1029\u102A" +
		"\x03\x02\x02\x02\u102A\u102B\x03\x02\x02\x02\u102B\u102C\x05\u057E\u02C0" +
		"\x02\u102C\u102E\x07\x04\x02\x02\u102D\u102F\x05\xC4c\x02\u102E\u102D" +
		"\x03\x02\x02\x02\u102E\u102F\x03\x02\x02\x02\u102F\u1030\x03\x02\x02\x02" +
		"\u1030\u1032\x07\x05\x02\x02\u1031\u1033\x05\u010A\x86\x02\u1032\u1031" +
		"\x03\x02\x02\x02\u1032\u1033\x03\x02\x02\x02\u1033\u1034\x03\x02\x02\x02" +
		"\u1034\u1035\x07\u014D\x02\x02\u1035\u1037\x05\u059E\u02D0\x02\u1036\u1038" +
		"\x05\u0170\xB9\x02\u1037\u1036\x03\x02\x02\x02\u1037\u1038\x03\x02\x02" +
		"\x02\u1038\u104D\x03\x02\x02\x02\u1039\u103A\x070\x02\x02\u103A\u103B" +
		"\x07A\x02\x02\u103B\u103D\x07^\x02\x02\u103C\u103E\x05\u0204\u0103\x02" +
		"\u103D\u103C\x03\x02\x02\x02\u103D\u103E\x03\x02\x02\x02\u103E\u103F\x03" +
		"\x02\x02\x02\u103F\u1040\x05\u057E\u02C0\x02\u1040\u1041\x07\u011F\x02" +
		"\x02\u1041\u1042\x07\u0115\x02\x02\u1042\u1044\x05\u0580\u02C1\x02\u1043" +
		"\u1045\x05\xC6d\x02\u1044\u1043\x03\x02\x02\x02\u1044\u1045\x03\x02\x02" +
		"\x02\u1045\u1046\x03\x02\x02\x02\u1046\u1047\x05\x92J\x02\u1047\u1048" +
		"\x07\u014D\x02\x02\u1048\u104A\x05\u059E\u02D0\x02\u1049\u104B\x05\u0170" +
		"\xB9\x02\u104A\u1049\x03\x02\x02\x02\u104A\u104B\x03\x02\x02\x02\u104B" +
		"\u104D\x03\x02\x02\x02\u104C\u1025\x03\x02\x02\x02\u104C\u1039\x03\x02" +
		"\x02\x02\u104D\u018B\x03\x02\x02\x02\u104E\u104F\x07\u01BE\x02\x02\u104F" +
		"\u1050\x07A\x02\x02\u1050\u1051\x07\u0145\x02\x02\u1051\u1053\x05\u0590" +
		"\u02C9\x02\u1052\u1054\x05\u0190\xC9\x02\u1053\u1052\x03\x02\x02\x02\u1053" +
		"\u1054\x03\x02\x02\x02\u1054\u1055\x03\x02\x02\x02\u1055\u1056\x07B\x02" +
		"\x02\u1056\u1057\x07\u014D\x02\x02\u1057\u1058\x05\u059E\u02D0\x02\u1058" +
		"\u1059\x07I\x02\x02\u1059\u105B\x05\u059E\u02D0\x02\u105A\u105C\x05\u0170" +
		"\xB9\x02\u105B\u105A\x03\x02\x02\x02\u105B\u105C\x03\x02\x02\x02\u105C" +
		"\u018D\x03\x02\x02\x02\u105D\u105E\x07L\x02\x02\u105E\u1061\x07`\x02\x02" +
		"\u105F\u1061\x07=\x02\x02\u1060\u105D\x03\x02\x02\x02\u1060\u105F\x03" +
		"\x02\x02\x02\u1061\u018F\x03\x02\x02\x02\u1062\u1063\x05\u018E\xC8\x02" +
		"\u1063\u1064\x07\x04\x02\x02\u1064\u1065\x05\u0466\u0234\x02\u1065\u1066" +
		"\x07\x05\x02\x02\u1066\u0191\x03\x02\x02\x02\u1067\u1068\x070\x02\x02" +
		"\u1068\u1069\x07e\x02\x02\u1069\u106B\x07\u0103\x02\x02\u106A\u106C\x05" +
		"\u0204\u0103\x02\u106B\u106A\x03\x02\x02\x02\u106B\u106C\x03\x02\x02\x02" +
		"\u106C\u106D\x03\x02\x02\x02\u106D\u106E\x07@\x02\x02\u106E\u106F\x05" +
		"\u0194\xCB\x02\u106F\u1070\x07\u014D\x02\x02\u1070\u1072\x05\u059E\u02D0" +
		"\x02\u1071\u1073\x05\u0170\xB9\x02\u1072\u1071\x03\x02\x02\x02\u1072\u1073" +
		"\x03\x02\x02\x02\u1073\u0193\x03\x02\x02\x02\u1074\u1077\x05\u05C0\u02E1" +
		"\x02\u1075\u1077\x07e\x02\x02\u1076\u1074\x03\x02\x02\x02\u1076\u1075" +
		"\x03\x02\x02\x02\u1077\u0195\x03\x02\x02\x02\u1078\u1079\x07\x8C\x02\x02" +
		"\u1079\u107A\x07e\x02\x02\u107A\u107B\x07\u0103\x02\x02\u107B\u107C\x07" +
		"@\x02\x02\u107C\u107D\x05\u0194\xCB\x02\u107D\u107E\x07\u014D\x02\x02" +
		"\u107E\u107F\x05\u059E\u02D0\x02\u107F\u1080\x05\u0174\xBB\x02\u1080\u0197" +
		"\x03\x02\x02\x02\u1081\u1082\x070\x02\x02\u1082\u1083\x07\u01BF\x02\x02" +
		"\u1083\u1084\x05\u059E\u02D0\x02\u1084\u1085\x07R\x02\x02\u1085\u1087" +
		"\x05\u0586\u02C4\x02\u1086\u1088\x05\u01AA\xD6\x02\u1087\u1086\x03\x02" +
		"\x02\x02\u1087\u1088\x03\x02\x02\x02\u1088\u108A\x03\x02\x02\x02\u1089" +
		"\u108B\x05\u01AC\xD7\x02\u108A\u1089\x03\x02\x02\x02\u108A\u108B\x03\x02" +
		"\x02\x02\u108B\u108D\x03\x02\x02\x02\u108C\u108E\x05\u01A6\xD4\x02\u108D" +
		"\u108C\x03\x02\x02\x02\u108D\u108E\x03\x02\x02\x02\u108E\u1090\x03\x02" +
		"\x02\x02\u108F\u1091\x05\u01A2\xD2\x02\u1090\u108F\x03\x02\x02\x02\u1090" +
		"\u1091\x03\x02\x02\x02\u1091\u1093\x03\x02\x02\x02\u1092\u1094\x05\u01A4" +
		"\xD3\x02\u1093\u1092\x03\x02\x02\x02\u1093\u1094\x03\x02\x02\x02\u1094" +
		"\u0199\x03\x02\x02\x02\u1095\u1096\x07\x8C\x02\x02\u1096\u1097\x07\u01BF" +
		"\x02\x02\u1097\u1098\x05\u059E\u02D0\x02\u1098\u1099\x07R\x02\x02\u1099" +
		"\u109B\x05\u0586\u02C4\x02\u109A\u109C\x05\u01A8\xD5\x02\u109B\u109A\x03" +
		"\x02\x02\x02\u109B\u109C\x03\x02\x02\x02\u109C\u109E\x03\x02\x02\x02\u109D" +
		"\u109F\x05\u01A2\xD2\x02\u109E\u109D\x03\x02\x02\x02\u109E\u109F\x03\x02" +
		"\x02\x02\u109F\u10A1\x03\x02\x02\x02\u10A0\u10A2\x05\u01A4\xD3\x02\u10A1" +
		"\u10A0\x03\x02\x02\x02\u10A1\u10A2\x03\x02\x02\x02\u10A2\u019B\x03\x02" +
		"\x02\x02\u10A3\u10A4\x07\x8C\x02\x02\u10A4\u10A5\x07\u012A\x02\x02\u10A5" +
		"\u10A7\x05\u0596\u02CC\x02\u10A6\u10A8\x05\u0296\u014C\x02\u10A7\u10A6" +
		"\x03\x02\x02\x02\u10A7\u10A8\x03\x02\x02\x02\u10A8\u10A9\x03\x02\x02\x02" +
		"\u10A9\u10AA\x05\u019E\xD0\x02\u10AA\u019D\x03\x02\x02\x02\u10AB\u10AF" +
		"\x05\u01A0\xD1\x02\u10AC\u10AE\x05\u01A0\xD1\x02\u10AD\u10AC\x03\x02\x02" +
		"\x02\u10AE\u10B1\x03\x02\x02\x02\u10AF\u10AD\x03\x02\x02\x02\u10AF\u10B0" +
		"\x03\x02\x02\x02\u10B0\u10B3\x03\x02\x02\x02\u10B1\u10AF\x03\x02\x02\x02" +
		"\u10B2\u10B4\x07\u013D\x02\x02\u10B3\u10B2\x03\x02\x02\x02\u10B3\u10B4" +
		"\x03\x02\x02\x02\u10B4\u10C6\x03\x02\x02\x02\u10B5\u10B6\x07\u0137\x02" +
		"\x02\u10B6\u10B7\x07`\x02\x02\u10B7\u10C6\x05\u0598\u02CD\x02\u10B8\u10B9" +
		"\x07\u011C\x02\x02\u10B9\u10BA\x07`\x02\x02\u10BA\u10C6\x05\u05C0\u02E1" +
		"\x02\u10BB\u10BC\x07\u014F\x02\x02\u10BC\u10BD\x07\u0145\x02\x02\u10BD" +
		"\u10C6\x052\x1A\x02\u10BE\u10C0\x07\u010F\x02\x02\u10BF\u10BE\x03\x02" +
		"\x02\x02\u10BF\u10C0\x03\x02\x02\x02\u10C0\u10C1\x03\x02\x02\x02\u10C1" +
		"\u10C2\x07\u01D0\x02\x02\u10C2\u10C3\x07R\x02\x02\u10C3\u10C4\x07\xCE" +
		"\x02\x02\u10C4\u10C6\x05\u059E\u02D0\x02\u10C5\u10AB\x03\x02\x02\x02\u10C5" +
		"\u10B5\x03\x02\x02\x02\u10C5\u10B8\x03\x02\x02\x02\u10C5\u10BB\x03\x02" +
		"\x02\x02\u10C5\u10BF\x03\x02\x02\x02\u10C6\u019F\x03\x02\x02\x02\u10C7" +
		"\u10C9\x07\xCF\x02\x02\u10C8\u10C7\x03\x02\x02\x02\u10C8\u10C9\x03\x02" +
		"\x02\x02\u10C9\u10CA\x03\x02\x02\x02\u10CA\u10CB\x07\u0149\x02\x02\u10CB" +
		"\u10D2\x07\xF5\x02\x02\u10CC\u10CE\x07\xCF\x02\x02\u10CD\u10CC\x03\x02" +
		"\x02\x02\u10CD\u10CE\x03\x02\x02\x02\u10CE\u10CF\x03\x02\x02\x02\u10CF" +
		"\u10D0\x07\u0149\x02\x02\u10D0\u10D2\x07\xB7\x02\x02\u10D1\u10C8\x03\x02" +
		"\x02\x02\u10D1\u10CD\x03\x02\x02\x02\u10D2\u10E4\x03\x02\x02\x02\u10D3" +
		"\u10D4\x07\u014F\x02\x02\u10D4\u10D5\x05\u059E\u02D0\x02\u10D5\u10D8\t" +
		"\x1D\x02\x02\u10D6\u10D9\x05\u059E\u02D0\x02\u10D7\u10D9\x077\x02\x02" +
		"\u10D8\u10D6\x03\x02\x02\x02\u10D8\u10D7\x03\x02\x02\x02\u10D9\u10E4\x03" +
		"\x02\x02\x02\u10DA\u10DB\x07\u014F\x02\x02\u10DB\u10DC\x05\u059E\u02D0" +
		"\x02\u10DC\u10DD\x07B\x02\x02\u10DD\u10DE\x07\u01B4\x02\x02\u10DE\u10E4" +
		"\x03\x02\x02\x02\u10DF\u10E0\x07\u013B\x02\x02\u10E0\u10E4\x05\u059E\u02D0" +
		"\x02\u10E1\u10E2\x07\u013B\x02\x02\u10E2\u10E4\x07 \x02\x02\u10E3\u10D1" +
		"\x03\x02\x02\x02\u10E3\u10D3\x03\x02\x02\x02\u10E3\u10DA\x03\x02\x02\x02" +
		"\u10E3\u10DF\x03\x02\x02\x02\u10E3\u10E1\x03\x02\x02\x02\u10E4\u01A1\x03" +
		"\x02\x02\x02\u10E5\u10E6\x07f\x02\x02\u10E6\u10E7\x07\x04\x02\x02\u10E7" +
		"\u10E8\x05\u04BE\u0260\x02\u10E8\u10E9\x07\x05\x02\x02\u10E9\u01A3\x03" +
		"\x02\x02\x02\u10EA\u10EB\x07k\x02\x02\u10EB\u10EC\x07,\x02\x02\u10EC\u10ED" +
		"\x07\x04\x02\x02\u10ED\u10EE\x05\u04BE\u0260\x02\u10EE\u10EF\x07\x05\x02" +
		"\x02\u10EF\u01A5\x03\x02\x02\x02\u10F0\u10F1\x07`\x02\x02\u10F1\u10F2" +
		"\x05\u05C2\u02E2\x02\u10F2\u01A7\x03\x02\x02\x02\u10F3\u10F4\x07`\x02" +
		"\x02\u10F4\u10F5\x05\u05C2\u02E2\x02\u10F5\u01A9\x03\x02\x02\x02\u10F6" +
		"\u10FA\x07&\x02\x02\u10F7\u10FB\x07\u021F\x02\x02\u10F8\u10FB\x07\u0220" +
		"\x02\x02\u10F9\u10FB\x05\u05D6\u02EC\x02\u10FA\u10F7\x03\x02\x02\x02\u10FA" +
		"\u10F8\x03\x02\x02\x02\u10FA\u10F9\x03\x02\x02\x02\u10FB\u01AB\x03\x02" +
		"\x02\x02\u10FC\u10FD\x07@\x02\x02\u10FD\u10FE\x05\u01AE\xD8\x02\u10FE" +
		"\u01AD\x03\x02\x02\x02\u10FF\u1100\t\x1E\x02\x02\u1100\u01AF\x03\x02\x02" +
		"\x02\u1101\u1102\x070\x02\x02\u1102\u1103\x07\x85\x02\x02\u1103\u1104" +
		"\x07\u01C0\x02\x02\u1104\u1105\x05\u059E\u02D0\x02\u1105\u1106\x07\u016A" +
		"\x02\x02\u1106\u1107\x05\u01B2\xDA\x02\u1107\u1108\x07\xD9\x02\x02\u1108" +
		"\u1109\x05\u014A\xA6\x02\u1109\u01B1\x03\x02\x02\x02\u110A\u110B\t\x1F" +
		"\x02\x02\u110B\u01B3\x03\x02\x02\x02\u110C\u110E\x070\x02\x02\u110D\u110F" +
		"\x05\u0294\u014B\x02\u110E\u110D\x03\x02\x02\x02\u110E\u110F\x03\x02\x02" +
		"\x02\u110F\u1110\x03\x02\x02\x02\u1110\u1111\x07\u0167\x02\x02\u1111\u1112" +
		"\x05\u059E\u02D0\x02\u1112\u1113\x05\u01B6\xDC\x02\u1113\u1114\x05\u01BC" +
		"\xDF\x02\u1114\u1115\x07R\x02\x02\u1115\u1117\x05\u0580\u02C1\x02\u1116" +
		"\u1118\x05\u01C0\xE1\x02\u1117\u1116\x03\x02\x02\x02\u1117\u1118\x03\x02" +
		"\x02\x02\u1118\u111A\x03\x02\x02\x02\u1119\u111B\x05\u01CC\xE7\x02\u111A" +
		"\u1119\x03\x02\x02\x02\u111A\u111B\x03\x02\x02\x02\u111B\u111D\x03\x02" +
		"\x02\x02\u111C\u111E\x05\u01D2\xEA\x02\u111D\u111C\x03\x02\x02\x02\u111D" +
		"\u111E\x03\x02\x02\x02\u111E\u111F\x03\x02\x02\x02\u111F\u1120\x07\xCC" +
		"\x02\x02\u1120\u1121\x05\u01D4\xEB\x02\u1121\u1122\x07\x04\x02\x02\u1122" +
		"\u1123\x05\u01D6\xEC\x02\u1123\u1124\x07\x05\x02\x02\u1124\u1143\x03\x02" +
		"\x02\x02\u1125\u1127\x070\x02\x02\u1126\u1128\x05\u0294\u014B\x02\u1127" +
		"\u1126\x03\x02\x02\x02\u1127\u1128\x03\x02\x02\x02\u1128\u112A\x03\x02" +
		"\x02\x02\u1129\u112B\x07/\x02\x02\u112A\u1129\x03\x02\x02\x02\u112A\u112B" +
		"\x03\x02\x02\x02\u112B\u112C\x03\x02\x02\x02\u112C\u112D\x07\u0167\x02" +
		"\x02\u112D\u112E\x05\u059E\u02D0\x02\u112E\u112F\x05\u01B6\xDC\x02\u112F" +
		"\u1130\x05\u01BC\xDF\x02\u1130\u1131\x07R\x02\x02\u1131\u1133\x05\u0580" +
		"\u02C1\x02\u1132\u1134\x05\u01DA\xEE\x02\u1133\u1132\x03\x02\x02\x02\u1133" +
		"\u1134\x03\x02\x02\x02\u1134\u1135\x03\x02\x02\x02\u1135\u1137\x05\u01DC" +
		"\xEF\x02\u1136\u1138\x05\u01B8\xDD\x02\u1137\u1136\x03\x02\x02\x02\u1137" +
		"\u1138\x03\x02\x02\x02\u1138\u113A\x03\x02\x02\x02\u1139\u113B\x05\u01D2" +
		"\xEA\x02\u113A\u1139\x03\x02\x02\x02\u113A\u113B\x03\x02\x02\x02\u113B" +
		"\u113C\x03\x02\x02\x02\u113C\u113D\x07\xCC\x02\x02\u113D\u113E\x05\u01D4" +
		"\xEB\x02\u113E\u113F\x07\x04\x02\x02\u113F\u1140\x05\u01D6\xEC\x02\u1140" +
		"\u1141\x07\x05\x02\x02\u1141\u1143\x03\x02\x02\x02\u1142\u110C\x03\x02" +
		"\x02\x02\u1142\u1125\x03\x02\x02\x02\u1143\u01B5\x03\x02\x02\x02\u1144" +
		"\u1149\x07\x93\x02\x02\u1145\u1149\x07\x89\x02\x02\u1146\u1147\x07\xF4" +
		"\x02\x02\u1147\u1149\x07\u0115\x02\x02\u1148\u1144\x03\x02\x02\x02\u1148" +
		"\u1145\x03\x02\x02\x02\u1148\u1146\x03\x02\x02\x02\u1149\u01B7\x03\x02" +
		"\x02\x02\u114A\u114C\x07@\x02\x02\u114B\u114D\x07\xC2\x02\x02\u114C\u114B" +
		"\x03\x02\x02\x02\u114C\u114D\x03\x02\x02\x02\u114D\u114E\x03\x02\x02\x02" +
		"\u114E\u114F\x05\u01BA\xDE\x02\u114F\u01B9\x03\x02\x02\x02\u1150\u1151" +
		"\t \x02\x02\u1151\u01BB\x03\x02\x02\x02\u1152\u1157\x05\u01BE\xE0\x02" +
		"\u1153\u1154\x07T\x02\x02\u1154\u1156\x05\u01BE\xE0\x02\u1155\u1153\x03" +
		"\x02\x02\x02\u1156\u1159\x03\x02\x02\x02\u1157\u1155\x03\x02\x02\x02\u1157" +
		"\u1158\x03\x02\x02\x02\u1158\u01BD\x03\x02\x02\x02\u1159\u1157\x03\x02" +
		"\x02\x02\u115A\u1162\x07\xF3\x02\x02\u115B\u1162\x07\xB8\x02\x02\u115C" +
		"\u1162\x07\u0173\x02\x02\u115D\u115E\x07\u0173\x02\x02\u115E\u115F\x07" +
		"\u0115\x02\x02\u115F\u1162\x05\xF6|\x02\u1160\u1162\x07\u0168\x02\x02" +
		"\u1161\u115A\x03\x02\x02\x02\u1161\u115B\x03\x02\x02\x02\u1161\u115C\x03" +
		"\x02\x02\x02\u1161\u115D\x03\x02\x02\x02\u1161\u1160\x03\x02\x02\x02\u1162" +
		"\u01BF\x03\x02\x02\x02\u1163\u1164\x07\u01C1\x02\x02\u1164\u1165\x05\u01C2" +
		"\xE2\x02\u1165\u01C1\x03\x02\x02\x02\u1166\u1168\x05\u01C4\xE3\x02\u1167" +
		"\u1166\x03\x02\x02\x02\u1168\u1169\x03\x02\x02\x02\u1169\u1167\x03\x02" +
		"\x02\x02\u1169\u116A\x03\x02\x02\x02\u116A\u01C3\x03\x02\x02\x02\u116B" +
		"\u116C\x05\u01C6\xE4\x02\u116C\u116E\x05\u01C8\xE5\x02\u116D\u116F\x05" +
		"\u036C\u01B7\x02\u116E\u116D\x03\x02\x02\x02\u116E\u116F\x03\x02\x02\x02" +
		"\u116F\u1170\x03\x02\x02\x02\u1170\u1171\x05\u01CA\xE6\x02\u1171\u01C5" +
		"\x03\x02\x02\x02\u1172\u1173\t!\x02\x02\u1173\u01C7\x03\x02\x02\x02\u1174" +
		"\u1175\t\"\x02\x02\u1175\u01C9\x03\x02\x02\x02\u1176\u1177\x05\u05C4\u02E3" +
		"\x02\u1177\u01CB\x03\x02\x02\x02\u1178\u117A\x07@\x02\x02\u1179\u117B" +
		"\x05\u01CE\xE8\x02\u117A\u1179\x03\x02\x02\x02\u117A\u117B\x03\x02\x02" +
		"\x02\u117B\u117C\x03\x02\x02\x02\u117C\u117D\x05\u01D0\xE9\x02\u117D\u01CD" +
		"\x03\x02\x02\x02\u117E\u117F\x07\xC2\x02\x02\u117F\u01CF\x03\x02\x02\x02" +
		"\u1180\u1181\t \x02\x02\u1181\u01D1\x03\x02\x02\x02\u1182\u1183\x07h\x02" +
		"\x02\u1183\u1184\x07\x04\x02\x02\u1184\u1185\x05\u04BE\u0260\x02\u1185" +
		"\u1186\x07\x05\x02\x02\u1186\u01D3\x03\x02\x02\x02\u1187\u1188\x07\xD5" +
		"\x02\x02\u1188\u118C\x05\u05A6\u02D4\x02\u1189\u118A\x07\u012A\x02\x02" +
		"\u118A\u118C\x05\u0596\u02CC\x02\u118B\u1187\x03\x02\x02\x02\u118B\u1189" +
		"\x03\x02\x02\x02\u118C\u01D5\x03\x02\x02\x02\u118D\u1190\x05\u01D8\xED" +
		"\x02\u118E\u1190\x03\x02\x02\x02\u118F\u118D\x03\x02\x02\x02\u118F\u118E" +
		"\x03\x02\x02\x02\u1190\u1195\x03\x02\x02\x02\u1191\u1192\x07\b\x02\x02" +
		"\u1192\u1194\x05\u01D8\xED\x02\u1193\u1191\x03\x02\x02\x02\u1194\u1197" +
		"\x03\x02\x02\x02\u1195\u1193\x03\x02\x02\x02\u1195\u1196\x03\x02\x02\x02" +
		"\u1196\u01D7\x03\x02\x02\x02\u1197\u1195\x03\x02\x02\x02\u1198\u119D\x05" +
		"\u05B2\u02DA\x02\u1199\u119D\x05\u05B0\u02D9\x02\u119A\u119D\x05\u05B4" +
		"\u02DB\x02\u119B\u119D\x05\u05D4\u02EB\x02\u119C\u1198\x03\x02\x02\x02" +
		"\u119C\u1199\x03\x02\x02\x02\u119C\u119A\x03\x02\x02\x02\u119C\u119B\x03" +
		"\x02\x02\x02\u119D\u01D9\x03\x02\x02\x02\u119E\u119F\x07B\x02\x02\u119F" +
		"\u11A0\x05\u0586\u02C4\x02\u11A0\u01DB\x03\x02\x02\x02\u11A1\u11A3\x05" +
		"\u01DE\xF0\x02\u11A2\u11A1\x03\x02\x02\x02\u11A3\u11A6\x03\x02\x02\x02" +
		"\u11A4\u11A2\x03\x02\x02\x02\u11A4\u11A5\x03\x02\x02\x02\u11A5\u01DD\x03" +
		"\x02\x02\x02\u11A6\u11A4\x03\x02\x02\x02\u11A7\u11A8\x07O\x02\x02\u11A8" +
		"\u11B3\x078\x02\x02\u11A9\u11B3\x078\x02\x02\u11AA\u11AB\x07G\x02\x02" +
		"\u11AB\u11B3\x07\xDF\x02\x02\u11AC\u11AD\x07G\x02\x02\u11AD\u11B3\x07" +
		"\xB6\x02\x02\u11AE\u11AF\x07O\x02\x02\u11AF\u11B3\x07\u0175\x02\x02\u11B0" +
		"\u11B1\x07\u010F\x02\x02\u11B1\u11B3\x07\xE6\x02\x02\u11B2\u11A7\x03\x02" +
		"\x02\x02\u11B2\u11A9\x03\x02\x02\x02\u11B2\u11AA\x03\x02\x02\x02\u11B2" +
		"\u11AC\x03\x02\x02\x02\u11B2\u11AE\x03\x02\x02\x02\u11B2\u11B0\x03\x02" +
		"\x02\x02\u11B3\u01DF\x03\x02\x02\x02\u11B4\u11B5\x070\x02\x02\u11B5\u11B6" +
		"\x07\xC8\x02\x02\u11B6\u11B7\x07\u0167\x02\x02\u11B7\u11B8\x05\u059E\u02D0" +
		"\x02\u11B8\u11B9\x07R\x02\x02\u11B9\u11BA\x05\u05D4\u02EB\x02\u11BA\u11BB" +
		"\x07\xCC\x02\x02\u11BB\u11BC\x05\u01D4\xEB\x02\u11BC\u11BD\x07\x04\x02" +
		"\x02\u11BD\u11BE\x07\x05\x02\x02\u11BE\u11CD\x03\x02\x02\x02\u11BF\u11C0" +
		"\x070\x02\x02\u11C0\u11C1\x07\xC8\x02\x02\u11C1\u11C2\x07\u0167\x02\x02" +
		"\u11C2\u11C3\x05\u059E\u02D0\x02\u11C3\u11C4\x07R\x02\x02\u11C4\u11C5" +
		"\x05\u05D4\u02EB\x02\u11C5\u11C6\x07h\x02\x02\u11C6\u11C7\x05\u01E2\xF2" +
		"\x02\u11C7\u11C8\x07\xCC\x02\x02\u11C8\u11C9\x05\u01D4\xEB\x02\u11C9\u11CA" +
		"\x07\x04\x02\x02\u11CA\u11CB\x07\x05\x02\x02\u11CB\u11CD\x03\x02\x02\x02" +
		"\u11CC\u11B4\x03\x02\x02\x02\u11CC\u11BF\x03\x02\x02\x02\u11CD\u01E1\x03" +
		"\x02\x02\x02\u11CE\u11D3\x05\u01E4\xF3\x02\u11CF\u11D0\x07#\x02\x02\u11D0" +
		"\u11D2\x05\u01E4\xF3\x02\u11D1\u11CF\x03\x02\x02\x02\u11D2\u11D5\x03\x02" +
		"\x02\x02\u11D3\u11D1\x03\x02\x02\x02\u11D3\u11D4\x03\x02\x02\x02\u11D4" +
		"\u01E3\x03\x02\x02\x02\u11D5\u11D3\x03\x02\x02\x02\u11D6\u11D7\x05\u05C4" +
		"\u02E3\x02\u11D7\u11D8\x07F\x02\x02\u11D8\u11D9\x07\x04\x02\x02\u11D9" +
		"\u11DA\x05\u01E6\xF4\x02\u11DA\u11DB\x07\x05\x02\x02\u11DB\u01E5\x03\x02" +
		"\x02\x02\u11DC\u11E1\x05\u05B4\u02DB\x02\u11DD\u11DE\x07\b\x02\x02\u11DE" +
		"\u11E0\x05\u05B4\u02DB\x02\u11DF\u11DD\x03\x02\x02\x02\u11E0\u11E3\x03" +
		"\x02\x02\x02\u11E1\u11DF\x03\x02\x02\x02\u11E1\u11E2\x03\x02\x02\x02\u11E2" +
		"\u01E7\x03\x02\x02\x02\u11E3\u11E1\x03\x02\x02\x02\u11E4\u11E5\x07\x8C" +
		"\x02\x02\u11E5\u11E6\x07\xC8\x02\x02\u11E6\u11E7\x07\u0167\x02\x02\u11E7" +
		"\u11E8\x05\u059E\u02D0\x02\u11E8\u11E9\x05\u01EA\xF6\x02\u11E9\u01E9\x03" +
		"\x02\x02\x02\u11EA\u11F1\x07\xC3\x02\x02\u11EB\u11EC\x07\xC3\x02\x02\u11EC" +
		"\u11F1\x07\u013A\x02\x02\u11ED\u11EE\x07\xC3\x02\x02\u11EE\u11F1\x07\x8D" +
		"\x02\x02\u11EF\u11F1\x07\xBC\x02\x02\u11F0\u11EA\x03\x02\x02\x02\u11F0" +
		"\u11EB\x03\x02\x02\x02\u11F0\u11ED\x03\x02\x02\x02\u11F0\u11EF\x03\x02" +
		"\x02\x02\u11F1\u01EB\x03\x02\x02\x02\u11F2\u11F3\x070\x02\x02\u11F3\u11F4" +
		"\x07\x8E\x02\x02\u11F4\u11F5\x05\u0230\u0119\x02\u11F5\u11F6\x07,\x02" +
		"\x02\u11F6\u11F7\x07\x04\x02\x02\u11F7\u11F8\x05\u04BE\u0260\x02\u11F8" +
		"\u11F9\x07\x05\x02\x02\u11F9\u11FA\x05\u01DC\xEF\x02\u11FA\u01ED\x03\x02" +
		"\x02\x02\u11FB\u11FD\x070\x02\x02\u11FC\u11FE\x05\u0294\u014B\x02\u11FD" +
		"\u11FC\x03\x02\x02\x02\u11FD\u11FE\x03\x02\x02\x02\u11FE\u11FF\x03\x02" +
		"\x02\x02\u11FF\u1200\x07\x8A\x02\x02\u1200\u1201\x05\u05A6\u02D4\x02\u1201" +
		"\u1202\x05\u02B8\u015D\x02\u1202\u1203\x05\u01F0\xF9\x02\u1203\u1263\x03" +
		"\x02\x02\x02\u1204\u1206\x070\x02\x02\u1205\u1207\x05\u0294\u014B\x02" +
		"\u1206\u1205\x03\x02\x02\x02\u1206\u1207\x03\x02\x02\x02\u1207\u1208\x03" +
		"\x02\x02\x02\u1208\u1209\x07\x8A\x02\x02\u1209\u120A\x05\u05A6\u02D4\x02" +
		"\u120A\u120B\x05\u01F8\xFD\x02\u120B\u1263\x03\x02\x02\x02\u120C\u120D" +
		"\x070\x02\x02\u120D\u120E\x07\u0118\x02\x02\u120E\u120F\x05\u02DE\u0170" +
		"\x02\u120F\u1210\x05\u01F0\xF9\x02\u1210\u1263\x03\x02\x02\x02\u1211\u1212" +
		"\x070\x02\x02\u1212\u1213\x07\u016A\x02\x02\u1213\u1214\x05\u0230\u0119" +
		"\x02\u1214\u1215\x05\u01F0\xF9\x02\u1215\u1263\x03\x02\x02\x02\u1216\u1217" +
		"\x070\x02\x02\u1217\u1218\x07\u016A\x02\x02\u1218\u1263\x05\u0230\u0119" +
		"\x02\u1219\u121A\x070\x02\x02\u121A\u121B\x07\u016A\x02\x02\u121B\u121C" +
		"\x05\u0230\u0119\x02\u121C\u121D\x07&\x02\x02\u121D\u121F\x07\x04\x02" +
		"\x02\u121E\u1220\x05\u047E\u0240\x02\u121F\u121E\x03\x02\x02\x02\u121F" +
		"\u1220\x03\x02\x02\x02\u1220\u1221\x03\x02\x02\x02\u1221\u1222\x07\x05" +
		"\x02\x02\u1222\u1263\x03\x02\x02\x02\u1223\u1224\x070\x02\x02\u1224\u1225" +
		"\x07\u016A\x02\x02\u1225\u1226\x05\u0230\u0119\x02\u1226\u1227\x07&\x02" +
		"\x02\u1227\u1228\x07\xC6\x02\x02\u1228\u122A\x07\x04\x02\x02\u1229\u122B" +
		"\x05\u01FE\u0100\x02\u122A\u1229\x03\x02\x02\x02\u122A\u122B\x03\x02\x02" +
		"\x02\u122B\u122C\x03\x02\x02\x02\u122C\u122D\x07\x05\x02\x02\u122D\u1263" +
		"\x03\x02\x02\x02\u122E\u122F\x070\x02\x02\u122F\u1230\x07\u016A\x02\x02" +
		"\u1230\u1231\x05\u0230\u0119\x02\u1231\u1232\x07&\x02\x02\u1232\u1233" +
		"\x07\u012D\x02\x02\u1233\u1234\x05\u01F0\xF9\x02\u1234\u1263\x03\x02\x02" +
		"\x02\u1235\u1236\x070\x02\x02\u1236\u1237\x07\u0165\x02\x02\u1237\u1238" +
		"\x07\u0147\x02\x02\u1238\u1239\x07\u011D\x02\x02\u1239\u123A\x05\u0230" +
		"\u0119\x02\u123A\u123B\x05\u01F0\xF9\x02\u123B\u1263\x03\x02\x02\x02\u123C" +
		"\u123D\x070\x02\x02\u123D\u123E\x07\u0165\x02\x02\u123E\u123F\x07\u0147" +
		"\x02\x02\u123F\u1240\x07\xBB\x02\x02\u1240\u1241\x05\u0230\u0119\x02\u1241" +
		"\u1242\x05\u01F0\xF9\x02\u1242\u1263\x03\x02\x02\x02\u1243\u1244\x070" +
		"\x02\x02\u1244\u1245\x07\u0165\x02\x02\u1245\u1246\x07\u0147\x02\x02\u1246" +
		"\u1247\x07\u0163\x02\x02\u1247\u1248\x05\u0230\u0119\x02\u1248\u1249\x05" +
		"\u01F0\xF9\x02\u1249\u1263\x03\x02\x02\x02\u124A\u124B\x070\x02\x02\u124B" +
		"\u124C\x07\u0165\x02\x02\u124C\u124D\x07\u0147\x02\x02\u124D\u124E\x07" +
		"\xA5\x02\x02\u124E\u124F\x05\u0230\u0119\x02\u124F\u1250\x05\u01F0\xF9" +
		"\x02\u1250\u1263\x03\x02\x02\x02\u1251\u1252\x070\x02\x02\u1252\u1254" +
		"\x07n\x02\x02\u1253\u1255\x05\u0204\u0103\x02\u1254\u1253\x03\x02\x02" +
		"\x02\u1254\u1255\x03\x02\x02\x02\u1255\u1256\x03\x02\x02\x02\u1256\u1257" +
		"\x05\u0230\u0119\x02\u1257\u1258\x05\u01F0\xF9\x02\u1258\u1263\x03\x02" +
		"\x02\x02\u1259\u125A\x070\x02\x02\u125A\u125C\x07n\x02\x02\u125B\u125D" +
		"\x05\u0204\u0103\x02\u125C\u125B\x03\x02\x02\x02\u125C\u125D\x03\x02\x02" +
		"\x02\u125D\u125E\x03\x02\x02\x02\u125E\u125F\x05\u0230\u0119\x02\u125F" +
		"\u1260\x07B\x02\x02\u1260\u1261\x05\u0230\u0119\x02\u1261\u1263\x03\x02" +
		"\x02\x02\u1262\u11FB\x03\x02\x02\x02\u1262\u1204\x03\x02\x02\x02\u1262" +
		"\u120C\x03\x02\x02\x02\u1262\u1211\x03\x02\x02\x02\u1262\u1216\x03\x02" +
		"\x02\x02\u1262\u1219\x03\x02\x02\x02\u1262\u1223\x03\x02\x02\x02\u1262" +
		"\u122E\x03\x02\x02\x02\u1262\u1235\x03\x02\x02\x02\u1262\u123C\x03\x02" +
		"\x02\x02\u1262\u1243\x03\x02\x02\x02\u1262\u124A\x03\x02\x02\x02\u1262" +
		"\u1251\x03\x02\x02\x02\u1262\u1259\x03\x02\x02\x02\u1263\u01EF\x03\x02" +
		"\x02\x02\u1264\u1265\x07\x04\x02\x02\u1265\u1266\x05\u01F2\xFA\x02\u1266" +
		"\u1267\x07\x05\x02\x02\u1267\u01F1\x03\x02";
	private static readonly _serializedATNSegment11: string =
		"\x02\x02\u1268\u126D\x05\u01F4\xFB\x02\u1269\u126A\x07\b\x02\x02\u126A" +
		"\u126C\x05\u01F4\xFB\x02\u126B\u1269\x03\x02\x02\x02\u126C\u126F\x03\x02" +
		"\x02\x02\u126D\u126B\x03\x02\x02\x02\u126D\u126E\x03\x02\x02\x02\u126E" +
		"\u01F3\x03\x02\x02\x02\u126F\u126D\x03\x02\x02\x02\u1270\u1273\x05\u05D4" +
		"\u02EB\x02\u1271\u1272\x07\f\x02\x02\u1272\u1274\x05\u01F6\xFC\x02\u1273" +
		"\u1271\x03\x02\x02\x02\u1273\u1274\x03\x02\x02\x02\u1274\u01F5\x03\x02" +
		"\x02\x02\u1275\u127C\x05\u02B2\u015A\x02\u1276\u127C\x05\u05E0\u02F1\x02" +
		"\u1277\u127C\x05\u052E\u0298\x02\u1278\u127C\x05\u0142\xA2\x02\u1279\u127C" +
		"\x05\u05B4\u02DB\x02\u127A\u127C\x07\u0199\x02\x02\u127B\u1275\x03\x02" +
		"\x02\x02\u127B\u1276\x03\x02\x02\x02\u127B\u1277\x03\x02\x02\x02\u127B" +
		"\u1278\x03\x02\x02\x02\u127B\u1279\x03\x02\x02\x02\u127B\u127A\x03\x02" +
		"\x02\x02\u127C\u01F7\x03\x02\x02\x02\u127D\u127E\x07\x04\x02\x02\u127E" +
		"\u127F\x05\u01FA\xFE\x02\u127F\u1280\x07\x05\x02\x02\u1280\u01F9\x03\x02" +
		"\x02\x02\u1281\u1286\x05\u01FC\xFF\x02\u1282\u1283\x07\b\x02\x02\u1283" +
		"\u1285\x05\u01FC\xFF\x02\u1284\u1282\x03\x02\x02\x02\u1285\u1288\x03\x02" +
		"\x02\x02\u1286\u1284\x03\x02\x02\x02\u1286\u1287\x03\x02\x02\x02\u1287" +
		"\u01FB\x03\x02\x02\x02\u1288\u1286\x03\x02\x02\x02\u1289\u128A\x05\u05D6" +
		"\u02EC\x02\u128A\u128B\x07\f\x02\x02\u128B\u128C\x05\u01F6\xFC\x02\u128C" +
		"\u01FD\x03\x02\x02\x02\u128D\u128E\x05\u0200\u0101\x02\u128E\u01FF\x03" +
		"\x02\x02\x02\u128F\u1294\x05\u05B4\u02DB\x02\u1290\u1291\x07\b\x02\x02" +
		"\u1291\u1293\x05\u05B4\u02DB\x02\u1292\u1290\x03\x02\x02\x02\u1293\u1296" +
		"\x03\x02\x02\x02\u1294\u1292\x03\x02\x02\x02\u1294\u1295\x03\x02\x02\x02" +
		"\u1295\u0201\x03\x02\x02\x02\u1296\u1294\x03\x02\x02\x02\u1297\u1298\x07" +
		"\x8C\x02\x02\u1298\u1299\x07\u016A\x02\x02\u1299\u129A\x05\u0230\u0119" +
		"\x02\u129A\u129B\x07\x87\x02\x02\u129B\u129D\x07\u01C4\x02\x02\u129C\u129E" +
		"\x05\u0204\u0103\x02\u129D\u129C\x03\x02\x02\x02\u129D\u129E\x03\x02\x02" +
		"\x02\u129E\u129F\x03\x02\x02\x02\u129F\u12A0\x05\u05B4\u02DB\x02\u12A0" +
		"\u12C3\x03\x02\x02\x02\u12A1\u12A2\x07\x8C\x02\x02\u12A2\u12A3\x07\u016A" +
		"\x02\x02\u12A3\u12A4\x05\u0230\u0119\x02\u12A4\u12A5\x07\x87\x02\x02\u12A5" +
		"\u12A7\x07\u01C4\x02\x02\u12A6\u12A8\x05\u0204\u0103\x02\u12A7\u12A6\x03" +
		"\x02\x02\x02\u12A7\u12A8\x03\x02\x02\x02\u12A8\u12A9\x03\x02\x02\x02\u12A9" +
		"\u12AA\x05\u05B4\u02DB\x02\u12AA\u12AB\x07\x93\x02\x02\u12AB\u12AC\x05" +
		"\u05B4\u02DB\x02\u12AC\u12C3\x03\x02\x02\x02\u12AD\u12AE\x07\x8C\x02\x02" +
		"\u12AE\u12AF\x07\u016A\x02\x02\u12AF\u12B0\x05\u0230\u0119\x02\u12B0\u12B1" +
		"\x07\x87\x02\x02\u12B1\u12B3\x07\u01C4\x02\x02\u12B2\u12B4\x05\u0204\u0103" +
		"\x02\u12B3\u12B2\x03\x02\x02\x02\u12B3\u12B4\x03\x02\x02\x02\u12B4\u12B5" +
		"\x03\x02\x02\x02\u12B5\u12B6\x05\u05B4\u02DB\x02\u12B6\u12B7\x07\x89\x02" +
		"\x02\u12B7\u12B8\x05\u05B4\u02DB\x02\u12B8\u12C3\x03\x02\x02\x02\u12B9" +
		"\u12BA\x07\x8C\x02\x02\u12BA\u12BB\x07\u016A\x02\x02\u12BB\u12BC\x05\u0230" +
		"\u0119\x02\u12BC\u12BD\x07\u0137\x02\x02\u12BD\u12BE\x07\u01C4\x02\x02" +
		"\u12BE\u12BF\x05\u05B4\u02DB\x02\u12BF\u12C0\x07`\x02\x02\u12C0\u12C1" +
		"\x05\u05B4\u02DB\x02\u12C1\u12C3\x03\x02\x02\x02\u12C2\u1297\x03\x02\x02" +
		"\x02\u12C2\u12A1\x03\x02\x02\x02\u12C2\u12AD\x03\x02\x02\x02\u12C2\u12B9" +
		"\x03\x02\x02\x02\u12C3\u0203\x03\x02\x02\x02\u12C4\u12C5\x07\xDE\x02\x02" +
		"\u12C5\u12C6\x07O\x02\x02\u12C6\u12C7\x07\u018E\x02\x02\u12C7\u0205\x03" +
		"\x02\x02\x02\u12C8\u12C9\x070\x02\x02\u12C9\u12CA\x07\u0118\x02\x02\u12CA" +
		"\u12CB\x07\x9E\x02\x02\u12CB\u12CD\x05\u0230\u0119\x02\u12CC\u12CE\x05" +
		"\u020C\u0107\x02\u12CD\u12CC\x03\x02\x02\x02\u12CD\u12CE\x03\x02\x02\x02" +
		"\u12CE\u12CF\x03\x02\x02\x02\u12CF\u12D0\x07@\x02\x02\u12D0\u12D1\x07" +
		"\u016A\x02\x02\u12D1\u12D2\x05\u0492\u024A\x02\u12D2\u12D3\x07f\x02\x02" +
		"\u12D3\u12D5\x05\u059E\u02D0\x02\u12D4\u12D6\x05\u020E\u0108\x02\u12D5" +
		"\u12D4\x03\x02\x02\x02\u12D5\u12D6\x03\x02\x02\x02\u12D6\u12D7\x03\x02" +
		"\x02\x02\u12D7\u12D8\x07&\x02\x02\u12D8\u12D9\x05\u0208\u0105\x02\u12D9" +
		"\u0207\x03\x02\x02\x02\u12DA\u12DF\x05\u020A\u0106\x02\u12DB\u12DC\x07" +
		"\b\x02\x02\u12DC\u12DE\x05\u020A\u0106\x02\u12DD\u12DB\x03\x02\x02\x02" +
		"\u12DE\u12E1\x03\x02\x02\x02\u12DF\u12DD\x03\x02\x02\x02\u12DF\u12E0\x03" +
		"\x02\x02\x02\u12E0\u0209\x03\x02\x02\x02\u12E1\u12DF\x03\x02\x02\x02\u12E2" +
		"\u12E3\x07\u0118\x02\x02\u12E3\u12E4\x05\u05B2\u02DA\x02\u12E4\u12E6\x05" +
		"\u02DE\u0170\x02\u12E5\u12E7\x05\u0210\u0109\x02\u12E6\u12E5\x03\x02\x02" +
		"\x02\u12E6\u12E7\x03\x02\x02\x02\u12E7\u12E9\x03\x02\x02\x02\u12E8\u12EA" +
		"\x05\u0212\u010A\x02\u12E9\u12E8\x03\x02\x02\x02\u12E9\u12EA\x03\x02\x02" +
		"\x02\u12EA\u1302\x03\x02\x02\x02\u12EB\u12EC\x07\u0118\x02\x02\u12EC\u12ED" +
		"\x05\u05B2\u02DA\x02\u12ED\u12EF\x05\u02E2\u0172\x02\u12EE\u12F0\x05\u0210" +
		"\u0109\x02\u12EF\u12EE\x03\x02\x02\x02\u12EF\u12F0\x03\x02\x02\x02\u12F0" +
		"\u12F2\x03\x02\x02\x02\u12F1\u12F3\x05\u0212\u010A\x02\u12F2\u12F1\x03" +
		"\x02\x02\x02\u12F2\u12F3\x03\x02\x02\x02\u12F3\u1302\x03\x02\x02\x02\u12F4" +
		"\u12F5\x07\xD5\x02\x02\u12F5\u12F6\x05\u05B2\u02DA\x02\u12F6\u12F7\x05" +
		"\u02A4\u0153\x02\u12F7\u1302\x03\x02\x02\x02\u12F8\u12F9\x07\xD5\x02\x02" +
		"\u12F9\u12FA\x05\u05B2\u02DA\x02\u12FA\u12FB\x07\x04\x02\x02\u12FB\u12FC" +
		"\x05\u0540\u02A1\x02\u12FC\u12FD\x07\x05\x02\x02\u12FD\u12FE\x05\u02A4" +
		"\u0153\x02\u12FE\u1302\x03\x02\x02\x02\u12FF\u1300\x07\u015B\x02\x02\u1300" +
		"\u1302\x05\u0492\u024A\x02\u1301\u12E2\x03\x02\x02\x02\u1301\u12EB\x03" +
		"\x02\x02\x02\u1301\u12F4\x03\x02\x02\x02\u1301\u12F8\x03\x02\x02\x02\u1301" +
		"\u12FF\x03\x02\x02\x02\u1302\u020B\x03\x02\x02\x02\u1303\u1304\x077\x02" +
		"\x02\u1304\u020D\x03\x02\x02\x02\u1305\u1306\x07\xD0\x02\x02\u1306\u1307" +
		"\x05\u0230\u0119\x02\u1307\u020F\x03\x02\x02\x02\u1308\u1309\x07@\x02" +
		"\x02\u1309\u130F\x07\u0147\x02\x02\u130A\u130B\x07@\x02\x02\u130B\u130C" +
		"\x07U\x02\x02\u130C\u130D\x07\x95\x02\x02\u130D\u130F\x05\u0230\u0119" +
		"\x02\u130E\u1308\x03\x02\x02\x02\u130E\u130A\x03\x02\x02\x02\u130F\u0211" +
		"\x03\x02\x02\x02\u1310\u1311\x07\u0130\x02\x02\u1311\u0213\x03\x02\x02" +
		"\x02\u1312\u1313\x070\x02\x02\u1313\u1314\x07\u0118\x02\x02\u1314\u1315" +
		"\x07\xD0\x02\x02\u1315\u1316\x05\u0230\u0119\x02\u1316\u1317\x07f\x02" +
		"\x02\u1317\u1318\x05\u059E\u02D0\x02\u1318\u0215\x03\x02\x02\x02\u1319" +
		"\u131A\x07\x8C\x02\x02\u131A\u131B\x07\u0118\x02\x02\u131B\u131C\x07\xD0" +
		"\x02\x02\u131C\u131D\x05\u0230\u0119\x02\u131D\u131E\x07f\x02\x02\u131E" +
		"\u131F\x05\u059E\u02D0\x02\u131F\u1320\x07\x87\x02\x02\u1320\u1321\x05" +
		"\u0208\u0105\x02\u1321\u132C\x03\x02\x02\x02\u1322\u1323\x07\x8C\x02\x02" +
		"\u1323\u1324\x07\u0118\x02\x02\u1324\u1325\x07\xD0\x02\x02\u1325\u1326" +
		"\x05\u0230\u0119\x02\u1326\u1327\x07f\x02\x02\u1327\u1328\x05\u059E\u02D0" +
		"\x02\u1328\u1329\x07\xC1\x02\x02\u1329\u132A\x05\u0218\u010D\x02\u132A" +
		"\u132C\x03\x02\x02\x02\u132B\u1319\x03\x02\x02\x02\u132B\u1322\x03\x02" +
		"\x02\x02\u132C\u0217\x03\x02\x02\x02\u132D\u1332\x05\u021A\u010E\x02\u132E" +
		"\u132F\x07\b\x02\x02\u132F\u1331\x05\u021A\u010E\x02\u1330\u132E\x03\x02" +
		"\x02\x02\u1331\u1334\x03\x02\x02\x02\u1332\u1330\x03\x02\x02\x02\u1332" +
		"\u1333\x03\x02\x02\x02\u1333\u0219\x03\x02\x02\x02\u1334\u1332\x03\x02" +
		"\x02\x02\u1335\u1336\x07\u0118\x02\x02\u1336\u1337\x05\u05B2\u02DA\x02" +
		"\u1337\u1338\x07\x04\x02\x02\u1338\u1339\x05\u0540\u02A1\x02\u1339\u133A" +
		"\x07\x05\x02\x02\u133A\u1342\x03\x02\x02\x02\u133B\u133C\x07\xD5\x02\x02" +
		"\u133C\u133D\x05\u05B2\u02DA\x02\u133D\u133E\x07\x04\x02\x02\u133E\u133F" +
		"\x05\u0540\u02A1\x02\u133F\u1340\x07\x05\x02\x02\u1340\u1342\x03\x02\x02" +
		"\x02\u1341\u1335\x03\x02\x02\x02\u1341\u133B\x03\x02\x02\x02\u1342\u021B" +
		"\x03\x02\x02\x02\u1343\u1344\x07\u012F\x02\x02\u1344\u1345\x07\u011B\x02" +
		"\x02\u1345\u1346\x07\x95\x02\x02\u1346\u1347\x05\u05C2\u02E2\x02\u1347" +
		"\u1348\x07`\x02\x02\u1348\u1349\x05\u05C0\u02E1\x02\u1349\u021D\x03\x02" +
		"\x02\x02\u134A\u134B\x07\xC1\x02\x02\u134B\u134D\x07^\x02\x02\u134C\u134E" +
		"\x05\u02EE\u0178\x02\u134D\u134C\x03\x02\x02\x02\u134D\u134E\x03\x02\x02" +
		"\x02\u134E\u134F\x03\x02\x02\x02\u134F\u1351\x05\u0572\u02BA\x02\u1350" +
		"\u1352\x05~@\x02\u1351\u1350\x03\x02\x02\x02\u1351\u1352\x03\x02\x02\x02" +
		"\u1352\u14C6\x03\x02\x02\x02\u1353\u1354\x07\xC1\x02\x02\u1354\u1356\x07" +
		"\u014A\x02\x02\u1355\u1357\x05\u02EE\u0178\x02\u1356\u1355\x03\x02\x02" +
		"\x02\u1356\u1357\x03\x02\x02\x02\u1357\u1358\x03\x02\x02\x02\u1358\u135A" +
		"\x05\u058A\u02C6\x02\u1359\u135B\x05~@\x02\u135A\u1359\x03\x02\x02\x02" +
		"\u135A\u135B\x03\x02\x02\x02\u135B\u14C6\x03\x02\x02\x02\u135C\u135D\x07" +
		"\xC1\x02\x02\u135D\u135F\x07\u017A\x02\x02\u135E\u1360\x05\u02EE\u0178" +
		"\x02\u135F\u135E\x03\x02\x02\x02\u135F\u1360\x03\x02\x02\x02\u1360\u1361" +
		"\x03\x02\x02\x02\u1361\u1363\x05\u0220\u0111\x02\u1362\u1364\x05~@\x02" +
		"\u1363\u1362\x03\x02\x02\x02\u1363\u1364\x03\x02\x02\x02\u1364\u14C6\x03" +
		"\x02\x02\x02\u1365\u1366\x07\xC1\x02\x02\u1366\u1367\x07\u0105\x02\x02" +
		"\u1367\u1369\x07\u017A\x02\x02\u1368\u136A\x05\u02EE\u0178\x02\u1369\u1368" +
		"\x03\x02\x02\x02\u1369\u136A\x03\x02\x02\x02\u136A\u136B\x03\x02\x02\x02" +
		"\u136B\u136D\x05\u0220\u0111\x02\u136C\u136E\x05~@\x02\u136D\u136C\x03" +
		"\x02\x02\x02\u136D\u136E\x03\x02\x02\x02\u136E\u14C6\x03\x02\x02\x02\u136F" +
		"\u1370\x07\xC1\x02\x02\u1370\u1372\x07\xE4\x02\x02\u1371\u1373\x05\u02EE" +
		"\u0178\x02\u1372\u1371\x03\x02\x02\x02\u1372\u1373\x03\x02\x02\x02\u1373" +
		"\u1374\x03\x02\x02\x02\u1374\u1376\x05\u058A\u02C6\x02\u1375\u1377\x05" +
		"~@\x02\u1376\u1375\x03\x02\x02\x02\u1376\u1377\x03\x02\x02\x02\u1377\u14C6" +
		"\x03\x02\x02\x02\u1378\u1379\x07\xC1\x02\x02\u1379\u137A\x07A\x02\x02" +
		"\u137A\u137C\x07^\x02\x02\u137B\u137D\x05\u02EE\u0178\x02\u137C\u137B" +
		"\x03\x02\x02\x02\u137C\u137D\x03\x02\x02\x02\u137D\u137E\x03\x02\x02\x02" +
		"\u137E\u1380\x05\u0572\u02BA\x02\u137F\u1381\x05~@\x02\u1380\u137F\x03" +
		"\x02\x02\x02\u1380\u1381\x03\x02\x02\x02\u1381\u14C6\x03\x02\x02\x02\u1382" +
		"\u1383\x07\xC1\x02\x02\u1383\u1385\x07n\x02\x02\u1384\u1386\x05\u02EE" +
		"\u0178\x02\u1385\u1384\x03\x02\x02\x02\u1385\u1386\x03\x02\x02\x02\u1386" +
		"\u1387\x03\x02\x02\x02\u1387\u1389\x05\u058A\u02C6\x02\u1388\u138A\x05" +
		"~@\x02\u1389\u1388\x03\x02\x02\x02\u1389\u138A\x03\x02\x02\x02\u138A\u14C6" +
		"\x03\x02\x02\x02\u138B\u138C\x07\xC1\x02\x02\u138C\u138E\x07\xAA\x02\x02" +
		"\u138D\u138F\x05\u02EE\u0178\x02\u138E\u138D\x03\x02\x02\x02\u138E\u138F" +
		"\x03\x02\x02\x02\u138F\u1390\x03\x02\x02\x02\u1390\u1392\x05\u058A\u02C6" +
		"\x02\u1391\u1393\x05~@\x02\u1392\u1391\x03\x02\x02\x02\u1392\u1393\x03" +
		"\x02\x02\x02\u1393\u14C6\x03\x02\x02\x02\u1394\u1395\x07\xC1\x02\x02\u1395" +
		"\u1397\x07\u0158\x02\x02\u1396\u1398\x05\u02EE\u0178\x02\u1397\u1396\x03" +
		"\x02\x02\x02\u1397\u1398\x03\x02\x02\x02\u1398\u1399\x03\x02\x02\x02\u1399" +
		"\u139B\x05\u058A\u02C6\x02\u139A\u139C\x05~@\x02\u139B\u139A\x03\x02\x02" +
		"\x02\u139B\u139C\x03\x02\x02\x02\u139C\u14C6\x03\x02\x02\x02\u139D\u139E" +
		"\x07\xC1\x02\x02\u139E\u139F\x07\u0165\x02\x02\u139F\u13A0\x07\u0147\x02" +
		"\x02\u13A0\u13A2\x07\u011D\x02\x02\u13A1\u13A3\x05\u02EE\u0178\x02\u13A2" +
		"\u13A1\x03\x02\x02\x02\u13A2\u13A3\x03\x02\x02\x02\u13A3\u13A4\x03\x02" +
		"\x02\x02\u13A4\u13A6\x05\u058A\u02C6\x02\u13A5\u13A7\x05~@\x02\u13A6\u13A5" +
		"\x03\x02\x02\x02\u13A6\u13A7\x03\x02\x02\x02\u13A7\u14C6\x03\x02\x02\x02" +
		"\u13A8\u13A9\x07\xC1\x02\x02\u13A9\u13AA\x07\u0165\x02\x02\u13AA\u13AB" +
		"\x07\u0147\x02\x02\u13AB\u13AD\x07\xBB\x02\x02\u13AC\u13AE\x05\u02EE\u0178" +
		"\x02\u13AD\u13AC\x03\x02\x02\x02\u13AD\u13AE\x03\x02\x02\x02\u13AE\u13AF" +
		"\x03\x02\x02\x02\u13AF\u13B1\x05\u058A\u02C6\x02\u13B0\u13B2\x05~@\x02" +
		"\u13B1\u13B0\x03\x02\x02\x02\u13B1\u13B2\x03\x02\x02\x02\u13B2\u14C6\x03" +
		"\x02\x02\x02\u13B3\u13B4\x07\xC1\x02\x02\u13B4\u13B5\x07\u0165\x02\x02" +
		"\u13B5\u13B6\x07\u0147\x02\x02\u13B6\u13B8\x07\u0163\x02\x02\u13B7\u13B9" +
		"\x05\u02EE\u0178\x02\u13B8\u13B7\x03\x02\x02\x02\u13B8\u13B9\x03\x02\x02" +
		"\x02\u13B9\u13BA\x03\x02\x02\x02\u13BA\u13BC\x05\u058A\u02C6\x02\u13BB" +
		"\u13BD\x05~@\x02\u13BC\u13BB\x03\x02\x02\x02\u13BC\u13BD\x03\x02\x02\x02" +
		"\u13BD\u14C6\x03\x02\x02\x02\u13BE\u13BF\x07\xC1\x02\x02\u13BF\u13C0\x07" +
		"\u0165\x02\x02\u13C0\u13C1\x07\u0147\x02\x02\u13C1\u13C3\x07\xA5\x02\x02" +
		"\u13C2\u13C4\x05\u02EE\u0178\x02\u13C3\u13C2\x03\x02\x02\x02\u13C3\u13C4" +
		"\x03\x02\x02\x02\u13C4\u13C5\x03\x02\x02\x02\u13C5\u13C7\x05\u058A\u02C6" +
		"\x02\u13C6\u13C8\x05~@\x02\u13C7\u13C6\x03\x02\x02\x02\u13C7\u13C8\x03" +
		"\x02\x02\x02\u13C8\u14C6\x03\x02\x02\x02\u13C9\u13CA\x07\xC1\x02\x02\u13CA" +
		"\u13CB\x07\x85\x02\x02\u13CB\u13CD\x07\u01C0\x02\x02\u13CC\u13CE\x05\u02EE" +
		"\u0178\x02\u13CD\u13CC\x03\x02\x02\x02\u13CD\u13CE\x03\x02\x02\x02\u13CE" +
		"\u13CF\x03\x02\x02\x02\u13CF\u13D1\x05\u058A\u02C6\x02\u13D0\u13D2\x05" +
		"~@\x02\u13D1\u13D0\x03\x02\x02\x02\u13D1\u13D2\x03\x02\x02\x02\u13D2\u14C6" +
		"\x03\x02\x02\x02\u13D3\u13D4\x07\xC1\x02\x02\u13D4\u13D5\x07\xC8\x02\x02" +
		"\u13D5\u13D7\x07\u0167\x02\x02\u13D6\u13D8\x05\u02EE\u0178\x02\u13D7\u13D6" +
		"\x03\x02\x02\x02\u13D7\u13D8\x03\x02\x02\x02\u13D8\u13D9\x03\x02\x02\x02" +
		"\u13D9\u13DB\x05\u058A\u02C6\x02\u13DA\u13DC\x05~@\x02\u13DB\u13DA\x03" +
		"\x02\x02\x02\u13DB\u13DC\x03\x02\x02\x02\u13DC\u14C6\x03\x02\x02\x02\u13DD" +
		"\u13DE\x07\xC1\x02\x02\u13DE\u13E0\x07\xCE\x02\x02\u13DF\u13E1\x05\u02EE" +
		"\u0178\x02\u13E0\u13DF\x03\x02\x02\x02\u13E0\u13E1\x03\x02\x02\x02\u13E1" +
		"\u13E2\x03\x02\x02\x02\u13E2\u13E4\x05\u058A\u02C6\x02\u13E3\u13E5\x05" +
		"~@\x02\u13E4\u13E3\x03\x02\x02\x02\u13E4\u13E5\x03\x02\x02\x02\u13E5\u14C6" +
		"\x03\x02\x02\x02\u13E6\u13E7\x07\xC1\x02\x02\u13E7\u13E8\x07A\x02\x02" +
		"\u13E8\u13E9\x07\xB0\x02\x02\u13E9\u13EB\x07\u017F\x02\x02\u13EA\u13EC" +
		"\x05\u02EE\u0178\x02\u13EB\u13EA\x03\x02\x02\x02\u13EB\u13EC\x03\x02\x02" +
		"\x02\u13EC\u13ED\x03\x02\x02\x02\u13ED\u13EF\x05\u058A\u02C6\x02\u13EE" +
		"\u13F0\x05~@\x02\u13EF\u13EE\x03\x02\x02\x02\u13EF\u13F0\x03\x02\x02\x02" +
		"\u13F0\u14C6\x03\x02\x02\x02\u13F1\u13F3\x07\xC1\x02\x02\u13F2\u13F4\x05" +
		"\u0152\xAA\x02\u13F3\u13F2\x03\x02\x02\x02\u13F3\u13F4\x03\x02\x02\x02" +
		"\u13F4\u13F5\x03\x02\x02\x02\u13F5\u13F7\x07\xF9\x02\x02\u13F6\u13F8\x05" +
		"\u02EE\u0178\x02\u13F7\u13F6\x03\x02\x02\x02\u13F7\u13F8\x03\x02\x02\x02" +
		"\u13F8\u13F9\x03\x02\x02\x02\u13F9\u13FB\x05\u058A\u02C6\x02\u13FA\u13FC" +
		"\x05~@\x02\u13FB\u13FA\x03\x02\x02\x02\u13FB\u13FC\x03\x02\x02\x02\u13FC" +
		"\u14C6\x03\x02\x02\x02\u13FD\u13FE\x07\xC1\x02\x02\u13FE\u1400\x07\u01C6" +
		"\x02\x02\u13FF\u1401\x05\u02EE\u0178\x02\u1400\u13FF\x03\x02\x02\x02\u1400" +
		"\u1401\x03\x02\x02\x02\u1401\u1402\x03\x02\x02\x02\u1402\u1404\x05\u058A" +
		"\u02C6\x02\u1403\u1405\x05~@\x02\u1404\u1403\x03\x02\x02\x02\u1404\u1405" +
		"\x03\x02\x02\x02\u1405\u14C6\x03\x02\x02\x02\u1406\u1407\x07\xC1\x02\x02" +
		"\u1407\u1409\x07\u014D\x02\x02\u1408\u140A\x05\u02EE\u0178\x02\u1409\u1408" +
		"\x03\x02\x02\x02\u1409\u140A\x03\x02\x02\x02\u140A\u140B\x03\x02\x02\x02" +
		"\u140B\u140D\x05\u058A\u02C6\x02\u140C\u140E\x05~@\x02\u140D\u140C\x03" +
		"\x02\x02\x02\u140D\u140E\x03\x02\x02\x02\u140E\u14C6\x03\x02\x02\x02\u140F" +
		"\u1410\x07\xC1\x02\x02\u1410\u1412\x07\u0145\x02\x02\u1411\u1413\x05\u02EE" +
		"\u0178\x02\u1412\u1411\x03\x02\x02\x02\u1412\u1413\x03\x02\x02\x02\u1413" +
		"\u1414\x03\x02\x02\x02\u1414\u1416\x05\u0574\u02BB\x02\u1415\u1417\x05" +
		"~@\x02\u1416\u1415\x03\x02\x02\x02\u1416\u1417\x03\x02\x02\x02\u1417\u14C6" +
		"\x03\x02\x02\x02\u1418\u1419\x07\xC1\x02\x02\u1419\u141B\x07\u01BF\x02" +
		"\x02\u141A\u141C\x05\u02EE\u0178\x02\u141B\u141A\x03\x02\x02\x02\u141B" +
		"\u141C\x03\x02\x02\x02\u141C\u141D\x03\x02\x02\x02\u141D\u141E\x05\u059E" +
		"\u02D0\x02\u141E\u141F\x07R\x02\x02\u141F\u1421\x05\u0230\u0119\x02\u1420" +
		"\u1422\x05~@\x02\u1421\u1420\x03\x02\x02\x02\u1421\u1422\x03\x02\x02\x02" +
		"\u1422\u14C6\x03\x02\x02\x02\u1423\u1424\x07\xC1\x02\x02\u1424\u1426\x07" +
		"\u0143\x02\x02\u1425\u1427\x05\u02EE\u0178\x02\u1426\u1425\x03\x02\x02" +
		"\x02\u1426\u1427\x03\x02\x02\x02\u1427\u1428\x03\x02\x02\x02\u1428\u1429" +
		"\x05\u059E\u02D0\x02\u1429\u142A\x07R\x02\x02\u142A\u142C\x05\u0230\u0119" +
		"\x02\u142B\u142D\x05~@\x02\u142C\u142B\x03\x02\x02\x02\u142C\u142D\x03" +
		"\x02\x02\x02\u142D\u14C6\x03\x02\x02\x02\u142E\u142F\x07\xC1\x02\x02\u142F" +
		"\u1431\x07\u0167\x02\x02\u1430\u1432\x05\u02EE\u0178\x02\u1431\u1430\x03" +
		"\x02\x02\x02\u1431\u1432\x03\x02\x02\x02\u1432\u1433\x03\x02\x02\x02\u1433" +
		"\u1434\x05\u059E\u02D0\x02\u1434\u1435\x07R\x02\x02\u1435\u1437\x05\u0230" +
		"\u0119\x02\u1436\u1438\x05~@\x02\u1437\u1436\x03\x02\x02\x02\u1437\u1438" +
		"\x03\x02\x02\x02\u1438\u14C6\x03\x02\x02\x02\u1439\u143A\x07\xC1\x02\x02" +
		"\u143A\u143C\x07\u016A\x02\x02\u143B\u143D\x05\u02EE\u0178\x02\u143C\u143B" +
		"\x03\x02\x02\x02\u143C\u143D\x03\x02\x02\x02\u143D\u143E\x03\x02\x02\x02" +
		"\u143E\u1440\x05\u0234\u011B\x02\u143F\u1441\x05~@\x02\u1440\u143F\x03" +
		"\x02\x02\x02\u1440\u1441\x03\x02\x02\x02\u1441\u14C6\x03\x02\x02\x02\u1442" +
		"\u1443\x07\xC1\x02\x02\u1443\u1445\x07\xBF\x02\x02\u1444\u1446\x05\u02EE" +
		"\u0178\x02\u1445\u1444\x03\x02\x02\x02\u1445\u1446\x03\x02\x02\x02\u1446" +
		"\u1447\x03\x02\x02\x02\u1447\u1449\x05\u0234\u011B\x02\u1448\u144A\x05" +
		"~@\x02\u1449\u1448\x03\x02\x02\x02\u1449\u144A\x03\x02\x02\x02\u144A\u14C6" +
		"\x03\x02\x02\x02\u144B\u144C\x07\xC1\x02\x02\u144C\u144D\x07\xE4\x02\x02" +
		"\u144D\u144F\x07o\x02\x02\u144E\u1450\x05\u02EE\u0178\x02\u144F\u144E" +
		"\x03\x02\x02\x02\u144F\u1450\x03\x02\x02\x02\u1450\u1451\x03\x02\x02\x02" +
		"\u1451\u1453\x05\u0228\u0115\x02\u1452\u1454\x05~@\x02\u1453\u1452\x03" +
		"\x02\x02\x02\u1453\u1454\x03\x02\x02\x02\u1454\u14C6\x03\x02\x02\x02\u1455" +
		"\u1456\x07\xC1\x02\x02\u1456\u1458\x07+\x02\x02\u1457\u1459\x05\u02EE" +
		"\u0178\x02\u1458\u1457\x03\x02\x02\x02\u1458\u1459\x03\x02\x02\x02\u1459" +
		"\u145A\x03\x02\x02\x02\u145A\u145B\x07\x04\x02\x02\u145B\u145C\x05\u0492" +
		"\u024A\x02\u145C\u145D\x07&\x02\x02\u145D\u145E\x05\u0492\u024A\x02\u145E" +
		"\u1460\x07\x05\x02\x02\u145F\u1461\x05~@\x02\u1460\u145F\x03\x02\x02\x02" +
		"\u1460\u1461\x03\x02\x02\x02\u1461\u14C6\x03\x02\x02\x02\u1462\u1463\x07" +
		"\xC1\x02\x02\u1463\u1464\x07\u0118\x02\x02\u1464\u1466\x07\x9E\x02\x02" +
		"\u1465\u1467\x05\u02EE\u0178\x02\u1466\u1465\x03\x02\x02\x02\u1466\u1467" +
		"\x03\x02\x02\x02\u1467\u1468\x03\x02\x02\x02\u1468\u1469\x05\u0230\u0119" +
		"\x02\u1469\u146A\x07f\x02\x02\u146A\u146C\x05\u059E\u02D0\x02\u146B\u146D" +
		"\x05~@\x02\u146C\u146B\x03\x02\x02\x02\u146C\u146D\x03\x02\x02\x02\u146D" +
		"\u14C6\x03\x02\x02\x02\u146E\u146F\x07\xC1\x02\x02\u146F\u1470\x07\u0118" +
		"\x02\x02\u1470\u1472\x07\xD0\x02\x02\u1471\u1473\x05\u02EE\u0178\x02\u1472" +
		"\u1471\x03\x02\x02\x02\u1472\u1473\x03\x02\x02\x02\u1473\u1474\x03\x02" +
		"\x02\x02\u1474\u1475\x05\u0230\u0119\x02\u1475\u1476\x07f\x02\x02\u1476" +
		"\u1478\x05\u059E\u02D0\x02\u1477\u1479\x05~@\x02\u1478\u1477\x03\x02\x02" +
		"\x02\u1478\u1479\x03\x02\x02\x02\u1479\u14C6\x03\x02\x02\x02\u147A\u147B" +
		"\x07\xC1\x02\x02\u147B\u147C\x07\u011B\x02\x02\u147C\u147D\x07\x95\x02" +
		"\x02\u147D\u147F\x05\u05C2\u02E2\x02\u147E\u1480\x05~@\x02\u147F\u147E" +
		"\x03\x02\x02\x02\u147F\u1480\x03\x02\x02\x02\u1480\u14C6\x03\x02\x02\x02" +
		"\u1481\u1482\x07\xC1\x02\x02\u1482\u1484\x07\u017A\x02\x02\u1483\u1485" +
		"\x05\u02EE\u0178\x02\u1484\u1483\x03\x02\x02\x02\u1484\u1485\x03\x02\x02" +
		"\x02\u1485\u1486\x03\x02\x02\x02\u1486\u1488\x05\u0220\u0111\x02\u1487" +
		"\u1489\x05~@\x02\u1488\u1487\x03\x02\x02\x02\u1488\u1489\x03\x02\x02\x02" +
		"\u1489\u14C6\x03\x02\x02\x02\u148A\u148B\x07\xC1\x02\x02\u148B\u148D\x07" +
		"\u01C5\x02\x02\u148C\u148E\x05\u02EE\u0178\x02\u148D\u148C\x03\x02\x02" +
		"\x02\u148D\u148E\x03\x02\x02\x02\u148E\u148F\x03\x02\x02\x02\u148F\u1491" +
		"\x05\u059E\u02D0\x02\u1490\u1492\x05~@\x02\u1491\u1490\x03\x02\x02\x02" +
		"\u1491\u1492\x03\x02\x02\x02\u1492\u14C6\x03\x02\x02\x02\u1493\u1494\x07" +
		"\xC1\x02\x02\u1494\u1496\x07\u0161\x02\x02\u1495\u1497\x05\u02EE\u0178" +
		"\x02\u1496\u1495\x03\x02\x02\x02\u1496\u1497\x03\x02\x02\x02\u1497\u1498" +
		"\x03\x02\x02\x02\u1498\u14C6\x05\u057C\u02BF\x02\u1499\u149A\x07\xC1\x02" +
		"\x02\u149A\u149C\x07\u01BD\x02\x02\u149B\u149D\x05\u02EE\u0178\x02\u149C" +
		"\u149B\x03\x02\x02\x02\u149C\u149D\x03\x02\x02\x02\u149D\u149E\x03\x02" +
		"\x02\x02\u149E\u149F\x07@\x02\x02\u149F\u14A0\x05\u0492\u024A\x02\u14A0" +
		"\u14A1\x07\xF9\x02\x02\u14A1\u14A3\x05\u059E\u02D0\x02\u14A2\u14A4\x05" +
		"~@\x02\u14A3\u14A2\x03\x02\x02\x02\u14A3\u14A4\x03\x02\x02\x02\u14A4\u14C6" +
		"\x03\x02\x02\x02\u14A5\u14A6\x07\xC1\x02\x02\u14A6\u14A8\t#\x02\x02\u14A7" +
		"\u14A9\x05\u02EE\u0178\x02\u14A8\u14A7\x03\x02\x02\x02\u14A8\u14A9\x03" +
		"\x02\x02\x02\u14A9\u14AA\x03\x02\x02\x02\u14AA\u14C6\x05\u05C2\u02E2\x02" +
		"\u14AB\u14AC\x07\xC1\x02\x02\u14AC\u14AD\x07e\x02\x02\u14AD\u14AF\x07" +
		"\u0103\x02\x02\u14AE\u14B0\x05\u02EE\u0178\x02\u14AF\u14AE\x03\x02\x02" +
		"\x02\u14AF\u14B0\x03\x02\x02\x02\u14B0\u14B1\x03\x02\x02\x02\u14B1\u14B2" +
		"\x07@\x02\x02\u14B2\u14B3\x05\u0194\xCB\x02\u14B3\u14B4\x07\u014D\x02" +
		"\x02\u14B4\u14B5\x05\u059E\u02D0\x02\u14B5\u14C6\x03\x02\x02\x02\u14B6" +
		"\u14B7\x07\xC1\x02\x02\u14B7\u14B9\x07\xB1\x02\x02\u14B8\u14BA\x05\u02EE" +
		"\u0178\x02\u14B9\u14B8\x03\x02\x02\x02\u14B9\u14BA\x03\x02\x02\x02\u14BA" +
		"\u14BB\x03\x02\x02\x02\u14BB\u14C3\x05\u058E\u02C8\x02\u14BC\u14BE\x05" +
		"\x10\t\x02\u14BD\u14BC\x03\x02\x02\x02\u14BD\u14BE\x03\x02\x02\x02\u14BE" +
		"\u14BF\x03\x02\x02\x02\u14BF\u14C0\x07\x04\x02\x02\u14C0\u14C1\x05\u0360" +
		"\u01B1\x02\u14C1\u14C2\x07\x05\x02\x02\u14C2\u14C4\x03\x02\x02\x02\u14C3" +
		"\u14BD\x03\x02\x02\x02\u14C3\u14C4\x03\x02\x02\x02\u14C4\u14C6\x03\x02" +
		"\x02\x02\u14C5\u134A\x03\x02\x02\x02\u14C5\u1353\x03\x02\x02\x02\u14C5" +
		"\u135C\x03\x02\x02\x02\u14C5\u1365\x03\x02\x02\x02\u14C5\u136F\x03\x02" +
		"\x02\x02\u14C5\u1378\x03\x02\x02\x02\u14C5\u1382\x03\x02\x02\x02\u14C5" +
		"\u138B\x03\x02\x02\x02\u14C5\u1394\x03\x02\x02\x02\u14C5\u139D\x03\x02" +
		"\x02\x02\u14C5\u13A8\x03\x02\x02\x02\u14C5\u13B3\x03\x02\x02\x02\u14C5" +
		"\u13BE\x03\x02\x02\x02\u14C5\u13C9\x03\x02\x02\x02\u14C5\u13D3\x03\x02" +
		"\x02\x02\u14C5\u13DD\x03\x02\x02\x02\u14C5\u13E6\x03\x02\x02\x02\u14C5" +
		"\u13F1\x03\x02\x02\x02\u14C5\u13FD\x03\x02\x02\x02\u14C5\u1406\x03\x02" +
		"\x02\x02\u14C5\u140F\x03\x02\x02\x02\u14C5\u1418\x03\x02\x02\x02\u14C5" +
		"\u1423\x03\x02\x02\x02\u14C5\u142E\x03\x02\x02\x02\u14C5\u1439\x03\x02" +
		"\x02\x02\u14C5\u1442\x03\x02\x02\x02\u14C5\u144B\x03\x02\x02\x02\u14C5" +
		"\u1455\x03\x02\x02\x02\u14C5\u1462\x03\x02\x02\x02\u14C5\u146E\x03\x02" +
		"\x02\x02\u14C5\u147A\x03\x02\x02\x02\u14C5\u1481\x03\x02\x02\x02\u14C5" +
		"\u148A\x03\x02\x02\x02\u14C5\u1493\x03\x02\x02\x02\u14C5\u1499\x03\x02" +
		"\x02\x02\u14C5\u14A5\x03\x02\x02\x02\u14C5\u14AB\x03\x02\x02\x02\u14C5" +
		"\u14B6\x03\x02\x02\x02\u14C6\u021F\x03\x02\x02\x02\u14C7\u14CC\x05\u0584" +
		"\u02C3\x02\u14C8\u14C9\x07\b\x02\x02\u14C9\u14CB\x05\u0584\u02C3\x02\u14CA" +
		"\u14C8\x03\x02\x02\x02\u14CB\u14CE\x03\x02\x02\x02\u14CC\u14CA\x03\x02" +
		"\x02\x02\u14CC\u14CD\x03\x02\x02\x02\u14CD\u0221\x03\x02\x02\x02\u14CE" +
		"\u14CC\x03\x02\x02\x02\u14CF\u14D0\x07^\x02\x02\u14D0\u14F4\x05\u0580" +
		"\u02C1\x02\u14D1\u14D2\x07\u014A\x02\x02\u14D2\u14F4\x05\u0230\u0119\x02" +
		"\u14D3\u14D4\x07\u017A\x02\x02\u14D4\u14F4\x05\u0584\u02C3\x02\u14D5\u14D6" +
		"\x07\u0105\x02\x02\u14D6\u14D7\x07\u017A\x02\x02\u14D7\u14F4\x05\u0584" +
		"\u02C3\x02\u14D8\u14D9\x07\xE4\x02\x02\u14D9\u14F4\x05\u0230\u0119\x02" +
		"\u14DA\u14DB\x07A\x02\x02\u14DB\u14DC\x07^\x02\x02\u14DC\u14F4\x05\u0580" +
		"\u02C1\x02\u14DD\u14DE\x07n\x02\x02\u14DE\u14F4\x05\u0230\u0119\x02\u14DF" +
		"\u14E0\x07\xAA\x02\x02\u14E0\u14F4\x05\u0230\u0119\x02\u14E1\u14E2\x07" +
		"\u0158\x02\x02\u14E2\u14F4\x05\u0230\u0119\x02\u14E3\u14E4\x07\u0165\x02" +
		"\x02\u14E4\u14E5\x07\u0147\x02\x02\u14E5\u14E6\x07\u011D\x02\x02\u14E6" +
		"\u14F4\x05\u0230\u0119\x02\u14E7\u14E8\x07\u0165\x02\x02\u14E8\u14E9\x07" +
		"\u0147\x02\x02\u14E9\u14EA\x07\xBB\x02\x02\u14EA\u14F4\x05\u0230\u0119" +
		"\x02\u14EB\u14EC\x07\u0165\x02\x02\u14EC\u14ED\x07\u0147\x02\x02\u14ED" +
		"\u14EE\x07\u0163\x02\x02\u14EE\u14F4\x05\u0230\u0119\x02\u14EF\u14F0\x07" +
		"\u0165\x02\x02\u14F0\u14F1\x07\u0147\x02\x02\u14F1\u14F2\x07\xA5\x02\x02" +
		"\u14F2\u14F4\x05\u0230\u0119\x02\u14F3\u14CF\x03\x02\x02\x02\u14F3\u14D1" +
		"\x03\x02\x02\x02\u14F3\u14D3\x03\x02\x02\x02\u14F3\u14D5\x03\x02\x02\x02" +
		"\u14F3\u14D8\x03\x02\x02\x02\u14F3\u14DA\x03\x02\x02\x02\u14F3\u14DD\x03" +
		"\x02\x02\x02\u14F3\u14DF\x03\x02\x02\x02\u14F3\u14E1\x03\x02\x02\x02\u14F3" +
		"\u14E3\x03\x02\x02\x02\u14F3\u14E7\x03\x02\x02\x02\u14F3\u14EB\x03\x02" +
		"\x02\x02\u14F3\u14EF\x03\x02\x02\x02\u14F4\u0223\x03\x02\x02\x02\u14F5" +
		"\u14F6\x07\x85\x02\x02\u14F6\u14F7\x07\u01C0\x02\x02\u14F7\u1515\x05\u059E" +
		"\u02D0\x02\u14F8\u14F9\x07\xC8\x02\x02\u14F9\u14FA\x07\u0167\x02\x02\u14FA" +
		"\u1515\x05\u059E\u02D0\x02\u14FB\u14FC\x07\xCE\x02\x02\u14FC\u1515\x05" +
		"\u059E\u02D0\x02\u14FD\u14FE\x07A\x02\x02\u14FE\u14FF\x07\xB0\x02\x02" +
		"\u14FF\u1500\x07\u017F\x02\x02\u1500\u1515\x05\u059E\u02D0\x02\u1501\u1503" +
		"\x05\u0152\xAA\x02\u1502\u1501\x03\x02\x02\x02\u1502\u1503\x03\x02\x02" +
		"\x02\u1503\u1504\x03\x02\x02\x02\u1504\u1505\x07\xF9\x02\x02\u1505\u1515" +
		"\x05\u059E\u02D0\x02\u1506\u1507\x07\u01C6\x02\x02\u1507\u1515\x05\u059E" +
		"\u02D0\x02\u1508\u1509\x07\u0145\x02\x02\u1509\u1515\x05\u0590\u02C9\x02" +
		"\u150A\u150B\x07\u014D\x02\x02\u150B\u1515\x05\u059E\u02D0\x02\u150C\u150D" +
		"\x07\xB1\x02\x02\u150D\u1515\x05\u058E\u02C8\x02";
	private static readonly _serializedATNSegment12: string =
		"\u150E\u150F\x07\u0140\x02\x02\u150F\u1515\x05\u059E\u02D0\x02\u1510\u1511" +
		"\x07\u01C5\x02\x02\u1511\u1515\x05\u059E\u02D0\x02\u1512\u1513\x07\u0161" +
		"\x02\x02\u1513\u1515\x05\u057C\u02BF\x02\u1514\u14F5\x03\x02\x02\x02\u1514" +
		"\u14F8\x03\x02\x02\x02\u1514\u14FB\x03\x02\x02\x02\u1514\u14FD\x03\x02" +
		"\x02\x02\u1514\u1502\x03\x02\x02\x02\u1514\u1506\x03\x02\x02\x02\u1514" +
		"\u1508\x03\x02\x02\x02\u1514\u150A\x03\x02\x02\x02\u1514\u150C\x03\x02" +
		"\x02\x02\u1514\u150E\x03\x02\x02\x02\u1514\u1510\x03\x02\x02\x02\u1514" +
		"\u1512\x03\x02\x02\x02\u1515\u0225\x03\x02\x02\x02\u1516\u1517\t$\x02" +
		"\x02\u1517\u0227\x03\x02\x02\x02\u1518\u151D\x05\u0230\u0119\x02\u1519" +
		"\u151A\x07\b\x02\x02\u151A\u151C\x05\u0230\u0119\x02\u151B\u1519\x03\x02" +
		"\x02\x02\u151C\u151F\x03\x02\x02\x02\u151D\u151B\x03\x02\x02\x02\u151D" +
		"\u151E\x03\x02\x02\x02\u151E\u0229\x03\x02\x02\x02\u151F\u151D\x03\x02" +
		"\x02\x02\u1520\u1521\x05\u0580\u02C1\x02\u1521\u1522\x07\r\x02\x02\u1522" +
		"\u1523\x05\u059A\u02CE\x02\u1523\u022B\x03\x02\x02\x02\u1524\u1525\x05" +
		"\u022E\u0118\x02\u1525\u1526\x07\r\x02\x02\u1526\u1527\x05\u059A\u02CE" +
		"\x02\u1527\u022D\x03\x02\x02\x02\u1528\u152A\x05\u05C4\u02E3\x02\u1529" +
		"\u152B\x05\u0232\u011A\x02\u152A\u1529\x03\x02\x02\x02\u152A\u152B\x03" +
		"\x02\x02\x02\u152B\u022F\x03\x02\x02\x02\u152C\u152E\x05\u05C4\u02E3\x02" +
		"\u152D\u152F\x05\u0232\u011A\x02\u152E\u152D\x03\x02\x02\x02\u152E\u152F" +
		"\x03\x02\x02\x02\u152F\u0231\x03\x02\x02\x02\u1530\u1531\x07\r\x02\x02" +
		"\u1531\u1533\x05\u05A0\u02D1\x02\u1532\u1530\x03\x02\x02\x02\u1533\u1534" +
		"\x03\x02\x02\x02\u1534\u1532\x03\x02\x02\x02\u1534\u1535\x03\x02\x02\x02" +
		"\u1535\u0233\x03\x02\x02\x02\u1536\u153B\x05\u0492\u024A\x02\u1537\u1538" +
		"\x07\b\x02\x02\u1538\u153A\x05\u0492\u024A\x02\u1539\u1537\x03\x02\x02" +
		"\x02\u153A\u153D\x03\x02\x02\x02\u153B\u1539\x03\x02\x02\x02\u153B\u153C" +
		"\x03\x02\x02\x02\u153C\u0235\x03\x02\x02\x02\u153D\u153B\x03\x02\x02\x02" +
		"\u153E\u1540\x07\u0168\x02\x02\u153F\u1541\x05\u040E\u0208\x02\u1540\u153F" +
		"\x03\x02\x02\x02\u1540\u1541\x03\x02\x02\x02\u1541\u1542\x03\x02\x02\x02" +
		"\u1542\u1544\x05\u0466\u0234\x02\u1543\u1545\x05\u0238\u011D\x02\u1544" +
		"\u1543\x03\x02\x02\x02\u1544\u1545\x03\x02\x02\x02\u1545\u1547\x03\x02" +
		"\x02\x02\u1546\u1548\x05~@\x02\u1547\u1546\x03\x02\x02\x02\u1547\u1548" +
		"\x03\x02\x02\x02\u1548\u0237\x03\x02\x02\x02\u1549\u154A\x07\xA9\x02\x02" +
		"\u154A\u154E\x07\xDD\x02\x02\u154B\u154C\x07\u013C\x02\x02\u154C\u154E" +
		"\x07\xDD\x02\x02\u154D\u1549\x03\x02\x02\x02\u154D\u154B\x03\x02\x02\x02" +
		"\u154E\u0239\x03\x02\x02\x02\u154F\u1550\x07\xA1\x02\x02\u1550\u1551\x07" +
		"R\x02\x02\u1551\u1552\x05\u0222\u0112\x02\u1552\u1553\x07v\x02\x02\u1553" +
		"\u1554\x05\u023C\u011F\x02\u1554\u15F5\x03\x02\x02\x02\u1555\u1556\x07" +
		"\xA1\x02\x02\u1556\u1557\x07R\x02\x02\u1557\u1558\x07.\x02\x02\u1558\u1559" +
		"\x05\u022C\u0117\x02\u1559\u155A\x07v\x02\x02\u155A\u155B\x05\u023C\u011F" +
		"\x02\u155B\u15F5\x03\x02\x02\x02\u155C\u155D\x07\xA1\x02\x02\u155D\u155E" +
		"\x07R\x02\x02\u155E\u155F\x05\u0224\u0113\x02\u155F\u1560\x07v\x02\x02" +
		"\u1560\u1561\x05\u023C\u011F\x02\u1561\u15F5\x03\x02\x02\x02\u1562\u1563" +
		"\x07\xA1\x02\x02\u1563\u1564\x07R\x02\x02\u1564\u1565\x07\u016A\x02\x02" +
		"\u1565\u1566\x05\u0492\u024A\x02\u1566\u1567\x07v\x02\x02\u1567\u1568" +
		"\x05\u023C\u011F\x02\u1568\u15F5\x03\x02\x02\x02\u1569\u156A\x07\xA1\x02" +
		"\x02\u156A\u156B\x07R\x02\x02\u156B\u156C\x07\xBF\x02\x02\u156C\u156D" +
		"\x05\u0492\u024A\x02\u156D\u156E\x07v\x02\x02\u156E\u156F\x05\u023C\u011F" +
		"\x02\u156F\u15F5\x03\x02\x02\x02\u1570\u1571\x07\xA1\x02\x02\u1571\u1572" +
		"\x07R\x02\x02\u1572\u1573\x07\x8A\x02\x02\u1573\u1574\x05\u02BC\u015F" +
		"\x02\u1574\u1575\x07v\x02\x02\u1575\u1576\x05\u023C\u011F\x02\u1576\u15F5" +
		"\x03\x02\x02\x02\u1577\u1578\x07\xA1\x02\x02\u1578\u1579\x07R\x02\x02" +
		"\u1579\u157A\x07\xD5\x02\x02\u157A\u157B\x05\u02A4\u0153\x02\u157B\u157C" +
		"\x07v\x02\x02\u157C\u157D\x05\u023C\u011F\x02\u157D\u15F5\x03\x02\x02" +
		"\x02\u157E\u157F\x07\xA1\x02\x02\u157F\u1580\x07R\x02\x02\u1580\u1581" +
		"\x07\u0118\x02\x02\u1581\u1582\x05\u02E2\u0172\x02\u1582\u1583\x07v\x02" +
		"\x02\u1583\u1584\x05\u023C\u011F\x02\u1584\u15F5\x03\x02\x02\x02\u1585" +
		"\u1586\x07\xA1\x02\x02\u1586\u1587\x07R\x02\x02\u1587\u1588\x07/\x02\x02" +
		"\u1588\u1589\x05\u059E\u02D0\x02\u1589\u158A\x07R\x02\x02\u158A\u158B" +
		"\x05\u0580\u02C1\x02\u158B\u158C\x07v\x02\x02\u158C\u158D\x05\u023C\u011F" +
		"\x02\u158D\u15F5\x03\x02\x02\x02\u158E\u158F\x07\xA1\x02\x02\u158F\u1590" +
		"\x07R\x02\x02\u1590\u1591\x07/\x02\x02\u1591\u1592\x05\u059E\u02D0\x02" +
		"\u1592\u1594\x07R\x02\x02\u1593\u1595\x07\xBF\x02\x02\u1594\u1593\x03" +
		"\x02\x02\x02\u1594\u1595\x03\x02\x02\x02\u1595\u1596\x03\x02\x02\x02\u1596" +
		"\u1597\x05\u0230\u0119\x02\u1597\u1598\x07v\x02\x02\u1598\u1599\x05\u023C" +
		"\u011F\x02\u1599\u15F5\x03\x02\x02\x02\u159A\u159B\x07\xA1\x02\x02\u159B" +
		"\u159C\x07R\x02\x02\u159C\u159D\x07\u01BF\x02\x02\u159D\u159E\x05\u059E" +
		"\u02D0\x02\u159E\u159F\x07R\x02\x02\u159F\u15A0\x05\u0230\u0119\x02\u15A0" +
		"\u15A1\x07v\x02\x02\u15A1\u15A2\x05\u023C\u011F\x02\u15A2\u15F5\x03\x02" +
		"\x02\x02\u15A3\u15A4\x07\xA1\x02\x02\u15A4\u15A5\x07R\x02\x02\u15A5\u15A6" +
		"\x07\u0143\x02\x02\u15A6\u15A7\x05\u059E\u02D0\x02\u15A7\u15A8\x07R\x02" +
		"\x02\u15A8\u15A9\x05\u0230\u0119\x02\u15A9\u15AA\x07v\x02\x02\u15AA\u15AB" +
		"\x05\u023C\u011F\x02\u15AB\u15F5\x03\x02\x02\x02\u15AC\u15AD\x07\xA1\x02" +
		"\x02\u15AD\u15AE\x07R\x02\x02\u15AE\u15AF\x07\u0167\x02\x02\u15AF\u15B0" +
		"\x05\u059E\u02D0\x02\u15B0\u15B1\x07R\x02\x02\u15B1\u15B2\x05\u0230\u0119" +
		"\x02\u15B2\u15B3\x07v\x02\x02\u15B3\u15B4\x05\u023C\u011F\x02\u15B4\u15F5" +
		"\x03\x02\x02\x02\u15B5\u15B6\x07\xA1\x02\x02\u15B6\u15B7\x07R\x02\x02" +
		"\u15B7\u15B8\x07\u012A\x02\x02\u15B8\u15B9\x05\u02A0\u0151\x02\u15B9\u15BA" +
		"\x07v\x02\x02\u15BA\u15BB\x05\u023C\u011F\x02\u15BB\u15F5\x03\x02\x02" +
		"\x02\u15BC\u15BD\x07\xA1\x02\x02\u15BD\u15BE\x07R\x02\x02\u15BE\u15BF" +
		"\x07\u01BC\x02\x02\u15BF\u15C0\x05\u029C\u014F\x02\u15C0\u15C1\x07v\x02" +
		"\x02\u15C1\u15C2\x05\u023C\u011F\x02\u15C2\u15F5\x03\x02\x02\x02\u15C3" +
		"\u15C4\x07\xA1\x02\x02\u15C4\u15C5\x07R\x02\x02\u15C5\u15C6\x07\u01BD" +
		"\x02\x02\u15C6\u15C7\x07@\x02\x02\u15C7\u15C8\x05\u0492\u024A\x02\u15C8" +
		"\u15C9\x07\xF9\x02\x02\u15C9\u15CA\x05\u059E\u02D0\x02\u15CA\u15CB\x07" +
		"v\x02\x02\u15CB\u15CC\x05\u023C\u011F\x02\u15CC\u15F5\x03\x02\x02\x02" +
		"\u15CD\u15CE\x07\xA1\x02\x02\u15CE\u15CF\x07R\x02\x02\u15CF\u15D0\x07" +
		"\u0118\x02\x02\u15D0\u15D1\x07\x9E\x02\x02\u15D1\u15D2\x05\u0230\u0119" +
		"\x02\u15D2\u15D3\x07f\x02\x02\u15D3\u15D4\x05\u059E\u02D0\x02\u15D4\u15D5" +
		"\x07v\x02\x02\u15D5\u15D6\x05\u023C\u011F\x02\u15D6\u15F5\x03\x02\x02" +
		"\x02\u15D7\u15D8\x07\xA1\x02\x02\u15D8\u15D9\x07R\x02\x02\u15D9\u15DA" +
		"\x07\u0118\x02\x02\u15DA\u15DB\x07\xD0\x02\x02\u15DB\u15DC\x05\u0230\u0119" +
		"\x02\u15DC\u15DD\x07f\x02\x02\u15DD\u15DE\x05\u059E\u02D0\x02\u15DE\u15DF" +
		"\x07v\x02\x02\u15DF\u15E0\x05\u023C\u011F\x02\u15E0\u15F5\x03\x02\x02" +
		"\x02\u15E1\u15E2\x07\xA1\x02\x02\u15E2\u15E3\x07R\x02\x02\u15E3\u15E4" +
		"\x07\xFA\x02\x02\u15E4\u15E5\x07\u0114\x02\x02\u15E5\u15E6\x05\u0142\xA2" +
		"\x02\u15E6\u15E7\x07v\x02\x02\u15E7\u15E8\x05\u023C\u011F\x02\u15E8\u15F5" +
		"\x03\x02\x02\x02\u15E9\u15EA\x07\xA1\x02\x02\u15EA\u15EB\x07R\x02\x02" +
		"\u15EB\u15EC\x07+\x02\x02\u15EC\u15ED\x07\x04\x02\x02\u15ED\u15EE\x05" +
		"\u0492\u024A\x02\u15EE\u15EF\x07&\x02\x02\u15EF\u15F0\x05\u0492\u024A" +
		"\x02\u15F0\u15F1\x07\x05\x02\x02\u15F1\u15F2\x07v\x02\x02\u15F2\u15F3" +
		"\x05\u023C\u011F\x02\u15F3\u15F5\x03\x02\x02\x02\u15F4\u154F\x03\x02\x02" +
		"\x02\u15F4\u1555\x03\x02\x02\x02\u15F4\u155C\x03\x02\x02\x02\u15F4\u1562" +
		"\x03\x02\x02\x02\u15F4\u1569\x03\x02\x02\x02\u15F4\u1570\x03\x02\x02\x02" +
		"\u15F4\u1577\x03\x02\x02\x02\u15F4\u157E\x03\x02\x02\x02\u15F4\u1585\x03" +
		"\x02\x02\x02\u15F4\u158E\x03\x02\x02\x02\u15F4\u159A\x03\x02\x02\x02\u15F4" +
		"\u15A3\x03\x02\x02\x02\u15F4\u15AC\x03\x02\x02\x02\u15F4\u15B5\x03\x02" +
		"\x02\x02\u15F4\u15BC\x03\x02\x02\x02\u15F4\u15C3\x03\x02\x02\x02\u15F4" +
		"\u15CD\x03\x02\x02\x02\u15F4\u15D7\x03\x02\x02\x02\u15F4\u15E1\x03\x02" +
		"\x02\x02\u15F4\u15E9\x03\x02\x02\x02\u15F5\u023B\x03\x02\x02\x02\u15F6" +
		"\u15F9\x05\u05B4\u02DB\x02\u15F7\u15F9\x07P\x02\x02\u15F8\u15F6\x03\x02" +
		"\x02\x02\u15F8\u15F7\x03\x02\x02\x02\u15F9\u023D\x03\x02\x02\x02\u15FA" +
		"\u15FB\x07\u0149\x02\x02\u15FB\u15FD\x07\xF8\x02\x02\u15FC\u15FE\x05\u0240" +
		"\u0121\x02\u15FD\u15FC\x03\x02\x02\x02\u15FD\u15FE\x03\x02\x02\x02\u15FE" +
		"\u15FF\x03\x02\x02\x02\u15FF\u1600\x07R\x02\x02\u1600\u1601\x05\u0222" +
		"\u0112\x02\u1601\u1602\x07v\x02\x02\u1602\u1603\x05\u0242\u0122\x02\u1603" +
		"\u1668\x03\x02\x02\x02\u1604\u1605\x07\u0149\x02\x02\u1605\u1607\x07\xF8" +
		"\x02\x02\u1606\u1608\x05\u0240\u0121\x02\u1607\u1606\x03\x02\x02\x02\u1607" +
		"\u1608\x03\x02\x02\x02\u1608\u1609\x03\x02\x02\x02\u1609\u160A\x07R\x02" +
		"\x02\u160A\u160B\x07.\x02\x02\u160B\u160C\x05\u022A\u0116\x02\u160C\u160D" +
		"\x07v\x02\x02\u160D\u160E\x05\u0242\u0122\x02\u160E\u1668\x03\x02\x02" +
		"\x02\u160F\u1610\x07\u0149\x02\x02\u1610\u1612\x07\xF8\x02\x02\u1611\u1613" +
		"\x05\u0240\u0121\x02\u1612\u1611\x03\x02\x02\x02\u1612\u1613\x03\x02\x02" +
		"\x02\u1613\u1614\x03\x02\x02\x02\u1614\u1615\x07R\x02\x02\u1615\u1616" +
		"\x05\u0224\u0113\x02\u1616\u1617\x07v\x02\x02\u1617\u1618\x05\u0242\u0122" +
		"\x02\u1618\u1668\x03\x02\x02\x02\u1619\u161A\x07\u0149\x02\x02\u161A\u161C" +
		"\x07\xF8\x02\x02\u161B\u161D\x05\u0240\u0121\x02\u161C\u161B\x03\x02\x02" +
		"\x02\u161C\u161D\x03\x02\x02\x02\u161D\u161E\x03\x02\x02\x02\u161E\u161F" +
		"\x07R\x02\x02\u161F\u1620\x07\u016A\x02\x02\u1620\u1621\x05\u0492\u024A" +
		"\x02\u1621\u1622\x07v\x02\x02\u1622\u1623\x05\u0242\u0122\x02\u1623\u1668" +
		"\x03\x02\x02\x02\u1624\u1625\x07\u0149\x02\x02\u1625\u1627\x07\xF8\x02" +
		"\x02\u1626\u1628\x05\u0240\u0121\x02\u1627\u1626\x03\x02\x02\x02\u1627" +
		"\u1628\x03\x02\x02\x02\u1628\u1629\x03\x02\x02\x02\u1629\u162A\x07R\x02" +
		"\x02\u162A\u162B\x07\xBF\x02\x02\u162B\u162C\x05\u0492\u024A\x02\u162C" +
		"\u162D\x07v\x02\x02\u162D\u162E\x05\u0242\u0122\x02\u162E\u1668\x03\x02" +
		"\x02\x02\u162F\u1630\x07\u0149\x02\x02\u1630\u1632\x07\xF8\x02\x02\u1631" +
		"\u1633\x05\u0240\u0121\x02\u1632\u1631\x03\x02\x02\x02\u1632\u1633\x03" +
		"\x02\x02\x02\u1633\u1634\x03\x02\x02\x02\u1634\u1635\x07R\x02\x02\u1635" +
		"\u1636\x07\x8A\x02\x02\u1636\u1637\x05\u02BC\u015F\x02\u1637\u1638\x07" +
		"v\x02\x02\u1638\u1639\x05\u0242\u0122\x02\u1639\u1668\x03\x02\x02\x02" +
		"\u163A\u163B\x07\u0149\x02\x02\u163B\u163D\x07\xF8\x02\x02\u163C\u163E" +
		"\x05\u0240\u0121\x02\u163D\u163C\x03\x02\x02\x02\u163D\u163E\x03\x02\x02" +
		"\x02\u163E\u163F\x03\x02\x02\x02\u163F\u1640\x07R\x02\x02\u1640\u1641" +
		"\x07\xD5\x02\x02\u1641\u1642\x05\u02A4\u0153\x02\u1642\u1643\x07v\x02" +
		"\x02\u1643\u1644\x05\u0242\u0122\x02\u1644\u1668\x03\x02\x02\x02\u1645" +
		"\u1646\x07\u0149\x02\x02\u1646\u1648\x07\xF8\x02\x02\u1647\u1649\x05\u0240" +
		"\u0121\x02\u1648\u1647\x03\x02\x02\x02\u1648\u1649\x03\x02\x02\x02\u1649" +
		"\u164A\x03\x02\x02\x02\u164A\u164B\x07R\x02\x02\u164B\u164C\x07\xFA\x02" +
		"\x02\u164C\u164D\x07\u0114\x02\x02\u164D\u164E\x05\u0142\xA2\x02\u164E" +
		"\u164F\x07v\x02\x02\u164F\u1650\x05\u0242\u0122\x02\u1650\u1668\x03\x02" +
		"\x02\x02\u1651\u1652\x07\u0149\x02\x02\u1652\u1654\x07\xF8\x02\x02\u1653" +
		"\u1655\x05\u0240\u0121\x02\u1654\u1653\x03\x02\x02\x02\u1654\u1655\x03" +
		"\x02\x02\x02\u1655\u1656\x03\x02\x02\x02\u1656\u1657\x07R\x02\x02\u1657" +
		"\u1658\x07\u012A\x02\x02\u1658\u1659\x05\u02A0\u0151\x02\u1659\u165A\x07" +
		"v\x02\x02\u165A\u165B\x05\u0242\u0122\x02\u165B\u1668\x03\x02\x02\x02" +
		"\u165C\u165D\x07\u0149\x02\x02\u165D\u165F\x07\xF8\x02\x02\u165E\u1660" +
		"\x05\u0240\u0121\x02\u165F\u165E\x03\x02\x02\x02\u165F\u1660\x03\x02\x02" +
		"\x02\u1660\u1661\x03\x02\x02\x02\u1661\u1662\x07R\x02\x02\u1662\u1663" +
		"\x07\u01BC\x02\x02\u1663\u1664\x05\u029C\u014F\x02\u1664\u1665\x07v\x02" +
		"\x02\u1665\u1666\x05\u0242\u0122\x02\u1666\u1668\x03\x02\x02\x02\u1667" +
		"\u15FA\x03\x02\x02\x02\u1667\u1604\x03\x02\x02\x02\u1667\u160F\x03\x02" +
		"\x02\x02\u1667\u1619\x03\x02\x02\x02\u1667\u1624\x03\x02\x02\x02\u1667" +
		"\u162F\x03\x02\x02\x02\u1667\u163A\x03\x02\x02\x02\u1667\u1645\x03\x02" +
		"\x02\x02\u1667\u1651\x03\x02\x02\x02\u1667\u165C\x03\x02\x02\x02\u1668" +
		"\u023F\x03\x02\x02\x02\u1669\u166A\x07@\x02\x02\u166A\u166B\x05R*\x02" +
		"\u166B\u0241\x03\x02\x02\x02\u166C\u166F\x05\u05B4\u02DB\x02\u166D\u166F" +
		"\x07P\x02\x02\u166E\u166C\x03\x02\x02\x02\u166E\u166D\x03\x02\x02\x02" +
		"\u166F\u0243\x03\x02\x02\x02\u1670\u1671\x07?\x02\x02\u1671\u1675\x05" +
		"\u0246\u0124\x02\u1672\u1673\x07\u010B\x02\x02\u1673\u1675\x05\u0246\u0124" +
		"\x02\u1674\u1670\x03\x02\x02\x02\u1674\u1672\x03\x02\x02\x02\u1675\u0245" +
		"\x03\x02\x02\x02\u1676\u16CC\x05\u03E6\u01F4\x02\u1677\u1678\x05\u0248" +
		"\u0125\x02\u1678\u1679\x05\u03E6\u01F4\x02\u1679\u16CC\x03\x02\x02\x02" +
		"\u167A\u167C\x07\u010E\x02\x02\u167B\u167D\x05\u024A\u0126\x02\u167C\u167B" +
		"\x03\x02\x02\x02\u167C\u167D\x03\x02\x02\x02\u167D\u167E\x03\x02\x02\x02" +
		"\u167E\u16CC\x05\u03E6\u01F4\x02\u167F\u1681\x07\u0127\x02\x02\u1680\u1682" +
		"\x05\u024A\u0126\x02\u1681\u1680\x03\x02\x02\x02\u1681\u1682\x03\x02\x02" +
		"\x02\u1682\u1683\x03\x02\x02\x02\u1683\u16CC\x05\u03E6\u01F4\x02\u1684" +
		"\u1686\x07\xD1\x02\x02\u1685\u1687\x05\u024A\u0126\x02\u1686\u1685\x03" +
		"\x02\x02\x02\u1686\u1687\x03\x02\x02\x02\u1687\u1688\x03\x02\x02\x02\u1688" +
		"\u16CC\x05\u03E6\u01F4\x02\u1689\u168B\x07\xFB\x02\x02\u168A\u168C\x05" +
		"\u024A\u0126\x02\u168B\u168A\x03\x02\x02\x02\u168B\u168C\x03\x02\x02\x02" +
		"\u168C\u168D\x03\x02\x02\x02\u168D\u16CC\x05\u03E6\u01F4\x02\u168E\u168F" +
		"\x07\x84\x02\x02\u168F\u1691\x05\u05BA\u02DE\x02\u1690\u1692\x05\u024A" +
		"\u0126\x02\u1691\u1690\x03\x02\x02\x02\u1691\u1692\x03\x02\x02\x02\u1692" +
		"\u1693\x03\x02\x02\x02\u1693\u1694\x05\u03E6\u01F4\x02\u1694\u16CC\x03" +
		"\x02\x02\x02\u1695\u1696\x07\u0135\x02\x02\u1696\u1698\x05\u05BA\u02DE" +
		"\x02\u1697\u1699\x05\u024A\u0126\x02\u1698\u1697\x03\x02\x02\x02\u1698" +
		"\u1699\x03\x02\x02\x02\u1699\u169A\x03\x02\x02\x02\u169A\u169B\x05\u03E6" +
		"\u01F4\x02\u169B\u16CC\x03\x02\x02\x02\u169C\u169E\x05\u05BA\u02DE\x02" +
		"\u169D\u169F\x05\u024A\u0126\x02\u169E\u169D\x03\x02\x02\x02\u169E\u169F" +
		"\x03\x02\x02\x02\u169F\u16A0\x03\x02\x02\x02\u16A0\u16A1\x05\u03E6\u01F4" +
		"\x02\u16A1\u16CC\x03\x02\x02\x02\u16A2\u16A4\x07 \x02\x02\u16A3\u16A5" +
		"\x05\u024A\u0126\x02\u16A4\u16A3\x03\x02\x02\x02\u16A4\u16A5\x03\x02\x02" +
		"\x02\u16A5\u16A6\x03\x02\x02\x02\u16A6\u16CC\x05\u03E6\u01F4\x02\u16A7" +
		"\u16A9\x07\xD4\x02\x02\u16A8\u16AA\x05\u024A\u0126\x02\u16A9\u16A8\x03" +
		"\x02\x02\x02\u16A9\u16AA\x03\x02\x02\x02\u16AA\u16AB\x03\x02\x02\x02\u16AB" +
		"\u16CC\x05\u03E6\u01F4\x02\u16AC\u16AD\x07\xD4\x02\x02\u16AD\u16AF\x05" +
		"\u05BA\u02DE\x02\u16AE\u16B0\x05\u024A\u0126\x02\u16AF\u16AE\x03\x02\x02" +
		"\x02\u16AF\u16B0\x03\x02\x02\x02\u16B0\u16B1\x03\x02\x02\x02\u16B1\u16B2" +
		"\x05\u03E6\u01F4\x02\u16B2\u16CC\x03\x02\x02\x02\u16B3\u16B4\x07\xD4\x02" +
		"\x02\u16B4\u16B6\x07 \x02\x02\u16B5\u16B7\x05\u024A\u0126\x02\u16B6\u16B5" +
		"\x03\x02\x02\x02\u16B6\u16B7\x03\x02\x02\x02\u16B7\u16B8\x03\x02\x02\x02" +
		"\u16B8\u16CC\x05\u03E6\u01F4\x02\u16B9\u16BB\x07\x92\x02\x02\u16BA\u16BC" +
		"\x05\u024A\u0126\x02\u16BB\u16BA\x03\x02\x02\x02\u16BB\u16BC\x03\x02\x02" +
		"\x02\u16BC\u16BD\x03\x02\x02\x02\u16BD\u16CC\x05\u03E6\u01F4\x02\u16BE" +
		"\u16BF\x07\x92\x02\x02\u16BF\u16C1\x05\u05BA\u02DE\x02\u16C0\u16C2\x05" +
		"\u024A\u0126\x02\u16C1\u16C0\x03\x02\x02\x02\u16C1\u16C2\x03\x02\x02\x02" +
		"\u16C2\u16C3\x03\x02\x02\x02\u16C3\u16C4\x05\u03E6\u01F4\x02\u16C4\u16CC" +
		"\x03\x02\x02\x02\u16C5\u16C6\x07\x92\x02\x02\u16C6\u16C8\x07 \x02\x02" +
		"\u16C7\u16C9\x05\u024A\u0126\x02\u16C8\u16C7\x03\x02\x02\x02\u16C8\u16C9" +
		"\x03\x02\x02\x02\u16C9\u16CA\x03\x02\x02\x02\u16CA\u16CC\x05\u03E6\u01F4" +
		"\x02\u16CB\u1676\x03\x02\x02\x02\u16CB\u1677\x03\x02\x02\x02\u16CB\u167A" +
		"\x03\x02\x02\x02\u16CB\u167F\x03\x02\x02\x02\u16CB\u1684\x03\x02\x02\x02" +
		"\u16CB\u1689\x03\x02\x02\x02\u16CB\u168E\x03\x02\x02\x02\u16CB\u1695\x03" +
		"\x02\x02\x02\u16CB\u169C\x03\x02\x02\x02\u16CB\u16A2\x03\x02\x02\x02\u16CB" +
		"\u16A7\x03\x02\x02\x02\u16CB\u16AC\x03\x02\x02\x02\u16CB\u16B3\x03\x02" +
		"\x02\x02\u16CB\u16B9\x03\x02\x02\x02\u16CB\u16BE\x03\x02\x02\x02\u16CB" +
		"\u16C5\x03\x02\x02\x02\u16CC\u0247\x03\x02\x02\x02\u16CD\u16CE\t%\x02" +
		"\x02\u16CE\u0249\x03\x02\x02\x02\u16CF\u16D0\x05\u0248\u0125\x02\u16D0" +
		"\u024B\x03\x02\x02\x02\u16D1\u16D2\x07C\x02\x02\u16D2\u16D3\x05\u0250" +
		"\u0129\x02\u16D3\u16D4\x07R\x02\x02\u16D4\u16D5\x05\u025A\u012E\x02\u16D5" +
		"\u16D6\x07`\x02\x02\u16D6\u16D8\x05\u025C\u012F\x02\u16D7\u16D9\x05\u0260" +
		"\u0131\x02\u16D8\u16D7\x03\x02\x02\x02\u16D8\u16D9\x03\x02\x02\x02\u16D9" +
		"\u024D\x03\x02\x02\x02\u16DA\u16DB\x07\u013F\x02\x02\u16DB\u16DC\x05\u0250" +
		"\u0129\x02\u16DC\u16DD\x07R\x02\x02\u16DD\u16DE\x05\u025A\u012E\x02\u16DE" +
		"\u16DF\x07B\x02\x02\u16DF\u16E1\x05\u025C\u012F\x02\u16E0\u16E2\x05~@" +
		"\x02\u16E1\u16E0\x03\x02\x02\x02\u16E1\u16E2\x03\x02\x02\x02\u16E2\u16F0" +
		"\x03\x02\x02\x02\u16E3\u16E4\x07\u013F\x02\x02\u16E4\u16E5\x07C\x02\x02" +
		"\u16E5\u16E6\x07\u0119\x02\x02\u16E6\u16E7\x07@\x02\x02\u16E7\u16E8\x05" +
		"\u0250\u0129\x02\u16E8\u16E9\x07R\x02\x02\u16E9\u16EA\x05\u025A\u012E" +
		"\x02\u16EA\u16EB\x07B\x02\x02\u16EB\u16ED\x05\u025C\u012F\x02\u16EC\u16EE" +
		"\x05~@\x02\u16ED\u16EC\x03\x02\x02\x02\u16ED\u16EE\x03\x02\x02\x02\u16EE" +
		"\u16F0\x03\x02\x02\x02\u16EF\u16DA\x03\x02\x02\x02\u16EF\u16E3\x03\x02" +
		"\x02\x02\u16F0\u024F\x03\x02\x02\x02\u16F1\u1702\x05\u0256\u012C\x02\u16F2" +
		"\u1702\x07 \x02\x02\u16F3\u16F4\x07 \x02\x02\u16F4\u1702\x07\u0128\x02" +
		"\x02\u16F5\u16F6\x07 \x02\x02\u16F6\u16F7\x07\x04\x02\x02\u16F7\u16F8" +
		"\x05\xF6|\x02\u16F8\u16F9\x07\x05\x02\x02\u16F9\u1702\x03\x02\x02\x02" +
		"\u16FA\u16FB\x07 \x02\x02\u16FB\u16FC\x07\u0128\x02\x02\u16FC\u16FD\x07" +
		"\x04\x02\x02\u16FD\u16FE\x05\xF6|\x02\u16FE\u16FF\x07\x05\x02\x02\u16FF" +
		"\u1702\x03\x02\x02\x02\u1700\u1702\x05\u0252\u012A\x02\u1701\u16F1\x03" +
		"\x02\x02\x02\u1701\u16F2\x03\x02\x02\x02\u1701\u16F3\x03\x02\x02\x02\u1701" +
		"\u16F5\x03\x02\x02\x02\u1701\u16FA\x03\x02\x02\x02\u1701\u1700\x03\x02" +
		"\x02\x02\u1702\u0251\x03\x02\x02\x02\u1703\u1708\x05\u0254\u012B\x02\u1704" +
		"\u1705\x07\b\x02\x02\u1705\u1707\x05\u0254\u012B\x02\u1706\u1704\x03\x02" +
		"\x02\x02\u1707\u170A\x03\x02\x02\x02\u1708\u1706\x03\x02\x02\x02\u1708" +
		"\u1709\x03\x02\x02\x02\u1709\u0253\x03\x02\x02\x02\u170A\u1708\x03\x02" +
		"\x02\x02\u170B\u170C\t&\x02\x02\u170C\u0255\x03\x02\x02\x02\u170D\u1712" +
		"\x05\u0258\u012D\x02\u170E\u170F\x07\b\x02\x02\u170F\u1711\x05\u0258\u012D" +
		"\x02\u1710\u170E\x03\x02\x02\x02\u1711\u1714\x03\x02\x02\x02\u1712\u1710" +
		"\x03\x02\x02\x02\u1712\u1713\x03\x02\x02\x02\u1713\u0257\x03\x02\x02\x02" +
		"\u1714\u1712\x03\x02\x02\x02\u1715\u1717\x07Z\x02\x02\u1716\u1718\x05" +
		"\xF4{\x02\u1717\u1716\x03\x02\x02\x02\u1717\u1718\x03\x02\x02\x02\u1718" +
		"\u1726\x03\x02\x02\x02\u1719\u171B\x07X\x02\x02\u171A\u171C\x05\xF4{\x02" +
		"\u171B\u171A\x03\x02\x02\x02\u171B\u171C\x03\x02\x02\x02\u171C\u1726\x03" +
		"\x02\x02\x02\u171D\u171F\x070\x02\x02\u171E\u1720\x05\xF4{\x02\u171F\u171E" +
		"\x03\x02\x02\x02\u171F\u1720\x03\x02\x02\x02\u1720\u1726\x03\x02\x02\x02" +
		"\u1721\u1723\x05\u05C4\u02E3\x02\u1722\u1724\x05\xF4{\x02\u1723\u1722" +
		"\x03\x02\x02\x02\u1723\u1724\x03\x02\x02\x02\u1724\u1726\x03\x02\x02\x02" +
		"\u1725\u1715\x03\x02\x02\x02\u1725\u1719\x03\x02\x02\x02\u1725\u171D\x03" +
		"\x02\x02\x02\u1725\u1721\x03\x02\x02\x02\u1726\u0259\x03\x02\x02\x02\u1727" +
		"\u1762\x05\u0570\u02B9\x02\u1728\u1729\x07^\x02\x02\u1729\u1762\x05\u0572" +
		"\u02BA\x02\u172A\u172B\x07\u014A\x02\x02\u172B\u1762\x05\u0570\u02B9\x02" +
		"\u172C\u172D\x07A\x02\x02\u172D\u172E\x07\xB0\x02\x02\u172E\u172F\x07" +
		"\u017F\x02\x02\u172F\u1762\x05\u058A\u02C6\x02\u1730\u1731\x07A\x02\x02" +
		"\u1731\u1732\x07\u014D\x02\x02\u1732\u1762\x05\u058A\u02C6\x02\u1733\u1734" +
		"\x07\xD5\x02\x02\u1734\u1762\x05\u02A2\u0152\x02\u1735\u1736\x07\u012A" +
		"\x02\x02\u1736\u1762\x05\u029E\u0150\x02\u1737\u1738\x07\u01BC\x02\x02" +
		"\u1738\u1762\x05\u029A\u014E\x02\u1739\u173A\x07\xB1\x02\x02\u173A\u1762" +
		"\x05\u0576\u02BC\x02\u173B\u173C\x07\xBF\x02\x02\u173C\u1762\x05\u0228" +
		"\u0115\x02\u173D\u173E\x07\xF9\x02\x02\u173E\u1762\x05\u058A\u02C6\x02" +
		"\u173F\u1740\x07\xFA\x02\x02\u1740\u1741\x07\u0114\x02\x02\u1741\u1762" +
		"\x05\u0144\xA3\x02\u1742\u1743\x07\u0145\x02\x02\u1743\u1762\x05\u0574" +
		"\u02BB\x02\u1744\u1745\x07\u0161\x02\x02\u1745\u1762\x05\u0588\u02C5\x02" +
		"\u1746\u1747\x07\u016A\x02\x02\u1747\u1762\x05\u0228\u0115\x02\u1748\u1749" +
		"\x07 \x02\x02\u1749\u174A\x07\u0160\x02\x02\u174A\u174B\x07F\x02\x02\u174B" +
		"\u174C\x07\u0145\x02\x02\u174C\u1762\x05\u0574\u02BB\x02\u174D\u174E\x07" +
		" \x02\x02\u174E\u174F\x07\u014B\x02\x02\u174F\u1750\x07F\x02\x02\u1750" +
		"\u1751\x07\u0145\x02\x02\u1751\u1762\x05\u0574\u02BB\x02\u1752\u1753\x07" +
		" \x02\x02\u1753\u1754\x07\xD6\x02\x02\u1754\u1755\x07F\x02\x02\u1755\u1756" +
		"\x07\u0145\x02\x02\u1756\u1762\x05\u0574\u02BB\x02\u1757\u1758\x07 \x02" +
		"\x02\u1758\u1759\x07\u01CB\x02\x02\u1759\u175A\x07F\x02\x02\u175A\u175B" +
		"\x07\u0145\x02\x02\u175B\u1762\x05\u0574\u02BB\x02\u175C\u175D\x07 \x02" +
		"\x02\u175D\u175E\x07\u01C9\x02\x02\u175E\u175F\x07F\x02\x02\u175F\u1760" +
		"\x07\u0145\x02\x02\u1760\u1762\x05\u0574\u02BB\x02\u1761\u1727\x03\x02" +
		"\x02\x02\u1761\u1728\x03\x02\x02\x02\u1761\u172A\x03\x02\x02\x02\u1761" +
		"\u172C\x03\x02\x02\x02\u1761\u1730\x03\x02\x02\x02\u1761\u1733\x03\x02" +
		"\x02\x02\u1761\u1735\x03\x02\x02\x02\u1761\u1737\x03\x02\x02\x02\u1761" +
		"\u1739\x03\x02\x02\x02\u1761\u173B\x03\x02\x02\x02\u1761\u173D\x03\x02" +
		"\x02\x02\u1761\u173F\x03\x02\x02\x02\u1761\u1742\x03\x02\x02\x02\u1761" +
		"\u1744\x03\x02\x02\x02\u1761\u1746\x03\x02\x02\x02\u1761\u1748\x03\x02" +
		"\x02\x02\u1761\u174D\x03\x02\x02\x02\u1761\u1752\x03\x02\x02\x02\u1761" +
		"\u1757\x03\x02\x02\x02\u1761\u175C\x03\x02\x02\x02\u1762\u025B\x03\x02" +
		"\x02\x02\u1763\u1768\x05\u025E\u0130\x02\u1764\u1765\x07\b\x02\x02\u1765" +
		"\u1767\x05\u025E\u0130\x02\u1766\u1764\x03\x02\x02\x02\u1767\u176A\x03" +
		"\x02\x02\x02\u1768\u1766\x03\x02\x02\x02\u1768\u1769\x03\x02\x02\x02\u1769" +
		"\u025D\x03\x02\x02\x02\u176A\u1768\x03\x02\x02\x02\u176B\u176F\x05\u05C0" +
		"\u02E1\x02\u176C\u176D\x07D\x02\x02\u176D\u176F\x05\u05C0\u02E1\x02\u176E" +
		"\u176B\x03\x02\x02\x02\u176E\u176C\x03\x02\x02\x02\u176F\u025F\x03\x02" +
		"\x02\x02\u1770\u1771\x07k\x02\x02\u1771\u1772\x07C\x02\x02\u1772\u1773" +
		"\x07\u0119\x02\x02\u1773\u0261\x03\x02\x02\x02\u1774\u1775\x07C\x02\x02" +
		"\u1775\u1776\x05\u0256\u012C\x02\u1776\u1777\x07`\x02\x02\u1777\u1779" +
		"\x05\u05C2\u02E2\x02\u1778\u177A\x05\u0266\u0134\x02\u1779\u1778\x03\x02" +
		"\x02\x02\u1779\u177A\x03\x02\x02\x02\u177A\u177C\x03\x02\x02\x02\u177B" +
		"\u177D\x05\u0268\u0135\x02\u177C\u177B\x03\x02\x02\x02\u177C\u177D\x03" +
		"\x02\x02\x02\u177D\u0263\x03\x02\x02\x02\u177E\u177F\x07\u013F\x02\x02" +
		"\u177F\u1780\x05\u0256\u012C\x02\u1780\u1781\x07B\x02\x02\u1781\u1783" +
		"\x05\u05C2\u02E2\x02\u1782\u1784\x05\u0268\u0135\x02\u1783\u1782\x03\x02" +
		"\x02\x02\u1783\u1784\x03\x02\x02\x02\u1784\u1786\x03\x02\x02\x02\u1785" +
		"\u1787\x05~@\x02\u1786\u1785\x03\x02\x02\x02\u1786\u1787\x03\x02\x02\x02" +
		"\u1787\u1796\x03\x02\x02\x02\u1788\u1789\x07\u013F\x02\x02\u1789\u178A" +
		"\x07\x88\x02\x02\u178A\u178B\x07\u0119\x02\x02\u178B\u178C\x07@\x02\x02" +
		"\u178C\u178D\x05\u0256\u012C\x02\u178D\u178E\x07B\x02\x02\u178E\u1790" +
		"\x05\u05C2\u02E2\x02\u178F\u1791\x05\u0268\u0135\x02\u1790\u178F\x03\x02" +
		"\x02\x02\u1790\u1791\x03\x02\x02\x02\u1791\u1793\x03\x02\x02\x02\u1792" +
		"\u1794\x05~@\x02\u1793\u1792\x03\x02\x02\x02\u1793\u1794\x03\x02\x02\x02" +
		"\u1794\u1796\x03\x02\x02\x02\u1795\u177E\x03\x02\x02\x02\u1795\u1788\x03" +
		"\x02\x02\x02\u1796\u0265\x03\x02\x02\x02\u1797\u1798\x07k\x02\x02\u1798" +
		"\u1799\x07\x88\x02\x02\u1799\u179A\x07\u0119\x02\x02\u179A\u0267\x03\x02" +
		"\x02\x02\u179B\u179C\x07\xD8\x02\x02\u179C\u179D\x07\x95\x02\x02\u179D" +
		"\u179E\x05\u05C0\u02E1\x02\u179E\u0269\x03\x02\x02\x02\u179F\u17A0\x07" +
		"\x8C\x02\x02\u17A0\u17A1\x077\x02\x02\u17A1\u17A2\x07\u0128\x02\x02\u17A2" +
		"\u17A3\x05\u026C\u0137\x02\u17A3\u17A4\x05\u0270\u0139\x02\u17A4\u026B" +
		"\x03\x02\x02\x02\u17A5\u17A7\x05\u026E\u0138\x02\u17A6\u17A5\x03\x02\x02" +
		"\x02\u17A7\u17AA\x03\x02\x02\x02\u17A8\u17A6\x03\x02\x02\x02\u17A8\u17A9" +
		"\x03\x02\x02\x02\u17A9\u026D\x03\x02\x02\x02\u17AA\u17A8\x03\x02\x02\x02" +
		"\u17AB\u17AC\x07F\x02\x02\u17AC\u17AD\x07\u0145\x02\x02\u17AD\u17B5\x05" +
		"\u0574\u02BB\x02\u17AE\u17AF\x07@\x02\x02\u17AF\u17B0\x07\u0140\x02\x02" +
		"\u17B0\u17B5\x05\u05C2\u02E2\x02\u17B1\u17B2\x07@\x02\x02\u17B2\u17B3" +
		"\x07e\x02\x02\u17B3\u17B5\x05\u05C2\u02E2\x02\u17B4\u17AB\x03\x02\x02" +
		"\x02\u17B4\u17AE\x03\x02\x02\x02\u17B4\u17B1\x03\x02\x02\x02\u17B5\u026F" +
		"\x03\x02\x02\x02\u17B6\u17B7\x07C\x02\x02\u17B7\u17B8\x05\u0250\u0129" +
		"\x02\u17B8\u17B9\x07R\x02\x02\u17B9\u17BA\x05\u0272\u013A\x02\u17BA\u17BB" +
		"\x07`\x02\x02\u17BB\u17BD\x05\u025C\u012F\x02\u17BC\u17BE\x05\u0260\u0131" +
		"\x02\u17BD\u17BC\x03\x02\x02\x02\u17BD\u17BE\x03\x02\x02\x02\u17BE\u17D5" +
		"\x03\x02\x02\x02\u17BF\u17C0\x07\u013F\x02\x02\u17C0\u17C1\x05\u0250\u0129" +
		"\x02\u17C1\u17C2\x07R\x02\x02\u17C2\u17C3";
	private static readonly _serializedATNSegment13: string =
		"\x05\u0272\u013A\x02\u17C3\u17C4\x07B\x02\x02\u17C4\u17C6\x05\u025C\u012F" +
		"\x02\u17C5\u17C7\x05~@\x02\u17C6\u17C5\x03\x02\x02\x02\u17C6\u17C7\x03" +
		"\x02\x02\x02\u17C7\u17D5\x03\x02\x02\x02\u17C8\u17C9\x07\u013F\x02\x02" +
		"\u17C9\u17CA\x07C\x02\x02\u17CA\u17CB\x07\u0119\x02\x02\u17CB\u17CC\x07" +
		"@\x02\x02\u17CC\u17CD\x05\u0250\u0129\x02\u17CD\u17CE\x07R\x02\x02\u17CE" +
		"\u17CF\x05\u0272\u013A\x02\u17CF\u17D0\x07B\x02\x02\u17D0\u17D2\x05\u025C" +
		"\u012F\x02\u17D1\u17D3\x05~@\x02\u17D2\u17D1\x03\x02\x02\x02\u17D2\u17D3" +
		"\x03\x02\x02\x02\u17D3\u17D5\x03\x02\x02\x02\u17D4\u17B6\x03\x02\x02\x02" +
		"\u17D4\u17BF\x03\x02\x02\x02\u17D4\u17C8\x03\x02\x02\x02\u17D5\u0271\x03" +
		"\x02\x02\x02\u17D6\u17D7\t\'\x02\x02\u17D7\u0273\x03\x02\x02\x02\u17D8" +
		"\u17DA\x070\x02\x02\u17D9\u17DB\x05\u0276\u013C\x02\u17DA\u17D9\x03\x02" +
		"\x02\x02\u17DA\u17DB\x03\x02\x02\x02\u17DB\u17DC\x03\x02\x02\x02\u17DC" +
		"\u17DE\x07\xE4\x02\x02\u17DD\u17DF\x05\u0278\u013D\x02\u17DE\u17DD\x03" +
		"\x02\x02\x02\u17DE\u17DF\x03\x02\x02\x02\u17DF\u17E1\x03\x02\x02\x02\u17E0" +
		"\u17E2\x05\u0204\u0103\x02\u17E1\u17E0\x03\x02\x02\x02\u17E1\u17E2\x03" +
		"\x02\x02\x02\u17E2\u17E4\x03\x02\x02\x02\u17E3\u17E5\x05\u027A\u013E\x02" +
		"\u17E4\u17E3\x03\x02\x02\x02\u17E4\u17E5\x03\x02\x02\x02\u17E5\u17E6\x03" +
		"\x02\x02\x02\u17E6\u17E7\x07R\x02\x02\u17E7\u17E9\x05\u0462\u0232\x02" +
		"\u17E8\u17EA\x05\u027C\u013F\x02\u17E9\u17E8\x03\x02\x02\x02\u17E9\u17EA" +
		"\x03\x02\x02\x02\u17EA\u17EB\x03\x02\x02\x02\u17EB\u17EC\x07\x04\x02\x02" +
		"\u17EC\u17ED\x05\u027E\u0140\x02\u17ED\u17EF\x07\x05\x02\x02\u17EE\u17F0" +
		"\x05\u0284\u0143\x02\u17EF\u17EE\x03\x02\x02\x02\u17EF\u17F0\x03\x02\x02" +
		"\x02\u17F0\u17F2\x03\x02\x02\x02\u17F1\u17F3\x05\xE0q\x02\u17F2\u17F1" +
		"\x03\x02\x02\x02\u17F2\u17F3\x03\x02\x02\x02\u17F3\u17F5\x03\x02\x02\x02" +
		"\u17F4\u17F6\x05\x88E\x02\u17F5\u17F4\x03\x02\x02\x02\u17F5\u17F6\x03" +
		"\x02\x02\x02\u17F6\u17F8\x03\x02\x02\x02\u17F7\u17F9\x05\u011A\x8E\x02" +
		"\u17F8\u17F7\x03\x02\x02\x02\u17F8\u17F9\x03\x02\x02\x02\u17F9\u17FB\x03" +
		"\x02\x02\x02\u17FA\u17FC\x05\u047A\u023E\x02\u17FB\u17FA\x03\x02\x02\x02" +
		"\u17FB\u17FC\x03\x02\x02\x02\u17FC\u0275\x03\x02\x02\x02\u17FD\u17FE\x07" +
		"d\x02\x02\u17FE\u0277\x03\x02\x02\x02\u17FF\u1800\x07o\x02\x02\u1800\u0279" +
		"\x03\x02\x02\x02\u1801\u1802\x05\u059E\u02D0\x02\u1802\u027B\x03\x02\x02" +
		"\x02\u1803\u1804\x07f\x02\x02\u1804\u1805\x05\u059E\u02D0\x02\u1805\u027D" +
		"\x03\x02\x02\x02\u1806\u180B\x05\u0282\u0142\x02\u1807\u1808\x07\b\x02" +
		"\x02\u1808\u180A\x05\u0282\u0142\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\u027F\x03\x02\x02\x02\u180D\u180B\x03\x02\x02\x02\u180E" +
		"\u1810\x05\u0288\u0145\x02\u180F\u180E\x03\x02\x02\x02\u180F\u1810\x03" +
		"\x02\x02\x02\u1810\u1812\x03\x02\x02\x02\u1811\u1813\x05\u028A\u0146\x02" +
		"\u1812\u1811\x03\x02\x02\x02\u1812\u1813\x03\x02\x02\x02\u1813\u1815\x03" +
		"\x02\x02\x02\u1814\u1816\x05\u028C\u0147\x02\u1815\u1814\x03\x02\x02\x02" +
		"\u1815\u1816\x03\x02\x02\x02\u1816\u1818\x03\x02\x02\x02\u1817\u1819\x05" +
		"\u028E\u0148\x02\u1818\u1817\x03\x02\x02\x02\u1818\u1819\x03\x02\x02\x02" +
		"\u1819\u1826\x03\x02\x02\x02\u181A\u181C\x05\u0288\u0145\x02\u181B\u181A" +
		"\x03\x02\x02\x02\u181B\u181C\x03\x02\x02\x02\u181C\u181D\x03\x02\x02\x02" +
		"\u181D\u181E\x05\u0230\u0119\x02\u181E\u1820\x05\x86D\x02\u181F\u1821" +
		"\x05\u028C\u0147\x02\u1820\u181F\x03\x02\x02\x02\u1820\u1821\x03\x02\x02" +
		"\x02\u1821\u1823\x03\x02\x02\x02\u1822\u1824\x05\u028E\u0148\x02\u1823" +
		"\u1822\x03\x02\x02\x02\u1823\u1824\x03\x02\x02\x02\u1824\u1826\x03\x02" +
		"\x02\x02\u1825\u180F\x03\x02\x02\x02\u1825\u181B\x03\x02\x02\x02\u1826" +
		"\u0281\x03\x02\x02\x02\u1827\u1828\x05\u059A\u02CE\x02\u1828\u1829\x05" +
		"\u0280\u0141\x02\u1829\u1833\x03\x02\x02\x02\u182A\u182B\x05\u04F0\u0279" +
		"\x02\u182B\u182C\x05\u0280\u0141\x02\u182C\u1833\x03\x02\x02\x02\u182D" +
		"\u182E\x07\x04\x02\x02\u182E\u182F\x05\u04BE\u0260\x02\u182F\u1830\x07" +
		"\x05\x02\x02\u1830\u1831\x05\u0280\u0141\x02\u1831\u1833\x03\x02\x02\x02" +
		"\u1832\u1827\x03\x02\x02\x02\u1832\u182A\x03\x02\x02\x02\u1832\u182D\x03" +
		"\x02\x02\x02\u1833\u0283\x03\x02\x02\x02\u1834\u1835\x07\u01BB\x02\x02" +
		"\u1835\u1836\x07\x04\x02\x02\u1836\u1837\x05\u0286\u0144\x02\u1837\u1838" +
		"\x07\x05\x02\x02\u1838\u0285\x03\x02\x02\x02\u1839\u183E\x05\u0282\u0142" +
		"\x02\u183A\u183B\x07\b\x02\x02\u183B\u183D\x05\u0282\u0142\x02\u183C\u183A" +
		"\x03\x02\x02\x02\u183D\u1840\x03\x02\x02\x02\u183E\u183C\x03\x02\x02\x02" +
		"\u183E\u183F\x03\x02\x02\x02\u183F\u0287\x03\x02\x02\x02\u1840\u183E\x03" +
		"\x02\x02\x02\u1841\u1842\x07-\x02\x02\u1842\u1843\x05\u0230\u0119\x02" +
		"\u1843\u0289\x03\x02\x02\x02\u1844\u1845\x05\u0230\u0119\x02\u1845\u028B" +
		"\x03\x02\x02\x02\u1846\u1847\t(\x02\x02\u1847\u028D\x03\x02\x02\x02\u1848" +
		"\u1849\x07\u0113\x02\x02\u1849\u184D\x07\xD1\x02\x02\u184A\u184B\x07\u0113" +
		"\x02\x02\u184B\u184D\x07\xFB\x02\x02\u184C\u1848\x03\x02\x02\x02\u184C" +
		"\u184A\x03\x02\x02\x02\u184D\u028F\x03\x02\x02\x02\u184E\u1850\x070\x02" +
		"\x02\u184F\u1851\x05\u0294\u014B\x02\u1850\u184F\x03\x02\x02\x02\u1850" +
		"\u1851\x03\x02\x02\x02\u1851\u1856\x03\x02\x02\x02\u1852\u1853\x07\xD5" +
		"\x02\x02\u1853\u1857\x05\u05A4\u02D3\x02\u1854\u1855\x07\u012A\x02\x02" +
		"\u1855\u1857\x05\u0598\u02CD\x02\u1856\u1852\x03\x02\x02\x02\u1856\u1854" +
		"\x03\x02\x02\x02\u1857\u1858\x03\x02\x02\x02\u1858\u1862\x05\u02A6\u0154" +
		"\x02\u1859\u1860\x07\u013E\x02\x02\u185A\u1861\x05\u02B0\u0159\x02\u185B" +
		"\u185C\x07^\x02\x02\u185C\u185D\x07\x04\x02\x02\u185D\u185E\x05\u02CC" +
		"\u0167\x02\u185E\u185F\x07\x05\x02\x02\u185F\u1861\x03\x02\x02\x02\u1860" +
		"\u185A\x03\x02\x02\x02\u1860\u185B\x03\x02\x02\x02\u1861\u1863\x03\x02" +
		"\x02\x02\u1862\u1859\x03\x02\x02\x02\u1862\u1863\x03\x02\x02\x02\u1863" +
		"\u1864\x03\x02\x02\x02\u1864\u1867\x05\u02C0\u0161\x02\u1865\u1866\x07" +
		"k\x02\x02\u1866\u1868\x05\u0292\u014A\x02\u1867\u1865\x03\x02\x02\x02" +
		"\u1867\u1868\x03\x02\x02\x02\u1868\u0291\x03\x02\x02\x02\u1869\u186A\x07" +
		"\x04\x02\x02\u186A\u186F\x05\u05C4\u02E3\x02\u186B\u186C\x07\b\x02\x02" +
		"\u186C\u186E\x05\u05C4\u02E3\x02\u186D\u186B\x03\x02\x02\x02\u186E\u1871" +
		"\x03\x02\x02\x02\u186F\u186D\x03\x02\x02\x02\u186F\u1870\x03\x02\x02\x02" +
		"\u1870\u1872\x03\x02\x02\x02\u1871\u186F\x03\x02\x02\x02\u1872\u1873\x07" +
		"\x05\x02\x02\u1873\u0293\x03\x02\x02\x02\u1874\u1875\x07T\x02\x02\u1875" +
		"\u1876\x07\u0139\x02\x02\u1876\u0295\x03\x02\x02\x02\u1877\u1879\x07\x04" +
		"\x02\x02\u1878\u187A\x05\u0298\u014D\x02\u1879\u1878\x03\x02\x02\x02\u1879" +
		"\u187A\x03\x02\x02\x02\u187A\u187B\x03\x02\x02\x02\u187B\u187C\x07\x05" +
		"\x02\x02\u187C\u0297\x03\x02\x02\x02\u187D\u1882\x05\u02AA\u0156\x02\u187E" +
		"\u187F\x07\b\x02\x02\u187F\u1881\x05\u02AA\u0156\x02\u1880\u187E\x03\x02" +
		"\x02\x02\u1881\u1884\x03\x02\x02\x02\u1882\u1880\x03\x02\x02\x02\u1882" +
		"\u1883\x03\x02\x02\x02\u1883\u0299\x03\x02\x02\x02\u1884\u1882\x03\x02" +
		"\x02\x02\u1885\u188A\x05\u029C\u014F\x02\u1886\u1887\x07\b\x02\x02\u1887" +
		"\u1889\x05\u029C\u014F\x02\u1888\u1886\x03\x02\x02\x02\u1889\u188C\x03" +
		"\x02\x02\x02\u188A\u1888\x03\x02\x02\x02\u188A\u188B\x03\x02\x02\x02\u188B" +
		"\u029B\x03\x02\x02\x02\u188C\u188A\x03\x02\x02\x02\u188D\u188E\x05\u0594" +
		"\u02CB\x02\u188E\u188F\x05\u0296\u014C\x02\u188F\u1896\x03\x02\x02\x02" +
		"\u1890\u1896\x05\u05DE\u02F0\x02\u1891\u1893\x05\u05C4\u02E3\x02\u1892" +
		"\u1894\x05\u0566\u02B4\x02\u1893\u1892\x03\x02\x02\x02\u1893\u1894\x03" +
		"\x02\x02\x02\u1894\u1896\x03\x02\x02\x02\u1895\u188D\x03\x02\x02\x02\u1895" +
		"\u1890\x03\x02\x02\x02\u1895\u1891\x03\x02\x02\x02\u1896\u029D\x03\x02" +
		"\x02\x02\u1897\u189C\x05\u02A0\u0151\x02\u1898\u1899\x07\b\x02\x02\u1899" +
		"\u189B\x05\u02A0\u0151\x02\u189A\u1898\x03\x02\x02\x02\u189B\u189E\x03" +
		"\x02\x02\x02\u189C\u189A\x03\x02\x02\x02\u189C\u189D\x03\x02\x02\x02\u189D" +
		"\u029F\x03\x02\x02\x02\u189E\u189C\x03\x02\x02\x02\u189F\u18A0\x05\u0596" +
		"\u02CC\x02\u18A0\u18A1\x05\u0296\u014C\x02\u18A1\u18A8\x03\x02\x02\x02" +
		"\u18A2\u18A8\x05\u05DE\u02F0\x02\u18A3\u18A5\x05\u05C4\u02E3\x02\u18A4" +
		"\u18A6\x05\u0566\u02B4\x02\u18A5\u18A4\x03\x02\x02\x02\u18A5\u18A6\x03" +
		"\x02\x02\x02\u18A6\u18A8\x03\x02\x02\x02\u18A7\u189F\x03\x02\x02\x02\u18A7" +
		"\u18A2\x03\x02\x02\x02\u18A7\u18A3\x03\x02\x02\x02\u18A8\u02A1\x03\x02" +
		"\x02\x02\u18A9\u18AE\x05\u02A4\u0153\x02\u18AA\u18AB\x07\b\x02\x02\u18AB" +
		"\u18AD\x05\u02A4\u0153\x02\u18AC\u18AA\x03\x02\x02\x02\u18AD\u18B0\x03" +
		"\x02\x02\x02\u18AE\u18AC\x03\x02\x02\x02\u18AE\u18AF\x03\x02\x02\x02\u18AF" +
		"\u02A3\x03\x02\x02\x02\u18B0\u18AE\x03\x02\x02\x02\u18B1\u18B2\x05\u05A6" +
		"\u02D4\x02\u18B2\u18B3\x05\u0296\u014C\x02\u18B3\u18BA\x03\x02\x02\x02" +
		"\u18B4\u18BA\x05\u05DE\u02F0\x02\u18B5\u18B7\x05\u05C4\u02E3\x02\u18B6" +
		"\u18B8\x05\u0566\u02B4\x02\u18B7\u18B6\x03\x02\x02\x02\u18B7\u18B8\x03" +
		"\x02\x02\x02\u18B8\u18BA\x03\x02\x02\x02\u18B9\u18B1\x03\x02\x02\x02\u18B9" +
		"\u18B4\x03\x02\x02\x02\u18B9\u18B5\x03\x02\x02\x02\u18BA\u02A5\x03\x02" +
		"\x02\x02\u18BB\u18BD\x07\x04\x02\x02\u18BC\u18BE\x05\u02A8\u0155\x02\u18BD" +
		"\u18BC\x03\x02\x02\x02\u18BD\u18BE\x03\x02\x02\x02\u18BE\u18BF\x03\x02" +
		"\x02\x02\u18BF\u18C0\x07\x05\x02\x02\u18C0\u02A7\x03\x02\x02\x02\u18C1" +
		"\u18C6\x05\u02B4\u015B\x02\u18C2\u18C3\x07\b\x02\x02\u18C3\u18C5\x05\u02B4" +
		"\u015B\x02\u18C4\u18C2\x03\x02\x02\x02\u18C5\u18C8\x03\x02\x02\x02\u18C6" +
		"\u18C4\x03\x02\x02\x02\u18C6\u18C7\x03\x02\x02\x02\u18C7\u02A9\x03\x02" +
		"\x02\x02\u18C8\u18C6\x03\x02\x02\x02\u18C9\u18CB\x05\u02AC\u0157\x02\u18CA" +
		"\u18CC\x05\u02AE\u0158\x02\u18CB\u18CA\x03\x02\x02\x02\u18CB\u18CC\x03" +
		"\x02\x02\x02\u18CC\u18CD\x03\x02\x02\x02\u18CD\u18CE\x05\u02B2\u015A\x02" +
		"\u18CE\u18D7\x03\x02\x02\x02\u18CF\u18D1\x05\u02AE\u0158\x02\u18D0\u18D2" +
		"\x05\u02AC\u0157\x02\u18D1\u18D0\x03\x02\x02\x02\u18D1\u18D2\x03\x02\x02" +
		"\x02\u18D2\u18D3\x03\x02\x02\x02\u18D3\u18D4\x05\u02B2\u015A\x02\u18D4" +
		"\u18D7\x03\x02\x02\x02\u18D5\u18D7\x05\u02B2\u015A\x02\u18D6\u18C9\x03" +
		"\x02\x02\x02\u18D6\u18CF\x03\x02\x02\x02\u18D6\u18D5\x03\x02\x02\x02\u18D7" +
		"\u02AB\x03\x02\x02\x02\u18D8\u18DA\x07F\x02\x02\u18D9\u18DB\x07\u01C7" +
		"\x02\x02\u18DA\u18D9\x03\x02\x02\x02\u18DA\u18DB\x03\x02\x02\x02\u18DB" +
		"\u18E0\x03\x02\x02\x02\u18DC\u18E0\x07\u01C7\x02\x02\u18DD\u18E0\x07\u0192" +
		"\x02\x02\u18DE\u18E0\x07g\x02\x02\u18DF\u18D8\x03\x02\x02\x02\u18DF\u18DC" +
		"\x03\x02\x02\x02\u18DF\u18DD\x03\x02\x02\x02\u18DF\u18DE\x03\x02\x02\x02" +
		"\u18E0\u02AD\x03\x02\x02\x02\u18E1\u18E2\x05\u05CC\u02E7\x02\u18E2\u02AF" +
		"\x03\x02\x02\x02\u18E3\u18E4\x05\u02B2\u015A\x02\u18E4\u02B1\x03\x02\x02" +
		"\x02\u18E5\u18F2\x05\u0492\u024A\x02\u18E6\u18E7\x05\u05CC\u02E7\x02\u18E7" +
		"\u18E8\x05\u0232\u011A\x02\u18E8\u18E9\x07\x1D\x02\x02\u18E9\u18EA\x07" +
		"\u016A\x02\x02\u18EA\u18F2\x03\x02\x02\x02\u18EB\u18EC\x07\u01A1\x02\x02" +
		"\u18EC\u18ED\x05\u05CC\u02E7\x02\u18ED\u18EE\x05\u0232\u011A\x02\u18EE" +
		"\u18EF\x07\x1D\x02\x02\u18EF\u18F0\x07\u016A\x02\x02\u18F0\u18F2\x03\x02" +
		"\x02\x02\u18F1\u18E5\x03\x02\x02\x02\u18F1\u18E6\x03\x02\x02\x02\u18F1" +
		"\u18EB\x03\x02\x02\x02\u18F2\u02B3\x03\x02\x02\x02\u18F3\u18F6\x05\u02AA" +
		"\u0156\x02\u18F4\u18F5\t)\x02\x02\u18F5\u18F7\x05\u04BE\u0260\x02\u18F6" +
		"\u18F4\x03\x02\x02\x02\u18F6\u18F7\x03\x02\x02\x02\u18F7\u02B5\x03\x02" +
		"\x02\x02\u18F8\u18F9\x05\u02AA\u0156\x02\u18F9\u02B7\x03\x02\x02\x02\u18FA" +
		"\u1905\x07\x04\x02\x02\u18FB\u1906\x07\v\x02\x02\u18FC\u1906\x05\u02BA" +
		"\u015E\x02\u18FD\u18FE\x07U\x02\x02\u18FE\u18FF\x07\x95\x02\x02\u18FF" +
		"\u1906\x05\u02BA\u015E\x02\u1900\u1901\x05\u02BA\u015E\x02\u1901\u1902" +
		"\x07U\x02\x02\u1902\u1903\x07\x95\x02\x02\u1903\u1904\x05\u02BA\u015E" +
		"\x02\u1904\u1906\x03\x02\x02\x02\u1905\u18FB\x03\x02\x02\x02\u1905\u18FC" +
		"\x03\x02\x02\x02\u1905\u18FD\x03\x02\x02\x02\u1905\u1900\x03\x02\x02\x02" +
		"\u1906\u1907\x03\x02\x02\x02\u1907\u1908\x07\x05\x02\x02\u1908\u02B9\x03" +
		"\x02\x02\x02\u1909\u190E\x05\u02B6\u015C\x02\u190A\u190B\x07\b\x02\x02" +
		"\u190B\u190D\x05\u02B6\u015C\x02\u190C\u190A\x03\x02\x02\x02\u190D\u1910" +
		"\x03\x02\x02\x02\u190E\u190C\x03\x02\x02\x02\u190E\u190F\x03\x02\x02\x02" +
		"\u190F\u02BB\x03\x02\x02\x02\u1910\u190E\x03\x02\x02\x02\u1911\u1912\x05" +
		"\u05A6\u02D4\x02\u1912\u1913\x05\u02B8\u015D\x02\u1913\u02BD\x03\x02\x02" +
		"\x02\u1914\u1919\x05\u02BC\u015F\x02\u1915\u1916\x07\b\x02\x02\u1916\u1918" +
		"\x05\u02BC\u015F\x02\u1917\u1915\x03\x02\x02\x02\u1918\u191B\x03\x02\x02" +
		"\x02\u1919\u1917\x03\x02\x02\x02\u1919\u191A\x03\x02\x02\x02\u191A\u02BF" +
		"\x03\x02\x02\x02\u191B\u1919\x03\x02\x02\x02\u191C\u191E\x05\u02C4\u0163" +
		"\x02\u191D\u191C\x03\x02\x02\x02\u191E\u191F\x03\x02\x02\x02\u191F\u191D" +
		"\x03\x02\x02\x02\u191F\u1920\x03\x02\x02\x02\u1920\u02C1\x03\x02\x02\x02" +
		"\u1921\u1922\x07\x97\x02\x02\u1922\u1923\x07R\x02\x02\u1923\u1924\x07" +
		"P\x02\x02\u1924\u1945\x07\u01CC\x02\x02\u1925\u1926\x07\u013E\x02\x02" +
		"\u1926\u1927\x07P\x02\x02\u1927\u1928\x07R\x02\x02\u1928\u1929\x07P\x02" +
		"\x02\u1929\u1945\x07\u01CC\x02\x02\u192A\u1945\x07\u015C\x02\x02\u192B" +
		"\u1945\x07\xE0\x02\x02\u192C\u1945\x07\u0154\x02\x02\u192D\u1945\x07\u017B" +
		"\x02\x02\u192E\u192F\x07\xCF\x02\x02\u192F\u1930\x07\u0149\x02\x02\u1930" +
		"\u1945\x07\xB7\x02\x02\u1931\u1932\x07\xCF\x02\x02\u1932\u1933\x07\u0149" +
		"\x02\x02\u1933\u1945\x07\xF5\x02\x02\u1934\u1935\x07\u0149\x02\x02\u1935" +
		"\u1945\x07\xB7\x02\x02\u1936\u1937\x07\u0149\x02\x02\u1937\u1945\x07\xF5" +
		"\x02\x02\u1938\u1945\x07\xFC\x02\x02\u1939\u193A\x07O\x02\x02\u193A\u1945" +
		"\x07\xFC\x02\x02\u193B\u193C\x07\xAC\x02\x02\u193C\u1945\x05\u0142\xA2" +
		"\x02\u193D\u193E\x07\u0142\x02\x02\u193E\u1945\x05\u0142\xA2\x02\u193F" +
		"\u1940\x07\u01CD\x02\x02\u1940\u1945\x05\u0230\u0119\x02\u1941\u1945\x05" +
		"\\/\x02\u1942\u1943\x07\u01CE\x02\x02\u1943\u1945\x05\u05C4\u02E3\x02" +
		"\u1944\u1921\x03\x02\x02\x02\u1944\u1925\x03\x02\x02\x02\u1944\u192A\x03" +
		"\x02\x02\x02\u1944\u192B\x03\x02\x02\x02\u1944\u192C\x03\x02\x02\x02\u1944" +
		"\u192D\x03\x02\x02\x02\u1944\u192E\x03\x02\x02\x02\u1944\u1931\x03\x02" +
		"\x02\x02\u1944\u1934\x03\x02\x02\x02\u1944\u1936\x03\x02\x02\x02\u1944" +
		"\u1938\x03\x02\x02\x02\u1944\u1939\x03\x02\x02\x02\u1944\u193B\x03\x02" +
		"\x02\x02\u1944\u193D\x03\x02\x02\x02\u1944\u193F\x03\x02\x02\x02\u1944" +
		"\u1941\x03\x02\x02\x02\u1944\u1942\x03\x02\x02\x02\u1945\u02C3\x03\x02" +
		"\x02\x02\u1946\u1947\x07&\x02\x02\u1947\u1948\x05\u05B4\u02DB\x02\u1948" +
		"\u1949\x07\b\x02\x02\u1949\u194A\x05\u05B4\u02DB\x02\u194A\u1960\x03\x02" +
		"\x02\x02\u194B\u194C\x07\xF9\x02\x02\u194C\u1960\x05R*\x02\u194D\u194E" +
		"\x07\u01BD\x02\x02\u194E\u1960\x05\u02C6\u0164\x02\u194F\u1960\x07j\x02" +
		"\x02\u1950\u1951\x07\u014F\x02\x02\u1951\u1958\x05\u05C4\u02E3\x02\u1952" +
		"\u1953\x07`\x02\x02\u1953\u1959\x05\u05C4\u02E3\x02\u1954\u1955\x07\f" +
		"\x02\x02\u1955\u1959\x05\u05C4\u02E3\x02\u1956\u1957\x07B\x02\x02\u1957" +
		"\u1959\x07\u01B4\x02\x02\u1958\u1952\x03\x02\x02\x02\u1958\u1954\x03\x02" +
		"\x02\x02\u1958\u1956\x03\x02\x02\x02\u1959\u1960\x03\x02\x02\x02\u195A" +
		"\u195B\x07&\x02\x02\u195B\u1960\x05\u05C4\u02E3\x02\u195C\u1960\x05\b" +
		"\x05\x02\u195D\u1960\x05\u02C2\u0162\x02\u195E\u1960\x05\u05C4\u02E3\x02" +
		"\u195F\u1946\x03\x02\x02\x02\u195F\u194B\x03\x02\x02\x02\u195F\u194D\x03" +
		"\x02\x02\x02\u195F\u194F\x03\x02\x02\x02\u195F\u1950\x03\x02\x02\x02\u195F" +
		"\u195A\x03\x02\x02\x02\u195F\u195C\x03\x02\x02\x02\u195F\u195D\x03\x02" +
		"\x02\x02\u195F\u195E\x03\x02\x02\x02\u1960\u02C5\x03\x02\x02\x02\u1961" +
		"\u1962\x07@\x02\x02\u1962\u1963\x07\u016A\x02\x02\u1963\u196A\x05\u0492" +
		"\u024A\x02\u1964\u1965\x07\b\x02\x02\u1965\u1966\x07@\x02\x02\u1966\u1967" +
		"\x07\u016A\x02\x02\u1967\u1969\x05\u0492\u024A\x02\u1968\u1964\x03\x02" +
		"\x02\x02\u1969\u196C\x03\x02\x02\x02\u196A\u1968\x03\x02\x02\x02\u196A" +
		"\u196B\x03\x02\x02\x02\u196B\u02C7\x03\x02\x02\x02\u196C\u196A\x03\x02" +
		"\x02\x02\u196D\u196E\x07k\x02\x02\u196E\u196F\x05\u01F0\xF9\x02\u196F" +
		"\u02C9\x03\x02\x02\x02\u1970\u1971\x05\u059A\u02CE\x02\u1971\u1972\x05" +
		"\u02B2\u015A\x02\u1972\u02CB\x03\x02\x02\x02\u1973\u1978\x05\u02CA\u0166" +
		"\x02\u1974\u1975\x07\b\x02\x02\u1975\u1977\x05\u02CA\u0166\x02\u1976\u1974" +
		"\x03\x02\x02\x02\u1977\u197A\x03\x02\x02\x02\u1978\u1976\x03\x02\x02\x02" +
		"\u1978\u1979\x03\x02\x02\x02\u1979\u02CD\x03\x02\x02\x02\u197A\u1978\x03" +
		"\x02\x02\x02\u197B\u197C\x07\x8C\x02\x02\u197C\u197D\x05\u02D0\u0169\x02" +
		"\u197D\u197F\x05\u02D2\u016A\x02\u197E\u1980\x05\u02D4\u016B\x02\u197F" +
		"\u197E\x03\x02\x02\x02\u197F\u1980\x03\x02\x02\x02\u1980\u02CF\x03\x02" +
		"\x02\x02\u1981\u1982\x07\xD5\x02\x02\u1982\u1988\x05\u02A4\u0153\x02\u1983" +
		"\u1984\x07\u012A\x02\x02\u1984\u1988\x05\u02A0\u0151\x02\u1985\u1986\x07" +
		"\u01BC\x02\x02\u1986\u1988\x05\u029C\u014F\x02\u1987\u1981\x03\x02\x02" +
		"\x02\u1987\u1983\x03\x02\x02\x02\u1987\u1985\x03\x02\x02\x02\u1988\u02D1" +
		"\x03\x02\x02\x02\u1989\u198B\x05\u02C2\u0162\x02\u198A\u1989\x03\x02\x02" +
		"\x02\u198B\u198C\x03\x02\x02\x02\u198C\u198A\x03\x02\x02\x02\u198C\u198D" +
		"\x03\x02\x02\x02\u198D\u02D3\x03\x02\x02\x02\u198E\u198F\x07\u013D\x02" +
		"\x02\u198F\u02D5\x03\x02\x02\x02\u1990\u1991\x07\xC1\x02\x02\u1991\u1993" +
		"\x07\xD5\x02\x02\u1992\u1994\x05\u02EE\u0178\x02\u1993\u1992\x03\x02\x02" +
		"\x02\u1993\u1994\x03\x02\x02\x02\u1994\u1995\x03\x02\x02\x02\u1995\u1997" +
		"\x05\u02A2\u0152\x02\u1996\u1998\x05~@\x02\u1997\u1996\x03\x02\x02\x02" +
		"\u1997\u1998\x03\x02\x02\x02\u1998\u19AC\x03\x02\x02\x02\u1999\u199A\x07" +
		"\xC1\x02\x02\u199A\u199C\x07\u012A\x02\x02\u199B\u199D\x05\u02EE\u0178" +
		"\x02\u199C\u199B\x03\x02\x02\x02\u199C\u199D\x03\x02\x02\x02\u199D\u199E" +
		"\x03\x02\x02\x02\u199E\u19A0\x05\u029E\u0150\x02\u199F\u19A1\x05~@\x02" +
		"\u19A0\u199F\x03\x02\x02\x02\u19A0\u19A1\x03\x02\x02\x02\u19A1\u19AC\x03" +
		"\x02\x02\x02\u19A2\u19A3\x07\xC1\x02\x02\u19A3\u19A5\x07\u01BC\x02\x02" +
		"\u19A4\u19A6\x05\u02EE\u0178\x02\u19A5\u19A4\x03\x02\x02\x02\u19A5\u19A6" +
		"\x03\x02\x02\x02\u19A6\u19A7\x03\x02\x02\x02\u19A7\u19A9\x05\u029A\u014E" +
		"\x02\u19A8\u19AA\x05~@\x02\u19A9\u19A8\x03\x02\x02\x02\u19A9\u19AA\x03" +
		"\x02\x02\x02\u19AA\u19AC\x03\x02\x02\x02\u19AB\u1990\x03\x02\x02\x02\u19AB" +
		"\u1999\x03\x02\x02\x02\u19AB\u19A2\x03\x02\x02\x02\u19AC\u02D7\x03\x02" +
		"\x02\x02\u19AD\u19AE\x07\xC1\x02\x02\u19AE\u19B0\x07\x8A\x02\x02\u19AF" +
		"\u19B1\x05\u02EE\u0178\x02\u19B0\u19AF\x03\x02\x02\x02\u19B0\u19B1\x03" +
		"\x02\x02\x02\u19B1\u19B2\x03\x02\x02\x02\u19B2\u19B4\x05\u02BE\u0160\x02" +
		"\u19B3\u19B5\x05~@\x02\u19B4\u19B3\x03\x02\x02\x02\u19B4\u19B5\x03\x02" +
		"\x02\x02\u19B5\u02D9\x03\x02\x02\x02\u19B6\u19B7\x07\xC1\x02\x02\u19B7" +
		"\u19B9\x07\u0118\x02\x02\u19B8\u19BA\x05\u02EE\u0178\x02\u19B9\u19B8\x03" +
		"\x02\x02\x02\u19B9\u19BA\x03\x02\x02\x02\u19BA\u19BB\x03\x02\x02\x02\u19BB" +
		"\u19BD\x05\u02E0\u0171\x02\u19BC\u19BE\x05~@\x02\u19BD\u19BC\x03\x02\x02" +
		"\x02\u19BD\u19BE\x03\x02\x02\x02\u19BE\u02DB\x03\x02\x02\x02\u19BF\u19C0" +
		"\x07\x04\x02\x02\u19C0\u19C1\x05\u0492\u024A\x02\u19C1\u19C2\x07\x05\x02" +
		"\x02\u19C2\u19D6\x03\x02\x02\x02\u19C3\u19C4\x07\x04\x02\x02\u19C4\u19C5" +
		"\x05\u0492\u024A\x02\u19C5\u19C6\x07\b\x02\x02\u19C6\u19C7\x05\u0492\u024A" +
		"\x02\u19C7\u19C8\x07\x05\x02\x02\u19C8\u19D6\x03\x02\x02\x02\u19C9\u19CA" +
		"\x07\x04\x02\x02\u19CA\u19CB\x07\u0199\x02\x02\u19CB\u19CC\x07\b\x02\x02" +
		"\u19CC\u19CD\x05\u0492\u024A\x02\u19CD\u19CE\x07\x05\x02\x02\u19CE\u19D6" +
		"\x03\x02\x02\x02\u19CF\u19D0\x07\x04\x02\x02\u19D0\u19D1\x05\u0492\u024A" +
		"\x02\u19D1\u19D2\x07\b\x02\x02\u19D2\u19D3\x07\u0199\x02\x02\u19D3\u19D4" +
		"\x07\x05\x02\x02\u19D4\u19D6\x03\x02\x02\x02\u19D5\u19BF\x03\x02\x02\x02" +
		"\u19D5\u19C3\x03\x02\x02\x02\u19D5\u19C9\x03\x02\x02\x02\u19D5\u19CF\x03" +
		"\x02\x02\x02\u19D6\u02DD\x03\x02\x02\x02\u19D7\u19D8\x05\u05C4\u02E3\x02" +
		"\u19D8\u19D9\x07\r\x02\x02\u19D9\u19DB\x03\x02\x02\x02\u19DA\u19D7\x03" +
		"\x02\x02\x02\u19DB\u19DE\x03\x02\x02\x02\u19DC\u19DA\x03\x02\x02\x02\u19DC" +
		"\u19DD\x03\x02\x02\x02\u19DD\u19DF\x03\x02\x02\x02\u19DE\u19DC\x03\x02" +
		"\x02\x02\u19DF\u19E0\x05\u0528\u0295\x02\u19E0\u02DF\x03\x02\x02\x02\u19E1" +
		"\u19E6\x05\u02E2\u0172\x02\u19E2\u19E3\x07\b\x02\x02\u19E3\u19E5\x05\u02E2" +
		"\u0172\x02\u19E4\u19E2\x03\x02\x02\x02\u19E5\u19E8\x03\x02\x02\x02\u19E6" +
		"\u19E4\x03\x02\x02\x02\u19E6\u19E7\x03\x02\x02\x02\u19E7\u02E1\x03\x02" +
		"\x02\x02\u19E8\u19E6\x03\x02\x02\x02\u19E9\u19EA\x05\u02DE\u0170\x02\u19EA" +
		"\u19EB\x05\u02DC\u016F\x02\u19EB\u02E3\x03\x02\x02\x02\u19EC\u19ED\x07" +
		";\x02\x02\u19ED\u19EE\x05\u02E6\u0174\x02\u19EE\u02E5\x03\x02\x02\x02" +
		"\u19EF\u19F1\x05\u02E8\u0175\x02\u19F0\u19EF\x03\x02\x02\x02\u19F1\u19F2" +
		"\x03\x02\x02\x02\u19F2\u19F0\x03\x02\x02\x02\u19F2\u19F3\x03\x02\x02\x02" +
		"\u19F3\u02E7\x03\x02\x02\x02\u19F4\u19F8\x05\u05B4\u02DB\x02\u19F5\u19F6" +
		"\x07\xF9\x02\x02\u19F6\u19F8\x05R*\x02\u19F7\u19F4\x03\x02\x02\x02\u19F7" +
		"\u19F5\x03\x02\x02\x02\u19F8\u02E9\x03\x02\x02\x02\u19F9\u19FA\x070\x02" +
		"\x02\u19FA\u19FB\x07+\x02\x02\u19FB\u19FC\x07\x04\x02\x02\u19FC\u19FD" +
		"\x05\u0492\u024A\x02\u19FD\u19FE\x07&\x02\x02\u19FE\u19FF\x05\u0492\u024A" +
		"\x02\u19FF\u1A00\x07\x05\x02\x02\u1A00\u1A01\x07k\x02\x02\u1A01\u1A02" +
		"\x07\xD5\x02\x02\u1A02\u1A04\x05\u02A4\u0153\x02\u1A03\u1A05\x05\u02EC" +
		"\u0177\x02\u1A04\u1A03\x03\x02\x02\x02\u1A04\u1A05\x03\x02\x02\x02\u1A05" +
		"\u1A1F\x03\x02\x02\x02\u1A06\u1A07\x070\x02\x02\u1A07\u1A08\x07+\x02\x02" +
		"\u1A08\u1A09\x07\x04\x02\x02\u1A09\u1A0A\x05\u0492\u024A\x02\u1A0A\u1A0B" +
		"\x07&\x02\x02\u1A0B\u1A0C\x05\u0492\u024A\x02\u1A0C\u1A0D\x07\x05\x02" +
		"\x02\u1A0D\u1A0E\x07\u017D\x02\x02\u1A0E\u1A10\x07\xD5\x02\x02\u1A0F\u1A11" +
		"\x05\u02EC\u0177\x02\u1A10\u1A0F\x03\x02\x02\x02\u1A10\u1A11\x03\x02\x02" +
		"\x02\u1A11\u1A1F\x03\x02\x02\x02\u1A12\u1A13\x070\x02\x02\u1A13\u1A14" +
		"\x07+\x02\x02\u1A14\u1A15\x07\x04\x02\x02\u1A15\u1A16\x05\u0492\u024A" +
		"\x02\u1A16\u1A17\x07&\x02\x02\u1A17\u1A18\x05\u0492\u024A\x02\u1A18\u1A19" +
		"\x07\x05\x02\x02\u1A19\u1A1A\x07k\x02\x02\u1A1A\u1A1C\x07\u0192\x02\x02" +
		"\u1A1B\u1A1D\x05\u02EC\u0177\x02\u1A1C\u1A1B\x03\x02\x02\x02\u1A1C\u1A1D" +
		"\x03\x02\x02\x02\u1A1D\u1A1F\x03\x02\x02\x02\u1A1E\u19F9\x03\x02\x02\x02" +
		"\u1A1E\u1A06\x03\x02\x02\x02\u1A1E\u1A12\x03\x02\x02\x02\u1A1F\u02EB\x03" +
		"\x02\x02\x02\u1A20\u1A21\x07&\x02\x02\u1A21\u1A25\x07\xE1\x02\x02\u1A22" +
		"\u1A23\x07&\x02\x02\u1A23\u1A25\x07\x8F\x02\x02\u1A24\u1A20\x03\x02\x02" +
		"\x02\u1A24\u1A22\x03\x02\x02\x02\u1A25\u02ED\x03\x02\x02\x02\u1A26\u1A27" +
		"\x07\xDE\x02\x02\u1A27\u1A28\x07\u018E\x02\x02\u1A28\u02EF\x03\x02\x02" +
		"\x02\u1A29\u1A2B\x070\x02\x02\u1A2A\u1A2C\x05\u0294\u014B\x02\u1A2B\u1A2A" +
		"\x03\x02\x02\x02\u1A2B\u1A2C\x03\x02\x02\x02\u1A2C\u1A2D\x03\x02\x02\x02" +
		"\u1A2D\u1A2E\x07\u01BD\x02\x02\u1A2E\u1A2F\x07@\x02\x02\u1A2F\u1A30\x05" +
		"\u0492\u024A\x02\u1A30\u1A31\x07\xF9\x02\x02\u1A31\u1A32\x05\u059E\u02D0" +
		"\x02\u1A32\u1A33\x07\x04\x02\x02\u1A33\u1A34\x05\u02F2\u017A\x02\u1A34" +
		"\u1A35\x07\x05\x02\x02\u1A35\u02F1\x03\x02\x02\x02\u1A36\u1A37\x07B\x02" +
		"\x02\u1A37\u1A38\x07\u01CF\x02\x02\u1A38\u1A39\x07k\x02\x02\u1A39\u1A3A" +
		"\x07\xD5\x02\x02\u1A3A\u1A3B\x05\u02A4\u0153\x02\u1A3B\u1A3C\x07\b\x02" +
		"\x02\u1A3C\u1A3D\x07`\x02\x02\u1A3D\u1A3E\x07\u01CF\x02\x02\u1A3E\u1A3F" +
		"\x07k\x02\x02\u1A3F\u1A40\x07\xD5\x02\x02\u1A40\u1A41\x05\u02A4\u0153" +
		"\x02\u1A41\u1A59\x03\x02\x02\x02\u1A42\u1A43\x07`\x02\x02\u1A43\u1A44" +
		"\x07\u01CF\x02\x02\u1A44\u1A45\x07k\x02\x02\u1A45\u1A46\x07\xD5\x02\x02" +
		"\u1A46\u1A47\x05\u02A4\u0153\x02\u1A47\u1A48\x07\b\x02\x02\u1A48\u1A49" +
		"\x07B\x02\x02\u1A49\u1A4A\x07\u01CF\x02\x02\u1A4A\u1A4B\x07k\x02\x02\u1A4B" +
		"\u1A4C\x07\xD5\x02\x02\u1A4C\u1A4D\x05\u02A4\u0153\x02\u1A4D\u1A59\x03" +
		"\x02\x02\x02\u1A4E\u1A4F\x07B\x02\x02\u1A4F\u1A50\x07\u01CF\x02\x02\u1A50" +
		"\u1A51\x07k\x02\x02\u1A51\u1A52\x07\xD5\x02\x02\u1A52\u1A59\x05\u02A4" +
		"\u0153\x02\u1A53\u1A54\x07`\x02\x02\u1A54\u1A55\x07\u01CF\x02\x02\u1A55" +
		"\u1A56\x07k\x02\x02\u1A56\u1A57\x07\xD5\x02\x02\u1A57\u1A59\x05\u02A4" +
		"\u0153\x02\u1A58\u1A36\x03\x02\x02\x02\u1A58\u1A42\x03\x02\x02\x02\u1A58" +
		"\u1A4E\x03\x02\x02\x02\u1A58\u1A53\x03\x02\x02\x02\u1A59\u02F3\x03\x02" +
		"\x02\x02\u1A5A\u1A5B\x07\u0134\x02\x02\u1A5B\u1A6B\x05\u02F6\u017C\x02" +
		"\u1A5C\u1A5D\x07\u0134\x02\x02\u1A5D\u1A6B\x05\u02F8\u017D\x02\u1A5E\u1A5F" +
		"\x07\u0134\x02\x02\u1A5F\u1A60\x07\x04\x02\x02\u1A60\u1A61\x05\u02FA\u017E" +
		"\x02\u1A61\u1A62\x07\x05\x02\x02\u1A62\u1A63\x05\u02F6\u017C\x02\u1A63" +
		"\u1A6B\x03\x02\x02\x02\u1A64\u1A65\x07\u0134\x02\x02\u1A65\u1A66\x07\x04" +
		"\x02\x02\u1A66\u1A67\x05\u02FA\u017E\x02\u1A67\u1A68\x07\x05\x02\x02\u1A68" +
		"\u1A69\x05\u02F8\u017D\x02\u1A69\u1A6B\x03\x02\x02\x02\u1A6A\u1A5A\x03" +
		"\x02\x02\x02\u1A6A\u1A5C\x03\x02\x02\x02\u1A6A\u1A5E\x03\x02\x02\x02\u1A6A" +
		"\u1A64\x03\x02\x02\x02\u1A6B\u02F5\x03\x02\x02\x02\u1A6C\u1A6E\x07\xE4" +
		"\x02\x02\u1A6D\u1A6F\x05\u0278\u013D\x02\u1A6E\u1A6D\x03\x02\x02\x02\u1A6E" +
		"\u1A6F\x03\x02\x02\x02\u1A6F\u1A70\x03\x02\x02\x02\u1A70\u1A77\x05\u0586" +
		"\u02C4\x02\u1A71\u1A73\x07^\x02\x02\u1A72\u1A74\x05\u0278\u013D\x02\u1A73" +
		"\u1A72\x03\x02\x02\x02\u1A73\u1A74\x03\x02\x02\x02\u1A74\u1A75\x03\x02" +
		"\x02\x02\u1A75\u1A77\x05\u0580\u02C1\x02\u1A76\u1A6C\x03\x02\x02\x02\u1A76" +
		"\u1A71\x03\x02\x02\x02\u1A77\u02F7\x03\x02\x02\x02\u1A78\u1A7A\x07\u0145" +
		"\x02\x02\u1A79\u1A7B\x05\u0278\u013D\x02\u1A7A\u1A79\x03\x02\x02\x02\u1A7A" +
		"\u1A7B\x03\x02\x02\x02\u1A7B\u1A7C\x03\x02\x02\x02\u1A7C\u1A88\x05\u0590" +
		"\u02C9\x02\u1A7D\u1A7F\x07\u015F";
	private static readonly _serializedATNSegment14: string =
		"\x02\x02\u1A7E\u1A80\x05\u0278\u013D\x02\u1A7F\u1A7E\x03\x02\x02\x02\u1A7F" +
		"\u1A80\x03\x02\x02\x02\u1A80\u1A81\x03\x02\x02\x02\u1A81\u1A88\x05\u059E" +
		"\u02D0\x02\u1A82\u1A84\x07\xB1\x02\x02\u1A83\u1A85\x05\u0278\u013D\x02" +
		"\u1A84\u1A83\x03\x02\x02\x02\u1A84\u1A85\x03\x02\x02\x02\u1A85\u1A86\x03" +
		"\x02\x02\x02\u1A86\u1A88\x05\u058E\u02C8\x02\u1A87\u1A78\x03\x02\x02\x02" +
		"\u1A87\u1A7D\x03\x02\x02\x02\u1A87\u1A82\x03\x02\x02\x02\u1A88\u02F9\x03" +
		"\x02\x02\x02\u1A89\u1A8E\x05\u02FC\u017F\x02\u1A8A\u1A8B\x07\b\x02\x02" +
		"\u1A8B\u1A8D\x05\u02FC\u017F\x02\u1A8C\u1A8A\x03\x02\x02\x02\u1A8D\u1A90" +
		"\x03\x02\x02\x02\u1A8E\u1A8C\x03\x02\x02\x02\u1A8E\u1A8F\x03\x02\x02\x02" +
		"\u1A8F\u02FB\x03\x02\x02\x02\u1A90\u1A8E\x03\x02\x02\x02\u1A91\u1A92\x07" +
		"\x82\x02\x02\u1A92\u02FD\x03\x02\x02\x02\u1A93\u1A94\x07\x8C\x02\x02\u1A94" +
		"\u1A95\x07\u0161\x02\x02\u1A95\u1A96\x05\u057C\u02BF\x02\u1A96\u1A97\x07" +
		"\u014F\x02\x02\u1A97\u1A98\x05\x86D\x02\u1A98\u1AA0\x03\x02\x02\x02\u1A99" +
		"\u1A9A\x07\x8C\x02\x02\u1A9A\u1A9B\x07\u0161\x02\x02\u1A9B\u1A9C\x05\u057C" +
		"\u02BF\x02\u1A9C\u1A9D\x07\u013B\x02\x02\u1A9D\u1A9E\x05\x86D\x02\u1A9E" +
		"\u1AA0\x03\x02\x02\x02\u1A9F\u1A93\x03\x02\x02\x02\u1A9F\u1A99\x03\x02" +
		"\x02\x02\u1AA0\u02FF\x03\x02\x02\x02\u1AA1\u1AA2\x07\x8C\x02\x02\u1AA2" +
		"\u1AA3\x07\x8A\x02\x02\u1AA3\u1AA4\x05\u02BC\u015F\x02\u1AA4\u1AA5\x07" +
		"\u0137\x02\x02\u1AA5\u1AA6\x07`\x02\x02\u1AA6\u1AA7\x05\u059E\u02D0\x02" +
		"\u1AA7\u1C29\x03\x02\x02\x02\u1AA8\u1AA9\x07\x8C\x02\x02\u1AA9\u1AAA\x07" +
		"n\x02\x02\u1AAA\u1AAB\x05\u0230\u0119\x02\u1AAB\u1AAC\x07\u0137\x02\x02" +
		"\u1AAC\u1AAD\x07`\x02\x02\u1AAD\u1AAE\x05\u059E\u02D0\x02\u1AAE\u1C29" +
		"\x03\x02\x02\x02\u1AAF\u1AB0\x07\x8C\x02\x02\u1AB0\u1AB1\x07\xAA\x02\x02" +
		"\u1AB1\u1AB2\x05\u0230\u0119\x02\u1AB2\u1AB3\x07\u0137\x02\x02\u1AB3\u1AB4" +
		"\x07`\x02\x02\u1AB4\u1AB5\x05\u059E\u02D0\x02\u1AB5\u1C29\x03\x02\x02" +
		"\x02\u1AB6\u1AB7\x07\x8C\x02\x02\u1AB7\u1AB8\x07\xB1\x02\x02\u1AB8\u1AB9" +
		"\x05\u058E\u02C8\x02\u1AB9\u1ABA\x07\u0137\x02\x02\u1ABA\u1ABB\x07`\x02" +
		"\x02\u1ABB\u1ABC\x05\u058C\u02C7\x02\u1ABC\u1C29\x03\x02\x02\x02\u1ABD" +
		"\u1ABE\x07\x8C\x02\x02\u1ABE\u1ABF\x07\xBF\x02\x02\u1ABF\u1AC0\x05\u0230" +
		"\u0119\x02\u1AC0\u1AC1\x07\u0137\x02\x02\u1AC1\u1AC2\x07`\x02\x02\u1AC2" +
		"\u1AC3\x05\u059E\u02D0\x02\u1AC3\u1C29\x03\x02\x02\x02\u1AC4\u1AC5\x07" +
		"\x8C\x02\x02\u1AC5\u1AC6\x07\xBF\x02\x02\u1AC6\u1AC7\x05\u0230\u0119\x02" +
		"\u1AC7\u1AC8\x07\u0137\x02\x02\u1AC8\u1AC9\x07/\x02\x02\u1AC9\u1ACA\x05" +
		"\u059E\u02D0\x02\u1ACA\u1ACB\x07`\x02\x02\u1ACB\u1ACC\x05\u059E\u02D0" +
		"\x02\u1ACC\u1C29\x03\x02\x02\x02\u1ACD\u1ACE\x07\x8C\x02\x02\u1ACE\u1ACF" +
		"\x07A\x02\x02\u1ACF\u1AD0\x07\xB0\x02\x02\u1AD0\u1AD1\x07\u017F\x02\x02" +
		"\u1AD1\u1AD2\x05\u059E\u02D0\x02\u1AD2\u1AD3\x07\u0137\x02\x02\u1AD3\u1AD4" +
		"\x07`\x02\x02\u1AD4\u1AD5\x05\u059E\u02D0\x02\u1AD5\u1C29\x03\x02\x02" +
		"\x02\u1AD6\u1AD7\x07\x8C\x02\x02\u1AD7\u1AD8\x07\xD5\x02\x02\u1AD8\u1AD9" +
		"\x05\u02A4\u0153\x02\u1AD9\u1ADA\x07\u0137\x02\x02\u1ADA\u1ADB\x07`\x02" +
		"\x02\u1ADB\u1ADC\x05\u05A4\u02D3\x02\u1ADC\u1C29\x03\x02\x02\x02\u1ADD" +
		"\u1ADE\x07\x8C\x02\x02\u1ADE\u1ADF\x07D\x02\x02\u1ADF\u1AE0\x05\u05BE" +
		"\u02E0\x02\u1AE0\u1AE1\x07\u0137\x02\x02\u1AE1\u1AE2\x07`\x02\x02\u1AE2" +
		"\u1AE3\x05\u05BE\u02E0\x02\u1AE3\u1C29\x03\x02\x02\x02\u1AE4\u1AE6\x07" +
		"\x8C\x02\x02\u1AE5\u1AE7\x05\u0152\xAA\x02\u1AE6\u1AE5\x03\x02\x02\x02" +
		"\u1AE6\u1AE7\x03\x02\x02\x02\u1AE7\u1AE8\x03\x02\x02\x02\u1AE8\u1AE9\x07" +
		"\xF9\x02\x02\u1AE9\u1AEA\x05\u059E\u02D0\x02\u1AEA\u1AEB\x07\u0137\x02" +
		"\x02\u1AEB\u1AEC\x07`\x02\x02\u1AEC\u1AED\x05\u059E\u02D0\x02\u1AED\u1C29" +
		"\x03\x02\x02\x02\u1AEE\u1AEF\x07\x8C\x02\x02\u1AEF\u1AF0\x07\u0118\x02" +
		"\x02\u1AF0\u1AF1\x07\x9E\x02\x02\u1AF1\u1AF2\x05\u0230\u0119\x02\u1AF2" +
		"\u1AF3\x07f\x02\x02\u1AF3\u1AF4\x05\u059E\u02D0\x02\u1AF4\u1AF5\x07\u0137" +
		"\x02\x02\u1AF5\u1AF6\x07`\x02\x02\u1AF6\u1AF7\x05\u059E\u02D0\x02\u1AF7" +
		"\u1C29\x03\x02\x02\x02\u1AF8\u1AF9\x07\x8C\x02\x02\u1AF9\u1AFA\x07\u0118" +
		"\x02\x02\u1AFA\u1AFB\x07\xD0\x02\x02\u1AFB\u1AFC\x05\u0230\u0119\x02\u1AFC" +
		"\u1AFD\x07f\x02\x02\u1AFD\u1AFE\x05\u059E\u02D0\x02\u1AFE\u1AFF\x07\u0137" +
		"\x02\x02\u1AFF\u1B00\x07`\x02\x02\u1B00\u1B01\x05\u059E\u02D0\x02\u1B01" +
		"\u1C29\x03\x02\x02\x02\u1B02\u1B03\x07\x8C\x02\x02\u1B03\u1B05\x07\u01BF" +
		"\x02\x02\u1B04\u1B06\x05\u02EE\u0178\x02\u1B05\u1B04\x03\x02\x02\x02\u1B05" +
		"\u1B06\x03\x02\x02\x02\u1B06\u1B07\x03\x02\x02\x02\u1B07\u1B08\x05\u059E" +
		"\u02D0\x02\u1B08\u1B09\x07R\x02\x02\u1B09\u1B0A\x05\u0586\u02C4\x02\u1B0A" +
		"\u1B0B\x07\u0137\x02\x02\u1B0B\u1B0C\x07`\x02\x02\u1B0C\u1B0D\x05\u059E" +
		"\u02D0\x02\u1B0D\u1C29\x03\x02\x02\x02\u1B0E\u1B0F\x07\x8C\x02\x02\u1B0F" +
		"\u1B10\x07\u012A\x02\x02\u1B10\u1B11\x05\u02A0\u0151\x02\u1B11\u1B12\x07" +
		"\u0137\x02\x02\u1B12\u1B13\x07`\x02\x02\u1B13\u1B14\x05\u0598\u02CD\x02" +
		"\u1B14\u1C29\x03\x02\x02\x02\u1B15\u1B16\x07\x8C\x02\x02\u1B16\u1B17\x07" +
		"\u01C6\x02\x02\u1B17\u1B18\x05\u059E\u02D0\x02\u1B18\u1B19\x07\u0137\x02" +
		"\x02\u1B19\u1B1A\x07`\x02\x02\u1B1A\u1B1B\x05\u059E\u02D0\x02\u1B1B\u1C29" +
		"\x03\x02\x02\x02\u1B1C\u1B1D\x07\x8C\x02\x02\u1B1D\u1B1E\x07\u01BC\x02" +
		"\x02\u1B1E\u1B1F\x05\u029C\u014F\x02\u1B1F\u1B20\x07\u0137\x02\x02\u1B20" +
		"\u1B21\x07`\x02\x02\u1B21\u1B22\x05\u059E\u02D0\x02\u1B22\u1C29\x03\x02" +
		"\x02\x02\u1B23\u1B24\x07\x8C\x02\x02\u1B24\u1B25\x07\u0145\x02\x02\u1B25" +
		"\u1B26\x05\u0590\u02C9\x02\u1B26\u1B27\x07\u0137\x02\x02\u1B27\u1B28\x07" +
		"`\x02\x02\u1B28\u1B29\x052\x1A\x02\u1B29\u1C29\x03\x02\x02\x02\u1B2A\u1B2B" +
		"\x07\x8C\x02\x02\u1B2B\u1B2C\x07\u014D\x02\x02\u1B2C\u1B2D\x05\u059E\u02D0" +
		"\x02\u1B2D\u1B2E\x07\u0137\x02\x02\u1B2E\u1B2F\x07`\x02\x02\u1B2F\u1B30" +
		"\x05\u059E\u02D0\x02\u1B30\u1C29\x03\x02\x02\x02\u1B31\u1B32\x07\x8C\x02" +
		"\x02\u1B32\u1B33\x07\u01C5\x02\x02\u1B33\u1B34\x05\u059E\u02D0\x02\u1B34" +
		"\u1B35\x07\u0137\x02\x02\u1B35\u1B36\x07`\x02\x02\u1B36\u1B37\x05\u059E" +
		"\u02D0\x02\u1B37\u1C29\x03\x02\x02\x02\u1B38\u1B39\x07\x8C\x02\x02\u1B39" +
		"\u1B3B\x07^\x02\x02\u1B3A\u1B3C\x05\u02EE\u0178\x02\u1B3B\u1B3A\x03\x02" +
		"\x02\x02\u1B3B\u1B3C\x03\x02\x02\x02\u1B3C\u1B3D\x03\x02\x02\x02\u1B3D" +
		"\u1B3E\x05\u0462\u0232\x02\u1B3E\u1B3F\x07\u0137\x02\x02\u1B3F\u1B40\x07" +
		"`\x02\x02\u1B40\u1B41\x05\u057E\u02C0\x02\u1B41\u1C29\x03\x02\x02\x02" +
		"\u1B42\u1B43\x07\x8C\x02\x02\u1B43\u1B45\x07\u014A\x02\x02\u1B44\u1B46" +
		"\x05\u02EE\u0178\x02\u1B45\u1B44\x03\x02\x02\x02\u1B45\u1B46\x03\x02\x02" +
		"\x02\u1B46\u1B47\x03\x02\x02\x02\u1B47\u1B48\x05\u0586\u02C4\x02\u1B48" +
		"\u1B49\x07\u0137\x02\x02\u1B49\u1B4A\x07`\x02\x02\u1B4A\u1B4B\x05\u059E" +
		"\u02D0\x02\u1B4B\u1C29\x03\x02\x02\x02\u1B4C\u1B4D\x07\x8C\x02\x02\u1B4D" +
		"\u1B4F\x07\u017A\x02\x02\u1B4E\u1B50\x05\u02EE\u0178\x02\u1B4F\u1B4E\x03" +
		"\x02\x02\x02\u1B4F\u1B50\x03\x02\x02\x02\u1B50\u1B51\x03\x02\x02\x02\u1B51" +
		"\u1B52\x05\u0584\u02C3\x02\u1B52\u1B53\x07\u0137\x02\x02\u1B53\u1B54\x07" +
		"`\x02\x02\u1B54\u1B55\x05\u0582\u02C2\x02\u1B55\u1C29\x03\x02\x02\x02" +
		"\u1B56\u1B57\x07\x8C\x02\x02\u1B57\u1B58\x07\u0105\x02\x02\u1B58\u1B5A" +
		"\x07\u017A\x02\x02\u1B59\u1B5B\x05\u02EE\u0178\x02\u1B5A\u1B59\x03\x02" +
		"\x02\x02\u1B5A\u1B5B\x03\x02\x02\x02\u1B5B\u1B5C\x03\x02\x02\x02\u1B5C" +
		"\u1B5D\x05\u0584\u02C3\x02\u1B5D\u1B5E\x07\u0137\x02\x02\u1B5E\u1B5F\x07" +
		"`\x02\x02\u1B5F\u1B60\x05\u0582\u02C2\x02\u1B60\u1C29\x03\x02\x02\x02" +
		"\u1B61\u1B62\x07\x8C\x02\x02\u1B62\u1B64\x07\xE4\x02\x02\u1B63\u1B65\x05" +
		"\u02EE\u0178\x02\u1B64\u1B63\x03\x02\x02\x02\u1B64\u1B65\x03\x02\x02\x02" +
		"\u1B65\u1B66\x03\x02\x02\x02\u1B66\u1B67\x05\u0586\u02C4\x02\u1B67\u1B68" +
		"\x07\u0137\x02\x02\u1B68\u1B69\x07`\x02\x02\u1B69\u1B6A\x05\u059E\u02D0" +
		"\x02\u1B6A\u1C29\x03\x02\x02\x02\u1B6B\u1B6C\x07\x8C\x02\x02\u1B6C\u1B6D" +
		"\x07A\x02\x02\u1B6D\u1B6F\x07^\x02\x02\u1B6E\u1B70\x05\u02EE\u0178\x02" +
		"\u1B6F\u1B6E\x03\x02\x02\x02\u1B6F\u1B70\x03\x02\x02\x02\u1B70\u1B71\x03" +
		"\x02\x02\x02\u1B71\u1B72\x05\u0462\u0232\x02\u1B72\u1B73\x07\u0137\x02" +
		"\x02\u1B73\u1B74\x07`\x02\x02\u1B74\u1B75\x05\u057E\u02C0\x02\u1B75\u1C29" +
		"\x03\x02\x02\x02\u1B76\u1B77\x07\x8C\x02\x02\u1B77\u1B79\x07^\x02\x02" +
		"\u1B78\u1B7A\x05\u02EE\u0178\x02\u1B79\u1B78\x03\x02\x02\x02\u1B79\u1B7A" +
		"\x03\x02\x02\x02\u1B7A\u1B7B\x03\x02\x02\x02\u1B7B\u1B7C\x05\u0462\u0232" +
		"\x02\u1B7C\u1B7E\x07\u0137\x02\x02\u1B7D\u1B7F\x05\u0302\u0182\x02\u1B7E" +
		"\u1B7D\x03\x02\x02\x02\u1B7E\u1B7F\x03\x02\x02\x02\u1B7F\u1B80\x03\x02" +
		"\x02\x02\u1B80\u1B81\x05\u059A\u02CE\x02\u1B81\u1B82\x07`\x02\x02\u1B82" +
		"\u1B83\x05\u059C\u02CF\x02\u1B83\u1C29\x03\x02\x02\x02\u1B84\u1B85\x07" +
		"\x8C\x02\x02\u1B85\u1B87\x07\u017A\x02\x02\u1B86\u1B88\x05\u02EE\u0178" +
		"\x02\u1B87\u1B86\x03\x02\x02\x02\u1B87\u1B88\x03\x02\x02\x02\u1B88\u1B89" +
		"\x03\x02\x02\x02\u1B89\u1B8A\x05\u0584\u02C3\x02\u1B8A\u1B8C\x07\u0137" +
		"\x02\x02\u1B8B\u1B8D\x05\u0302\u0182\x02\u1B8C\u1B8B\x03\x02\x02\x02\u1B8C" +
		"\u1B8D\x03\x02\x02\x02\u1B8D\u1B8E\x03\x02\x02\x02\u1B8E\u1B8F\x05\u059A" +
		"\u02CE\x02\u1B8F\u1B90\x07`\x02\x02\u1B90\u1B91\x05\u059C\u02CF\x02\u1B91" +
		"\u1C29\x03\x02\x02\x02\u1B92\u1B93\x07\x8C\x02\x02\u1B93\u1B94\x07\u0105" +
		"\x02\x02\u1B94\u1B96\x07\u017A\x02\x02\u1B95\u1B97\x05\u02EE\u0178\x02" +
		"\u1B96\u1B95\x03\x02\x02\x02\u1B96\u1B97\x03\x02\x02\x02\u1B97\u1B98\x03" +
		"\x02\x02\x02\u1B98\u1B99\x05\u0584\u02C3\x02\u1B99\u1B9B\x07\u0137\x02" +
		"\x02\u1B9A\u1B9C\x05\u0302\u0182\x02\u1B9B\u1B9A\x03\x02\x02\x02\u1B9B" +
		"\u1B9C\x03\x02\x02\x02\u1B9C\u1B9D\x03\x02\x02\x02\u1B9D\u1B9E\x05\u059A" +
		"\u02CE\x02\u1B9E\u1B9F\x07`\x02\x02\u1B9F\u1BA0\x05\u059C\u02CF\x02\u1BA0" +
		"\u1C29\x03\x02\x02\x02\u1BA1\u1BA2\x07\x8C\x02\x02\u1BA2\u1BA4\x07^\x02" +
		"\x02\u1BA3\u1BA5\x05\u02EE\u0178\x02\u1BA4\u1BA3\x03\x02\x02\x02\u1BA4" +
		"\u1BA5\x03\x02\x02\x02\u1BA5\u1BA6\x03\x02\x02\x02\u1BA6\u1BA7\x05\u0462" +
		"\u0232\x02\u1BA7\u1BA8\x07\u0137\x02\x02\u1BA8\u1BA9\x07/\x02\x02\u1BA9" +
		"\u1BAA\x05\u059E\u02D0\x02\u1BAA\u1BAB\x07`\x02\x02\u1BAB\u1BAC\x05\u059E" +
		"\u02D0\x02\u1BAC\u1C29\x03\x02\x02\x02\u1BAD\u1BAE\x07\x8C\x02\x02\u1BAE" +
		"\u1BAF\x07A\x02\x02\u1BAF\u1BB1\x07^\x02\x02\u1BB0\u1BB2\x05\u02EE\u0178" +
		"\x02\u1BB1\u1BB0\x03\x02\x02\x02\u1BB1\u1BB2\x03\x02\x02\x02\u1BB2\u1BB3" +
		"\x03\x02\x02\x02\u1BB3\u1BB4\x05\u0462\u0232\x02\u1BB4\u1BB6\x07\u0137" +
		"\x02\x02\u1BB5\u1BB7\x05\u0302\u0182\x02\u1BB6\u1BB5\x03\x02\x02\x02\u1BB6" +
		"\u1BB7\x03\x02\x02\x02\u1BB7\u1BB8\x03\x02\x02\x02\u1BB8\u1BB9\x05\u059A" +
		"\u02CE\x02\u1BB9\u1BBA\x07`\x02\x02\u1BBA\u1BBB\x05\u059C\u02CF\x02\u1BBB" +
		"\u1C29\x03\x02\x02\x02\u1BBC\u1BBD\x07\x8C\x02\x02\u1BBD\u1BBE\x07\u0143" +
		"\x02\x02\u1BBE\u1BBF\x05\u059E\u02D0\x02\u1BBF\u1BC0\x07R\x02\x02\u1BC0" +
		"\u1BC1\x05\u0586\u02C4\x02\u1BC1\u1BC2\x07\u0137\x02\x02\u1BC2\u1BC3\x07" +
		"`\x02\x02\u1BC3\u1BC4\x05\u059E\u02D0\x02\u1BC4\u1C29\x03\x02\x02\x02" +
		"\u1BC5\u1BC6\x07\x8C\x02\x02\u1BC6\u1BC7\x07\u0167\x02\x02\u1BC7\u1BC8" +
		"\x05\u059E\u02D0\x02\u1BC8\u1BC9\x07R\x02\x02\u1BC9\u1BCA\x05\u0586\u02C4" +
		"\x02\u1BCA\u1BCB\x07\u0137\x02\x02\u1BCB\u1BCC\x07`\x02\x02\u1BCC\u1BCD" +
		"\x05\u059E\u02D0\x02\u1BCD\u1C29\x03\x02\x02\x02\u1BCE\u1BCF\x07\x8C\x02" +
		"\x02\u1BCF\u1BD0\x07\xC8\x02\x02\u1BD0\u1BD1\x07\u0167\x02\x02\u1BD1\u1BD2" +
		"\x05\u059E\u02D0\x02\u1BD2\u1BD3\x07\u0137\x02\x02\u1BD3\u1BD4\x07`\x02" +
		"\x02\u1BD4\u1BD5\x05\u059E\u02D0\x02\u1BD5\u1C29\x03\x02\x02\x02\u1BD6" +
		"\u1BD7\x07\x8C\x02\x02\u1BD7\u1BD8\x07\u0140\x02\x02\u1BD8\u1BD9\x05\u05BE" +
		"\u02E0\x02\u1BD9\u1BDA\x07\u0137\x02\x02\u1BDA\u1BDB\x07`\x02\x02\u1BDB" +
		"\u1BDC\x05\u05BE\u02E0\x02\u1BDC\u1C29\x03\x02\x02\x02\u1BDD\u1BDE\x07" +
		"\x8C\x02\x02\u1BDE\u1BDF\x07e\x02\x02\u1BDF\u1BE0\x05\u05BE\u02E0\x02" +
		"\u1BE0\u1BE1\x07\u0137\x02\x02\u1BE1\u1BE2\x07`\x02\x02\u1BE2\u1BE3\x05" +
		"\u05BE\u02E0\x02\u1BE3\u1C29\x03\x02\x02\x02\u1BE4\u1BE5\x07\x8C\x02\x02" +
		"\u1BE5\u1BE6\x07\u0161\x02\x02\u1BE6\u1BE7\x05\u057C\u02BF\x02\u1BE7\u1BE8" +
		"\x07\u0137\x02\x02\u1BE8\u1BE9\x07`\x02\x02\u1BE9\u1BEA\x05\u057A\u02BE" +
		"\x02\u1BEA\u1C29\x03\x02\x02\x02\u1BEB\u1BEC\x07\x8C\x02\x02\u1BEC\u1BED" +
		"\x07\u0158\x02\x02\u1BED\u1BEE\x05\u0230\u0119\x02\u1BEE\u1BEF\x07\u0137" +
		"\x02\x02\u1BEF\u1BF0\x07`\x02\x02\u1BF0\u1BF1\x05\u059E\u02D0\x02\u1BF1" +
		"\u1C29\x03\x02\x02\x02\u1BF2\u1BF3\x07\x8C\x02\x02\u1BF3\u1BF4\x07\u0165" +
		"\x02\x02\u1BF4\u1BF5\x07\u0147\x02\x02\u1BF5\u1BF6\x07\u011D\x02\x02\u1BF6" +
		"\u1BF7\x05\u0230\u0119\x02\u1BF7\u1BF8\x07\u0137\x02\x02\u1BF8\u1BF9\x07" +
		"`\x02\x02\u1BF9\u1BFA\x05\u059E\u02D0\x02\u1BFA\u1C29\x03\x02\x02\x02" +
		"\u1BFB\u1BFC\x07\x8C\x02\x02\u1BFC\u1BFD\x07\u0165\x02\x02\u1BFD\u1BFE" +
		"\x07\u0147\x02\x02\u1BFE\u1BFF\x07\xBB\x02\x02\u1BFF\u1C00\x05\u0230\u0119" +
		"\x02\u1C00\u1C01\x07\u0137\x02\x02\u1C01\u1C02\x07`\x02\x02\u1C02\u1C03" +
		"\x05\u059E\u02D0\x02\u1C03\u1C29\x03\x02\x02\x02\u1C04\u1C05\x07\x8C\x02" +
		"\x02\u1C05\u1C06\x07\u0165\x02\x02\u1C06\u1C07\x07\u0147\x02\x02\u1C07" +
		"\u1C08\x07\u0163\x02\x02\u1C08\u1C09\x05\u0230\u0119\x02\u1C09\u1C0A\x07" +
		"\u0137\x02\x02\u1C0A\u1C0B\x07`\x02\x02\u1C0B\u1C0C\x05\u059E\u02D0\x02" +
		"\u1C0C\u1C29\x03\x02\x02\x02\u1C0D\u1C0E\x07\x8C\x02\x02\u1C0E\u1C0F\x07" +
		"\u0165\x02\x02\u1C0F\u1C10\x07\u0147\x02\x02\u1C10\u1C11\x07\xA5\x02\x02" +
		"\u1C11\u1C12\x05\u0230\u0119\x02\u1C12\u1C13\x07\u0137\x02\x02\u1C13\u1C14" +
		"\x07`\x02\x02\u1C14\u1C15\x05\u059E\u02D0\x02\u1C15\u1C29\x03\x02\x02" +
		"\x02\u1C16\u1C17\x07\x8C\x02\x02\u1C17\u1C18\x07\u016A\x02\x02\u1C18\u1C19" +
		"\x05\u0230\u0119\x02\u1C19\u1C1A\x07\u0137\x02\x02\u1C1A\u1C1B\x07`\x02" +
		"\x02\u1C1B\u1C1C\x05\u059E\u02D0\x02\u1C1C\u1C29\x03\x02\x02\x02\u1C1D" +
		"\u1C1E\x07\x8C\x02\x02\u1C1E\u1C1F\x07\u016A\x02\x02\u1C1F\u1C20\x05\u0230" +
		"\u0119\x02\u1C20\u1C21\x07\u0137\x02\x02\u1C21\u1C22\x07\x91\x02\x02\u1C22" +
		"\u1C23\x05\u059E\u02D0\x02\u1C23\u1C24\x07`\x02\x02\u1C24\u1C26\x05\u059E" +
		"\u02D0\x02\u1C25\u1C27\x05~@\x02\u1C26\u1C25\x03\x02\x02\x02\u1C26\u1C27" +
		"\x03\x02\x02\x02\u1C27\u1C29\x03\x02\x02\x02\u1C28\u1AA1\x03\x02\x02\x02" +
		"\u1C28\u1AA8\x03\x02\x02\x02\u1C28\u1AAF\x03\x02\x02\x02\u1C28\u1AB6\x03" +
		"\x02\x02\x02\u1C28\u1ABD\x03\x02\x02\x02\u1C28\u1AC4\x03\x02\x02\x02\u1C28" +
		"\u1ACD\x03\x02\x02\x02\u1C28\u1AD6\x03\x02\x02\x02\u1C28\u1ADD\x03\x02" +
		"\x02\x02\u1C28\u1AE4\x03\x02\x02\x02\u1C28\u1AEE\x03\x02\x02\x02\u1C28" +
		"\u1AF8\x03\x02\x02\x02\u1C28\u1B02\x03\x02\x02\x02\u1C28\u1B0E\x03\x02" +
		"\x02\x02\u1C28\u1B15\x03\x02\x02\x02\u1C28\u1B1C\x03\x02\x02\x02\u1C28" +
		"\u1B23\x03\x02\x02\x02\u1C28\u1B2A\x03\x02\x02\x02\u1C28\u1B31\x03\x02" +
		"\x02\x02\u1C28\u1B38\x03\x02\x02\x02\u1C28\u1B42\x03\x02\x02\x02\u1C28" +
		"\u1B4C\x03\x02\x02\x02\u1C28\u1B56\x03\x02\x02\x02\u1C28\u1B61\x03\x02" +
		"\x02\x02\u1C28\u1B6B\x03\x02\x02\x02\u1C28\u1B76\x03\x02\x02\x02\u1C28" +
		"\u1B84\x03\x02\x02\x02\u1C28\u1B92\x03\x02\x02\x02\u1C28\u1BA1\x03\x02" +
		"\x02\x02\u1C28\u1BAD\x03\x02\x02\x02\u1C28\u1BBC\x03\x02\x02\x02\u1C28" +
		"\u1BC5\x03\x02\x02\x02\u1C28\u1BCE\x03\x02\x02\x02\u1C28\u1BD6\x03\x02" +
		"\x02\x02\u1C28\u1BDD\x03\x02\x02\x02\u1C28\u1BE4\x03\x02\x02\x02\u1C28" +
		"\u1BEB\x03\x02\x02\x02\u1C28\u1BF2\x03\x02\x02\x02\u1C28\u1BFB\x03\x02" +
		"\x02\x02\u1C28\u1C04\x03\x02\x02\x02\u1C28\u1C0D\x03\x02\x02\x02\u1C28" +
		"\u1C16\x03\x02\x02\x02\u1C28\u1C1D\x03\x02\x02\x02\u1C29\u0301\x03\x02" +
		"\x02\x02\u1C2A\u1C2B\x07.\x02\x02\u1C2B\u0303\x03\x02\x02\x02\u1C2C\u1C2D" +
		"\x07\u014F\x02\x02\u1C2D\u1C2E\x07\xB0\x02\x02\u1C2E\u0305\x03\x02\x02" +
		"\x02\u1C2F\u1C30\x07\x8C\x02\x02\u1C30\u1C31\x07\xD5\x02\x02\u1C31\u1C33" +
		"\x05\u02A4\u0153\x02\u1C32\u1C34\x05\u0308\u0185\x02\u1C33\u1C32\x03\x02" +
		"\x02\x02\u1C33\u1C34\x03\x02\x02\x02\u1C34\u1C35\x03\x02\x02\x02\u1C35" +
		"\u1C36\x07\u01D0\x02\x02\u1C36\u1C37\x07R\x02\x02\u1C37\u1C38\x07\xCE" +
		"\x02\x02\u1C38\u1C39\x05\u059E\u02D0\x02\u1C39\u1C75\x03\x02\x02\x02\u1C3A" +
		"\u1C3B\x07\x8C\x02\x02\u1C3B\u1C3C\x07\u012A\x02\x02\u1C3C\u1C3E\x05\u02A0" +
		"\u0151\x02\u1C3D\u1C3F\x05\u0308\u0185\x02\u1C3E\u1C3D\x03\x02\x02\x02" +
		"\u1C3E\u1C3F\x03\x02\x02\x02\u1C3F\u1C40\x03\x02\x02\x02\u1C40\u1C41\x07" +
		"\u01D0\x02\x02\u1C41\u1C42\x07R\x02\x02\u1C42\u1C43\x07\xCE\x02\x02\u1C43" +
		"\u1C44\x05\u059E\u02D0\x02\u1C44\u1C75\x03\x02\x02\x02\u1C45\u1C46\x07" +
		"\x8C\x02\x02\u1C46\u1C47\x07\u01BC\x02\x02\u1C47\u1C49\x05\u029C\u014F" +
		"\x02\u1C48\u1C4A\x05\u0308\u0185\x02\u1C49\u1C48\x03\x02\x02\x02\u1C49" +
		"\u1C4A\x03\x02\x02\x02\u1C4A\u1C4B\x03\x02\x02\x02\u1C4B\u1C4C\x07\u01D0" +
		"\x02\x02\u1C4C\u1C4D\x07R\x02\x02\u1C4D\u1C4E\x07\xCE\x02\x02\u1C4E\u1C4F" +
		"\x05\u059E\u02D0\x02\u1C4F\u1C75\x03\x02\x02\x02\u1C50\u1C51\x07\x8C\x02" +
		"\x02\u1C51\u1C52\x07\u0167\x02\x02\u1C52\u1C53\x05\u059E\u02D0\x02\u1C53" +
		"\u1C54\x07R\x02\x02\u1C54\u1C56\x05\u0586\u02C4\x02\u1C55\u1C57\x05\u0308" +
		"\u0185\x02\u1C56\u1C55\x03\x02\x02\x02\u1C56\u1C57\x03\x02\x02\x02\u1C57" +
		"\u1C58\x03\x02\x02\x02\u1C58\u1C59\x07\u01D0\x02\x02\u1C59\u1C5A\x07R" +
		"\x02\x02\u1C5A\u1C5B\x07\xCE\x02\x02\u1C5B\u1C5C\x05\u059E\u02D0\x02\u1C5C" +
		"\u1C75\x03\x02\x02\x02\u1C5D\u1C5E\x07\x8C\x02\x02\u1C5E\u1C5F\x07\u0105" +
		"\x02\x02\u1C5F\u1C60\x07\u017A\x02\x02\u1C60\u1C62\x05\u0584\u02C3\x02" +
		"\u1C61\u1C63\x05\u0308\u0185\x02\u1C62\u1C61\x03\x02\x02\x02\u1C62\u1C63" +
		"\x03\x02\x02\x02\u1C63\u1C64\x03\x02\x02\x02\u1C64\u1C65\x07\u01D0\x02" +
		"\x02\u1C65\u1C66\x07R\x02\x02\u1C66\u1C67\x07\xCE\x02\x02\u1C67\u1C68" +
		"\x05\u059E\u02D0\x02\u1C68\u1C75\x03\x02\x02\x02\u1C69\u1C6A\x07\x8C\x02" +
		"\x02\u1C6A\u1C6B\x07\xE4\x02\x02\u1C6B\u1C6D\x05\u0586\u02C4\x02\u1C6C" +
		"\u1C6E\x05\u0308\u0185\x02\u1C6D\u1C6C\x03\x02\x02\x02\u1C6D\u1C6E\x03" +
		"\x02\x02\x02\u1C6E\u1C6F\x03\x02\x02\x02\u1C6F\u1C70\x07\u01D0\x02\x02" +
		"\u1C70\u1C71\x07R\x02\x02\u1C71\u1C72\x07\xCE\x02\x02\u1C72\u1C73\x05" +
		"\u059E\u02D0\x02\u1C73\u1C75\x03\x02\x02\x02\u1C74\u1C2F\x03\x02\x02\x02" +
		"\u1C74\u1C3A\x03\x02\x02\x02\u1C74\u1C45\x03\x02\x02\x02\u1C74\u1C50\x03" +
		"\x02\x02\x02\u1C74\u1C5D\x03\x02\x02\x02\u1C74\u1C69\x03\x02\x02\x02\u1C75" +
		"\u0307\x03\x02\x02\x02\u1C76\u1C77\x07\u010F\x02\x02\u1C77\u0309\x03\x02" +
		"\x02\x02\u1C78\u1C79\x07\x8C\x02\x02\u1C79\u1C7A\x07\x8A\x02\x02\u1C7A" +
		"\u1C7B\x05\u02BC\u015F\x02\u1C7B\u1C7C\x07\u014F\x02\x02\u1C7C\u1C7D\x07" +
		"\u0145\x02\x02\u1C7D\u1C7E\x052\x1A\x02\u1C7E\u1D32\x03\x02\x02\x02\u1C7F" +
		"\u1C80\x07\x8C\x02\x02\u1C80\u1C81\x07n\x02\x02\u1C81\u1C82\x05\u0230" +
		"\u0119\x02\u1C82\u1C83\x07\u014F\x02\x02\u1C83\u1C84\x07\u0145\x02\x02" +
		"\u1C84\u1C85\x052\x1A\x02\u1C85\u1D32\x03\x02\x02\x02\u1C86\u1C87\x07" +
		"\x8C\x02\x02\u1C87\u1C88\x07\xAA\x02\x02\u1C88\u1C89\x05\u0230\u0119\x02" +
		"\u1C89\u1C8A\x07\u014F\x02\x02\u1C8A\u1C8B\x07\u0145\x02\x02\u1C8B\u1C8C" +
		"\x052\x1A\x02\u1C8C\u1D32\x03\x02\x02\x02\u1C8D\u1C8E\x07\x8C\x02\x02" +
		"\u1C8E\u1C8F\x07\xBF\x02\x02\u1C8F\u1C90\x05\u0230\u0119\x02\u1C90\u1C91" +
		"\x07\u014F\x02\x02\u1C91\u1C92\x07\u0145\x02\x02\u1C92\u1C93\x052\x1A" +
		"\x02\u1C93\u1D32\x03\x02\x02\x02\u1C94\u1C95\x07\x8C\x02\x02\u1C95\u1C96" +
		"\x07\xCE\x02\x02\u1C96\u1C97\x05\u059E\u02D0\x02\u1C97\u1C98\x07\u014F" +
		"\x02\x02\u1C98\u1C99\x07\u0145\x02\x02\u1C99\u1C9A\x052\x1A\x02\u1C9A" +
		"\u1D32\x03\x02\x02\x02\u1C9B\u1C9C\x07\x8C\x02\x02\u1C9C\u1C9D\x07\xD5" +
		"\x02\x02\u1C9D\u1C9E\x05\u02A4\u0153\x02\u1C9E\u1C9F\x07\u014F\x02\x02" +
		"\u1C9F\u1CA0\x07\u0145\x02\x02\u1CA0\u1CA1\x052\x1A\x02\u1CA1\u1D32\x03" +
		"\x02\x02\x02\u1CA2\u1CA3\x07\x8C\x02\x02\u1CA3\u1CA4\x07\u0118\x02\x02" +
		"\u1CA4\u1CA5\x05\u02E2\u0172\x02\u1CA5\u1CA6\x07\u014F\x02\x02\u1CA6\u1CA7" +
		"\x07\u0145\x02\x02\u1CA7\u1CA8\x052\x1A\x02\u1CA8\u1D32\x03\x02\x02\x02" +
		"\u1CA9\u1CAA\x07\x8C\x02\x02\u1CAA\u1CAB\x07\u0118\x02\x02\u1CAB\u1CAC" +
		"\x07\x9E\x02\x02\u1CAC\u1CAD\x05\u0230\u0119\x02\u1CAD\u1CAE\x07f\x02" +
		"\x02\u1CAE\u1CAF\x05\u059E\u02D0\x02\u1CAF\u1CB0\x07\u014F\x02\x02\u1CB0" +
		"\u1CB1\x07\u0145\x02\x02\u1CB1\u1CB2\x052\x1A\x02\u1CB2\u1D32\x03\x02" +
		"\x02\x02\u1CB3\u1CB4\x07\x8C\x02\x02\u1CB4\u1CB5\x07\u0118\x02\x02\u1CB5" +
		"\u1CB6\x07\xD0\x02\x02\u1CB6\u1CB7\x05\u0230\u0119\x02\u1CB7\u1CB8\x07" +
		"f\x02\x02\u1CB8\u1CB9\x05\u059E\u02D0\x02\u1CB9\u1CBA\x07\u014F\x02\x02" +
		"\u1CBA\u1CBB\x07\u0145\x02\x02\u1CBB\u1CBC\x052\x1A\x02\u1CBC\u1D32\x03" +
		"\x02\x02\x02\u1CBD\u1CBE\x07\x8C\x02\x02\u1CBE\u1CBF\x07\u012A\x02\x02" +
		"\u1CBF\u1CC0\x05\u02A0\u0151\x02\u1CC0\u1CC1\x07\u014F\x02\x02\u1CC1\u1CC2" +
		"\x07\u0145\x02\x02\u1CC2\u1CC3\x052\x1A\x02\u1CC3\u1D32\x03\x02\x02\x02" +
		"\u1CC4\u1CC5\x07\x8C\x02\x02\u1CC5\u1CC6\x07\u01BC\x02\x02\u1CC6\u1CC7" +
		"\x05\u029C\u014F\x02\u1CC7\u1CC8\x07\u014F\x02\x02\u1CC8\u1CC9\x07\u0145" +
		"\x02\x02\u1CC9\u1CCA\x052\x1A\x02\u1CCA\u1D32\x03\x02\x02\x02\u1CCB\u1CCC" +
		"\x07\x8C\x02\x02\u1CCC\u1CCE\x07^\x02\x02\u1CCD\u1CCF\x05\u02EE\u0178" +
		"\x02\u1CCE\u1CCD\x03\x02\x02\x02\u1CCE\u1CCF\x03\x02\x02\x02\u1CCF\u1CD0" +
		"\x03\x02\x02\x02\u1CD0\u1CD1\x05\u0462\u0232\x02\u1CD1\u1CD2\x07\u014F" +
		"\x02\x02\u1CD2\u1CD3\x07\u0145\x02\x02\u1CD3\u1CD4\x052\x1A\x02\u1CD4" +
		"\u1D32\x03\x02\x02\x02\u1CD5\u1CD6\x07\x8C\x02\x02\u1CD6\u1CD7\x07\u0158" +
		"\x02\x02\u1CD7\u1CD8\x05\u0230\u0119\x02\u1CD8\u1CD9\x07\u014F\x02\x02" +
		"\u1CD9\u1CDA\x07\u0145\x02\x02\u1CDA\u1CDB\x052\x1A\x02\u1CDB\u1D32\x03" +
		"\x02\x02\x02\u1CDC\u1CDD\x07\x8C\x02\x02\u1CDD\u1CDE\x07\u0165\x02\x02" +
		"\u1CDE\u1CDF\x07\u0147\x02\x02\u1CDF\u1CE0\x07\u011D\x02\x02\u1CE0\u1CE1" +
		"\x05\u0230\u0119\x02\u1CE1\u1CE2\x07\u014F\x02\x02\u1CE2\u1CE3\x07\u0145" +
		"\x02\x02\u1CE3\u1CE4\x052\x1A\x02\u1CE4\u1D32\x03\x02\x02\x02\u1CE5\u1CE6" +
		"\x07\x8C\x02\x02\u1CE6\u1CE7\x07\u0165\x02\x02\u1CE7\u1CE8\x07\u0147\x02" +
		"\x02\u1CE8\u1CE9\x07\xBB\x02\x02\u1CE9\u1CEA\x05\u0230\u0119\x02\u1CEA" +
		"\u1CEB\x07\u014F\x02\x02\u1CEB\u1CEC\x07\u0145\x02\x02\u1CEC\u1CED\x05" +
		"2\x1A\x02\u1CED\u1D32\x03\x02\x02\x02\u1CEE\u1CEF\x07\x8C\x02\x02\u1CEF" +
		"\u1CF0\x07\u0165\x02\x02\u1CF0\u1CF1\x07\u0147\x02\x02\u1CF1\u1CF2\x07" +
		"\u0163\x02\x02\u1CF2\u1CF3\x05\u0230\u0119\x02\u1CF3\u1CF4\x07\u014F\x02" +
		"\x02\u1CF4\u1CF5\x07\u0145\x02\x02\u1CF5\u1CF6\x052\x1A\x02\u1CF6\u1D32" +
		"\x03\x02\x02\x02\u1CF7\u1CF8\x07\x8C\x02\x02\u1CF8\u1CF9\x07\u0165\x02" +
		"\x02\u1CF9\u1CFA\x07\u0147\x02\x02\u1CFA\u1CFB\x07\xA5\x02\x02\u1CFB\u1CFC" +
		"\x05\u0230\u0119\x02\u1CFC\u1CFD\x07\u014F\x02\x02\u1CFD\u1CFE\x07\u0145" +
		"\x02\x02\u1CFE\u1CFF\x052\x1A\x02\u1CFF\u1D32\x03\x02\x02\x02\u1D00\u1D01" +
		"\x07\x8C\x02\x02\u1D01\u1D03\x07\u014A\x02\x02\u1D02\u1D04\x05\u02EE\u0178" +
		"\x02\u1D03\u1D02\x03\x02\x02\x02\u1D03\u1D04\x03\x02\x02\x02\u1D04\u1D05" +
		"\x03\x02\x02\x02\u1D05\u1D06\x05\u0586\u02C4\x02\u1D06\u1D07\x07\u014F" +
		"\x02\x02\u1D07\u1D08\x07\u0145\x02\x02\u1D08\u1D09\x052\x1A\x02\u1D09" +
		"\u1D32\x03\x02\x02\x02\u1D0A\u1D0B\x07\x8C\x02\x02\u1D0B\u1D0D\x07\u017A" +
		"\x02\x02\u1D0C\u1D0E\x05\u02EE\u0178\x02\u1D0D\u1D0C\x03\x02\x02\x02\u1D0D" +
		"\u1D0E\x03\x02\x02\x02\u1D0E\u1D0F\x03\x02\x02\x02\u1D0F\u1D10\x05\u0584" +
		"\u02C3\x02\u1D10\u1D11\x07\u014F\x02\x02\u1D11\u1D12\x07\u0145\x02\x02" +
		"\u1D12\u1D13\x052\x1A\x02\u1D13\u1D32\x03\x02\x02\x02\u1D14\u1D15\x07" +
		"\x8C\x02\x02\u1D15\u1D16\x07\u0105\x02\x02\u1D16\u1D18\x07\u017A\x02\x02" +
		"\u1D17\u1D19\x05\u02EE\u0178\x02\u1D18\u1D17\x03\x02\x02\x02\u1D18\u1D19" +
		"\x03\x02\x02\x02\u1D19\u1D1A\x03\x02\x02\x02\u1D1A\u1D1B\x05\u0584\u02C3" +
		"\x02\u1D1B\u1D1C\x07\u014F\x02\x02\u1D1C\u1D1D\x07\u0145\x02\x02\u1D1D" +
		"\u1D1E\x052\x1A\x02\u1D1E\u1D32\x03\x02\x02\x02\u1D1F\u1D20\x07\x8C\x02" +
		"\x02\u1D20\u1D21\x07A\x02\x02\u1D21\u1D23\x07^\x02\x02\u1D22\u1D24\x05" +
		"\u02EE\u0178\x02\u1D23\u1D22\x03\x02\x02\x02\u1D23\u1D24\x03\x02\x02\x02" +
		"\u1D24\u1D25\x03\x02\x02\x02\u1D25\u1D26\x05\u0462\u0232\x02\u1D26\u1D27" +
		"\x07\u014F\x02\x02\u1D27\u1D28\x07\u0145\x02\x02\u1D28\u1D29\x052\x1A" +
		"\x02\u1D29\u1D32\x03\x02\x02\x02\u1D2A\u1D2B\x07\x8C\x02\x02\u1D2B\u1D2C" +
		"\x07\u016A\x02\x02\u1D2C\u1D2D\x05\u0230\u0119\x02\u1D2D\u1D2E\x07\u014F" +
		"\x02\x02\u1D2E\u1D2F\x07\u0145\x02\x02\u1D2F\u1D30\x052\x1A\x02\u1D30" +
		"\u1D32\x03\x02\x02\x02\u1D31\u1C78\x03\x02\x02\x02\u1D31\u1C7F\x03\x02" +
		"\x02\x02\u1D31\u1C86\x03\x02\x02\x02\u1D31\u1C8D\x03\x02\x02\x02\u1D31" +
		"\u1C94\x03\x02\x02\x02\u1D31\u1C9B\x03\x02\x02\x02\u1D31\u1CA2\x03\x02" +
		"\x02\x02\u1D31\u1CA9\x03\x02\x02\x02\u1D31\u1CB3\x03\x02\x02\x02\u1D31" +
		"\u1CBD\x03\x02\x02\x02\u1D31\u1CC4\x03\x02\x02\x02\u1D31\u1CCB\x03\x02" +
		"\x02\x02\u1D31\u1CD5\x03\x02\x02\x02\u1D31\u1CDC\x03\x02\x02\x02\u1D31" +
		"\u1CE5\x03\x02\x02\x02\u1D31\u1CEE\x03\x02\x02\x02\u1D31\u1CF7\x03\x02" +
		"\x02\x02\u1D31\u1D00\x03\x02\x02\x02\u1D31\u1D0A\x03\x02\x02\x02\u1D31" +
		"\u1D14\x03\x02\x02\x02\u1D31\u1D1F\x03\x02\x02\x02\u1D31\u1D2A\x03\x02" +
		"\x02\x02\u1D32\u030B\x03\x02\x02\x02\u1D33\u1D34\x07\x8C\x02\x02\u1D34" +
		"\u1D35\x07\u0118\x02\x02\u1D35\u1D36\x05\u02E2\u0172\x02\u1D36\u1D37\x07" +
		"\u014F\x02\x02\u1D37\u1D38\x07\x04\x02\x02\u1D38\u1D39\x05\u030E\u0188" +
		"\x02\u1D39\u1D3A\x07\x05\x02\x02\u1D3A\u030D\x03\x02\x02\x02\u1D3B\u1D40" +
		"\x05\u0310\u0189\x02\u1D3C\u1D3D\x07\b\x02\x02\u1D3D\u1D3F\x05\u0310\u0189" +
		"\x02\u1D3E\u1D3C\x03\x02\x02\x02\u1D3F\u1D42\x03\x02\x02\x02\u1D40\u1D3E" +
		"\x03\x02\x02\x02\u1D40\u1D41\x03\x02\x02\x02\u1D41\u030F\x03\x02\x02\x02" +
		"\u1D42\u1D40\x03\x02\x02\x02\u1D43\u1D44\x05\u05D4\u02EB\x02\u1D44\u1D45" +
		"\x07\f\x02\x02\u1D45\u1D46\x07\u0199\x02\x02\u1D46\u1D4C\x03\x02\x02\x02" +
		"\u1D47\u1D48\x05\u05D4\u02EB\x02\u1D48\u1D49\x07\f\x02\x02\u1D49\u1D4A" +
		"\x05\u0312\u018A\x02\u1D4A\u1D4C\x03\x02\x02\x02\u1D4B\u1D43\x03\x02\x02" +
		"\x02\u1D4B\u1D47\x03\x02\x02\x02\u1D4C\u0311\x03\x02\x02\x02\u1D4D\u1D53" +
		"\x05\u02B2\u015A\x02\u1D4E\u1D53\x05\u05E0\u02F1\x02\u1D4F\u1D53\x05\u052E" +
		"\u0298\x02\u1D50\u1D53\x05\u0142\xA2\x02\u1D51\u1D53\x05\u05B4\u02DB\x02" +
		"\u1D52\u1D4D\x03\x02\x02\x02\u1D52\u1D4E\x03\x02\x02\x02\u1D52\u1D4F\x03" +
		"\x02\x02\x02\u1D52\u1D50\x03\x02\x02\x02";
	private static readonly _serializedATNSegment15: string =
		"\u1D52\u1D51\x03\x02\x02\x02\u1D53\u0313\x03\x02\x02\x02\u1D54\u1D55\x07" +
		"\x8C\x02\x02\u1D55\u1D56\x07\u016A\x02\x02\u1D56\u1D57\x05\u0230\u0119" +
		"\x02\u1D57\u1D58\x07\u014F\x02\x02\u1D58\u1D59\x07\x04\x02\x02\u1D59\u1D5A" +
		"\x05\u030E\u0188\x02\u1D5A\u1D5B\x07\x05\x02\x02\u1D5B\u0315\x03\x02\x02" +
		"\x02\u1D5C\u1D5D\x07\x8C\x02\x02\u1D5D\u1D5E\x07\x8A\x02\x02\u1D5E\u1D5F" +
		"\x05\u02BC\u015F\x02\u1D5F\u1D60\x07\u011C\x02\x02\u1D60\u1D61\x07`\x02" +
		"\x02\u1D61\u1D62\x05\u05C0\u02E1\x02\u1D62\u1E16\x03\x02\x02\x02\u1D63" +
		"\u1D64\x07\x8C\x02\x02\u1D64\u1D65\x07n\x02\x02\u1D65\u1D66\x05\u0230" +
		"\u0119\x02\u1D66\u1D67\x07\u011C\x02\x02\u1D67\u1D68\x07`\x02\x02\u1D68" +
		"\u1D69\x05\u05C0\u02E1\x02\u1D69\u1E16\x03\x02\x02\x02\u1D6A\u1D6B\x07" +
		"\x8C\x02\x02\u1D6B\u1D6C\x07\xAA\x02\x02\u1D6C\u1D6D\x05\u0230\u0119\x02" +
		"\u1D6D\u1D6E\x07\u011C\x02\x02\u1D6E\u1D6F\x07`\x02\x02\u1D6F\u1D70\x05" +
		"\u05C0\u02E1\x02\u1D70\u1E16\x03\x02\x02\x02\u1D71\u1D72\x07\x8C\x02\x02" +
		"\u1D72\u1D73\x07\xB1\x02\x02\u1D73\u1D74\x05\u058E\u02C8\x02\u1D74\u1D75" +
		"\x07\u011C\x02\x02\u1D75\u1D76\x07`\x02\x02\u1D76\u1D77\x05\u05C0\u02E1" +
		"\x02\u1D77\u1E16\x03\x02\x02\x02\u1D78\u1D79\x07\x8C\x02\x02\u1D79\u1D7A" +
		"\x07\xBF\x02\x02\u1D7A\u1D7B\x05\u0230\u0119\x02\u1D7B\u1D7C\x07\u011C" +
		"\x02\x02\u1D7C\u1D7D\x07`\x02\x02\u1D7D\u1D7E\x05\u05C0\u02E1\x02\u1D7E" +
		"\u1E16\x03\x02\x02\x02\u1D7F\u1D80\x07\x8C\x02\x02\u1D80\u1D81\x07\xD5" +
		"\x02\x02\u1D81\u1D82\x05\u02A4\u0153\x02\u1D82\u1D83\x07\u011C\x02\x02" +
		"\u1D83\u1D84\x07`\x02\x02\u1D84\u1D85\x05\u05C0\u02E1\x02\u1D85\u1E16" +
		"\x03\x02\x02\x02\u1D86\u1D88\x07\x8C\x02\x02\u1D87\u1D89\x05\u0152\xAA" +
		"\x02\u1D88\u1D87\x03\x02\x02\x02\u1D88\u1D89\x03\x02\x02\x02\u1D89\u1D8A" +
		"\x03\x02\x02\x02\u1D8A\u1D8B\x07\xF9\x02\x02\u1D8B\u1D8C\x05\u059E\u02D0" +
		"\x02\u1D8C\u1D8D\x07\u011C\x02\x02\u1D8D\u1D8E\x07`\x02\x02\u1D8E\u1D8F" +
		"\x05\u05C0\u02E1\x02\u1D8F\u1E16\x03\x02\x02\x02\u1D90\u1D91\x07\x8C\x02" +
		"\x02\u1D91\u1D92\x07\xFA\x02\x02\u1D92\u1D93\x07\u0114\x02\x02\u1D93\u1D94" +
		"\x05\u0142\xA2\x02\u1D94\u1D95\x07\u011C\x02\x02\u1D95\u1D96\x07`\x02" +
		"\x02\u1D96\u1D97\x05\u05C0\u02E1\x02\u1D97\u1E16\x03\x02\x02\x02\u1D98" +
		"\u1D99\x07\x8C\x02\x02\u1D99\u1D9A\x07\u0118\x02\x02\u1D9A\u1D9B\x05\u02E2" +
		"\u0172\x02\u1D9B\u1D9C\x07\u011C\x02\x02\u1D9C\u1D9D\x07`\x02\x02\u1D9D" +
		"\u1D9E\x05\u05C0\u02E1\x02\u1D9E\u1E16\x03\x02\x02\x02\u1D9F\u1DA0\x07" +
		"\x8C\x02\x02\u1DA0\u1DA1\x07\u0118\x02\x02\u1DA1\u1DA2\x07\x9E\x02\x02" +
		"\u1DA2\u1DA3\x05\u0230\u0119\x02\u1DA3\u1DA4\x07f\x02\x02\u1DA4\u1DA5" +
		"\x05\u059E\u02D0\x02\u1DA5\u1DA6\x07\u011C\x02\x02\u1DA6\u1DA7\x07`\x02" +
		"\x02\u1DA7\u1DA8\x05\u05C0\u02E1\x02\u1DA8\u1E16\x03\x02\x02\x02\u1DA9" +
		"\u1DAA\x07\x8C\x02\x02\u1DAA\u1DAB\x07\u0118\x02\x02\u1DAB\u1DAC\x07\xD0" +
		"\x02\x02\u1DAC\u1DAD\x05\u0230\u0119\x02\u1DAD\u1DAE\x07f\x02\x02\u1DAE" +
		"\u1DAF\x05\u059E\u02D0\x02\u1DAF\u1DB0\x07\u011C\x02\x02\u1DB0\u1DB1\x07" +
		"`\x02\x02\u1DB1\u1DB2\x05\u05C0\u02E1\x02\u1DB2\u1E16\x03\x02\x02\x02" +
		"\u1DB3\u1DB4\x07\x8C\x02\x02\u1DB4\u1DB5\x07\u012A\x02\x02\u1DB5\u1DB6" +
		"\x05\u02A0\u0151\x02\u1DB6\u1DB7\x07\u011C\x02\x02\u1DB7\u1DB8\x07`\x02" +
		"\x02\u1DB8\u1DB9\x05\u05C0\u02E1\x02\u1DB9\u1E16\x03\x02\x02\x02\u1DBA" +
		"\u1DBB\x07\x8C\x02\x02\u1DBB\u1DBC\x07\u01BC\x02\x02\u1DBC\u1DBD\x05\u029C" +
		"\u014F\x02\u1DBD\u1DBE\x07\u011C\x02\x02\u1DBE\u1DBF\x07`\x02\x02\u1DBF" +
		"\u1DC0\x05\u05C0\u02E1\x02\u1DC0\u1E16\x03\x02\x02\x02\u1DC1\u1DC2\x07" +
		"\x8C\x02\x02\u1DC2\u1DC3\x07\u0145\x02\x02\u1DC3\u1DC4\x05\u0590\u02C9" +
		"\x02\u1DC4\u1DC5\x07\u011C\x02\x02\u1DC5\u1DC6\x07`\x02\x02\u1DC6\u1DC7" +
		"\x05\u05C0\u02E1\x02\u1DC7\u1E16\x03\x02\x02\x02\u1DC8\u1DC9\x07\x8C\x02" +
		"\x02\u1DC9\u1DCA\x07\u016A\x02\x02\u1DCA\u1DCB\x05\u0230\u0119\x02\u1DCB" +
		"\u1DCC\x07\u011C\x02\x02\u1DCC\u1DCD\x07`\x02\x02\u1DCD\u1DCE\x05\u05C0" +
		"\u02E1\x02\u1DCE\u1E16\x03\x02\x02\x02\u1DCF\u1DD0\x07\x8C\x02\x02\u1DD0" +
		"\u1DD1\x07\u0161\x02\x02\u1DD1\u1DD2\x05\u057C\u02BF\x02\u1DD2\u1DD3\x07" +
		"\u011C\x02\x02\u1DD3\u1DD4\x07`\x02\x02\u1DD4\u1DD5\x05\u05C0\u02E1\x02" +
		"\u1DD5\u1E16\x03\x02\x02\x02\u1DD6\u1DD7\x07\x8C\x02\x02\u1DD7\u1DD8\x07" +
		"\u0158\x02\x02\u1DD8\u1DD9\x05\u0230\u0119\x02\u1DD9\u1DDA\x07\u011C\x02" +
		"\x02\u1DDA\u1DDB\x07`\x02\x02\u1DDB\u1DDC\x05\u05C0\u02E1\x02\u1DDC\u1E16" +
		"\x03\x02\x02\x02\u1DDD\u1DDE\x07\x8C\x02\x02\u1DDE\u1DDF\x07\u0165\x02" +
		"\x02\u1DDF\u1DE0\x07\u0147\x02\x02\u1DE0\u1DE1\x07\xBB\x02\x02\u1DE1\u1DE2" +
		"\x05\u0230\u0119\x02\u1DE2\u1DE3\x07\u011C\x02\x02\u1DE3\u1DE4\x07`\x02" +
		"\x02\u1DE4\u1DE5\x05\u05C0\u02E1\x02\u1DE5\u1E16\x03\x02\x02\x02\u1DE6" +
		"\u1DE7\x07\x8C\x02\x02\u1DE7\u1DE8\x07\u0165\x02\x02\u1DE8\u1DE9\x07\u0147" +
		"\x02\x02\u1DE9\u1DEA\x07\xA5\x02\x02\u1DEA\u1DEB\x05\u0230\u0119\x02\u1DEB" +
		"\u1DEC\x07\u011C\x02\x02\u1DEC\u1DED\x07`\x02\x02\u1DED\u1DEE\x05\u05C0" +
		"\u02E1\x02\u1DEE\u1E16\x03\x02\x02\x02\u1DEF\u1DF0\x07\x8C\x02\x02\u1DF0" +
		"\u1DF1\x07A\x02\x02\u1DF1\u1DF2\x07\xB0\x02\x02\u1DF2\u1DF3\x07\u017F" +
		"\x02\x02\u1DF3\u1DF4\x05\u059E\u02D0\x02\u1DF4\u1DF5\x07\u011C\x02\x02" +
		"\u1DF5\u1DF6\x07`\x02\x02\u1DF6\u1DF7\x05\u05C0\u02E1\x02\u1DF7\u1E16" +
		"\x03\x02\x02\x02\u1DF8\u1DF9\x07\x8C\x02\x02\u1DF9\u1DFA\x07\u014D\x02" +
		"\x02\u1DFA\u1DFB\x05\u059E\u02D0\x02\u1DFB\u1DFC\x07\u011C\x02\x02\u1DFC" +
		"\u1DFD\x07`\x02\x02\u1DFD\u1DFE\x05\u05C0\u02E1\x02\u1DFE\u1E16\x03\x02" +
		"\x02\x02\u1DFF\u1E00\x07\x8C\x02\x02\u1E00\u1E01\x07\xC8\x02\x02\u1E01" +
		"\u1E02\x07\u0167\x02\x02\u1E02\u1E03\x05\u059E\u02D0\x02\u1E03\u1E04\x07" +
		"\u011C\x02\x02\u1E04\u1E05\x07`\x02\x02\u1E05\u1E06\x05\u05C0\u02E1\x02" +
		"\u1E06\u1E16\x03\x02\x02\x02\u1E07\u1E08\x07\x8C\x02\x02\u1E08\u1E09\x07" +
		"\u01C6\x02\x02\u1E09\u1E0A\x05\u059E\u02D0\x02\u1E0A\u1E0B\x07\u011C\x02" +
		"\x02\u1E0B\u1E0C\x07`\x02\x02\u1E0C\u1E0D\x05\u05C0\u02E1\x02\u1E0D\u1E16" +
		"\x03\x02\x02\x02\u1E0E\u1E0F\x07\x8C\x02\x02\u1E0F\u1E10\x07\u01C5\x02" +
		"\x02\u1E10\u1E11\x05\u059E\u02D0\x02\u1E11\u1E12\x07\u011C\x02\x02\u1E12" +
		"\u1E13\x07`\x02\x02\u1E13\u1E14\x05\u05C0\u02E1\x02\u1E14\u1E16\x03\x02" +
		"\x02\x02\u1E15\u1D5C\x03\x02\x02\x02\u1E15\u1D63\x03\x02\x02\x02\u1E15" +
		"\u1D6A\x03\x02\x02\x02\u1E15\u1D71\x03\x02\x02\x02\u1E15\u1D78\x03\x02" +
		"\x02\x02\u1E15\u1D7F\x03\x02\x02\x02\u1E15\u1D86\x03\x02\x02\x02\u1E15" +
		"\u1D90\x03\x02\x02\x02\u1E15\u1D98\x03\x02\x02\x02\u1E15\u1D9F\x03\x02" +
		"\x02\x02\u1E15\u1DA9\x03\x02\x02\x02\u1E15\u1DB3\x03\x02\x02\x02\u1E15" +
		"\u1DBA\x03\x02\x02\x02\u1E15\u1DC1\x03\x02\x02\x02\u1E15\u1DC8\x03\x02" +
		"\x02\x02\u1E15\u1DCF\x03\x02\x02\x02\u1E15\u1DD6\x03\x02\x02\x02\u1E15" +
		"\u1DDD\x03\x02\x02\x02\u1E15\u1DE6\x03\x02\x02\x02\u1E15\u1DEF\x03\x02" +
		"\x02\x02\u1E15\u1DF8\x03\x02\x02\x02\u1E15\u1DFF\x03\x02\x02\x02\u1E15" +
		"\u1E07\x03\x02\x02\x02\u1E15\u1E0E\x03\x02\x02\x02\u1E16\u0317\x03\x02" +
		"\x02\x02\u1E17\u1E18\x070\x02\x02\u1E18\u1E19\x07\u01C6\x02\x02\u1E19" +
		"\u1E1B\x05\u059E\u02D0\x02\u1E1A\u1E1C\x05\u031A\u018E\x02\u1E1B\u1E1A" +
		"\x03\x02\x02\x02\u1E1B\u1E1C\x03\x02\x02\x02\u1E1C\u1E1E\x03\x02\x02\x02" +
		"\u1E1D\u1E1F\x05\u02C8\u0165\x02\u1E1E\u1E1D\x03\x02\x02\x02\u1E1E\u1E1F" +
		"\x03\x02\x02\x02\u1E1F\u0319\x03\x02\x02\x02\u1E20\u1E21\x05\u031C\u018F" +
		"\x02\u1E21\u031B\x03\x02\x02\x02\u1E22\u1E23\x07@\x02\x02\u1E23\u1E24" +
		"\x07^\x02\x02\u1E24\u1E29\x05\u0466\u0234\x02\u1E25\u1E26\x07@\x02\x02" +
		"\u1E26\u1E27\x07 \x02\x02\u1E27\u1E29\x07\u0160\x02\x02\u1E28\u1E22\x03" +
		"\x02\x02\x02\u1E28\u1E25\x03\x02\x02\x02\u1E29\u031D\x03\x02\x02\x02\u1E2A" +
		"\u1E2B\x07\x8C\x02\x02\u1E2B\u1E2C\x07\u01C6\x02\x02\u1E2C\u1E2D\x05\u059E" +
		"\u02D0\x02\u1E2D\u1E2E\x07\u014F\x02\x02\u1E2E\u1E2F\x05\u01F0\xF9\x02" +
		"\u1E2F\u1E51\x03\x02\x02\x02\u1E30\u1E31\x07\x8C\x02\x02\u1E31\u1E32\x07" +
		"\u01C6\x02\x02\u1E32\u1E33\x05\u059E\u02D0\x02\u1E33\u1E34\x07\x87\x02" +
		"\x02\u1E34\u1E35\x05\u0468\u0235\x02\u1E35\u1E51\x03\x02\x02\x02\u1E36" +
		"\u1E37\x07\x8C\x02\x02\u1E37\u1E38\x07\u01C6\x02\x02\u1E38\u1E39\x05\u059E" +
		"\u02D0\x02\u1E39\u1E3A\x07\u014F\x02\x02\u1E3A\u1E3B\x05\u0468\u0235\x02" +
		"\u1E3B\u1E51\x03\x02\x02\x02\u1E3C\u1E3D\x07\x8C\x02\x02\u1E3D\u1E3E\x07" +
		"\u01C6\x02\x02\u1E3E\u1E3F\x05\u059E\u02D0\x02\u1E3F\u1E40\x07\xC1\x02" +
		"\x02\u1E40\u1E41\x05\u0468\u0235\x02\u1E41\u1E51\x03\x02\x02\x02\u1E42" +
		"\u1E43\x07\x8C\x02\x02\u1E43\u1E44\x07\u01C6\x02\x02\u1E44\u1E45\x05\u059E" +
		"\u02D0\x02\u1E45\u1E46\x07\u011C\x02\x02\u1E46\u1E47\x07`\x02\x02\u1E47" +
		"\u1E48\x05\u05C0\u02E1\x02\u1E48\u1E51\x03\x02\x02\x02\u1E49\u1E4A\x07" +
		"\x8C\x02\x02\u1E4A\u1E4B\x07\u01C6\x02\x02\u1E4B\u1E4C\x05\u059E\u02D0" +
		"\x02\u1E4C\u1E4D\x07\u0137\x02\x02\u1E4D\u1E4E\x07`\x02\x02\u1E4E\u1E4F" +
		"\x05\u059E\u02D0\x02\u1E4F\u1E51\x03\x02\x02\x02\u1E50\u1E2A\x03\x02\x02" +
		"\x02\u1E50\u1E30\x03\x02\x02\x02\u1E50\u1E36\x03\x02\x02\x02\u1E50\u1E3C" +
		"\x03\x02\x02\x02\u1E50\u1E42\x03\x02\x02\x02\u1E50\u1E49\x03\x02\x02\x02" +
		"\u1E51\u031F\x03\x02\x02\x02\u1E52\u1E53\x070\x02\x02\u1E53\u1E54\x07" +
		"\u01C5\x02\x02\u1E54\u1E55\x05\u059E\u02D0\x02\u1E55\u1E56\x07\xA6\x02" +
		"\x02\u1E56\u1E57\x05\u05B4\u02DB\x02\u1E57\u1E58\x07\u01C6\x02\x02\u1E58" +
		"\u1E5A\x05\u0322\u0192\x02\u1E59\u1E5B\x05\u02C8\u0165\x02\u1E5A\u1E59" +
		"\x03\x02\x02\x02\u1E5A\u1E5B\x03\x02\x02\x02\u1E5B\u0321\x03\x02\x02\x02" +
		"\u1E5C\u1E61\x05\u0324\u0193\x02\u1E5D\u1E5E\x07\b\x02\x02\u1E5E\u1E60" +
		"\x05\u0324\u0193\x02\u1E5F\u1E5D\x03\x02\x02\x02\u1E60\u1E63\x03\x02\x02" +
		"\x02\u1E61\u1E5F\x03\x02\x02\x02\u1E61\u1E62\x03\x02\x02\x02\u1E62\u0323" +
		"\x03\x02\x02\x02\u1E63\u1E61\x03\x02\x02\x02\u1E64\u1E65\x05\u05D4\u02EB" +
		"\x02\u1E65\u0325\x03\x02\x02\x02\u1E66\u1E67\x07\x8C\x02\x02\u1E67\u1E68" +
		"\x07\u01C5\x02\x02\u1E68\u1E69\x05\u059E\u02D0\x02\u1E69\u1E6A\x07\u014F" +
		"\x02\x02\u1E6A\u1E6B\x05\u01F0\xF9\x02\u1E6B\u1EB5\x03\x02\x02\x02\u1E6C" +
		"\u1E6D\x07\x8C\x02\x02\u1E6D\u1E6E\x07\u01C5\x02\x02\u1E6E\u1E6F\x05\u059E" +
		"\u02D0\x02\u1E6F\u1E70\x07\xA6\x02\x02\u1E70\u1E71\x05\u05B4\u02DB\x02" +
		"\u1E71\u1EB5\x03\x02\x02\x02\u1E72\u1E73\x07\x8C\x02\x02\u1E73\u1E74\x07" +
		"\u01C5\x02\x02\u1E74\u1E75\x05\u059E\u02D0\x02\u1E75\u1E76\x07\u0133\x02" +
		"\x02\u1E76\u1E78\x07\u01C6\x02\x02\u1E77\u1E79\x05\u02C8\u0165\x02\u1E78" +
		"\u1E77\x03\x02\x02\x02\u1E78\u1E79\x03\x02\x02\x02\u1E79\u1EB5\x03\x02" +
		"\x02\x02\u1E7A\u1E7B\x07\x8C\x02\x02\u1E7B\u1E7C\x07\u01C5\x02\x02\u1E7C" +
		"\u1E7D\x05\u059E\u02D0\x02\u1E7D\u1E7E\x07\u014F\x02\x02\u1E7E\u1E7F\x07" +
		"\u01C6\x02\x02\u1E7F\u1E81\x05\u0322\u0192\x02\u1E80\u1E82\x05\u02C8\u0165" +
		"\x02\u1E81\u1E80\x03\x02\x02\x02\u1E81\u1E82\x03\x02\x02\x02\u1E82\u1EB5" +
		"\x03\x02\x02\x02\u1E83\u1E84\x07\x8C\x02\x02\u1E84\u1E85\x07\u01C5\x02" +
		"\x02\u1E85\u1E86\x05\u059E\u02D0\x02\u1E86\u1E87\x07\x87\x02\x02\u1E87" +
		"\u1E88\x07\u01C6\x02\x02\u1E88\u1E8A\x05\u0322\u0192\x02\u1E89\u1E8B\x05" +
		"\u02C8\u0165\x02\u1E8A\u1E89\x03\x02\x02\x02\u1E8A\u1E8B\x03\x02\x02\x02" +
		"\u1E8B\u1EB5\x03\x02\x02\x02\u1E8C\u1E8D\x07\x8C\x02\x02\u1E8D\u1E8E\x07" +
		"\u01C5\x02\x02\u1E8E\u1E8F\x05\u059E\u02D0\x02\u1E8F\u1E90\x07\xC1\x02" +
		"\x02\u1E90\u1E91\x07\u01C6\x02\x02\u1E91\u1E93\x05\u0322\u0192\x02\u1E92" +
		"\u1E94\x05\u02C8\u0165\x02\u1E93\u1E92\x03\x02\x02\x02\u1E93\u1E94\x03" +
		"\x02\x02\x02\u1E94\u1EB5\x03\x02\x02\x02\u1E95\u1E96\x07\x8C\x02\x02\u1E96" +
		"\u1E97\x07\u01C5\x02\x02\u1E97\u1E98\x05\u059E\u02D0\x02\u1E98\u1E99\x07" +
		"\xC3\x02\x02\u1E99\u1EB5\x03\x02\x02\x02\u1E9A\u1E9B\x07\x8C\x02\x02\u1E9B" +
		"\u1E9C\x07\u01C5\x02\x02\u1E9C\u1E9D\x05\u059E\u02D0\x02\u1E9D\u1E9E\x07" +
		"\xBC\x02\x02\u1E9E\u1EB5\x03\x02\x02\x02\u1E9F\u1EA0\x07\x8C\x02\x02\u1EA0" +
		"\u1EA1\x07\u01C5\x02\x02\u1EA1\u1EA2\x05\u059E\u02D0\x02\u1EA2\u1EA3\x07" +
		"\u014F\x02\x02\u1EA3\u1EA4\x05\u01F0\xF9\x02\u1EA4\u1EB5\x03\x02\x02\x02" +
		"\u1EA5\u1EA6\x07\x8C\x02\x02\u1EA6\u1EA7\x07\u01C5\x02\x02\u1EA7\u1EA8" +
		"\x05\u059E\u02D0\x02\u1EA8\u1EA9\x07\u01D3\x02\x02\u1EA9\u1EAA\x07\x04" +
		"\x02\x02\u1EAA\u1EAB\x05\u01FC\xFF\x02\u1EAB\u1EAC\x07\x05\x02\x02\u1EAC" +
		"\u1EB5\x03\x02\x02\x02\u1EAD\u1EAE\x07\x8C\x02\x02\u1EAE\u1EAF\x07\u01C5" +
		"\x02\x02\u1EAF\u1EB0\x05\u059E\u02D0\x02\u1EB0\u1EB1\x07\u011C\x02\x02" +
		"\u1EB1\u1EB2\x07`\x02\x02\u1EB2\u1EB3\x05\u05C0\u02E1\x02\u1EB3\u1EB5" +
		"\x03\x02\x02\x02\u1EB4\u1E66\x03\x02\x02\x02\u1EB4\u1E6C\x03\x02\x02\x02" +
		"\u1EB4\u1E72\x03\x02\x02\x02\u1EB4\u1E7A\x03\x02\x02\x02\u1EB4\u1E83\x03" +
		"\x02\x02\x02\u1EB4\u1E8C\x03\x02\x02\x02\u1EB4\u1E95\x03\x02\x02\x02\u1EB4" +
		"\u1E9A\x03\x02\x02\x02\u1EB4\u1E9F\x03\x02\x02\x02\u1EB4\u1EA5\x03\x02" +
		"\x02\x02\u1EB4\u1EAD\x03\x02\x02\x02\u1EB5\u0327\x03\x02\x02\x02\u1EB6" +
		"\u1EB8\x070\x02\x02\u1EB7\u1EB9\x05\u0294\u014B\x02\u1EB8\u1EB7\x03\x02" +
		"\x02\x02\u1EB8\u1EB9\x03\x02\x02\x02\u1EB9\u1EBA\x03\x02\x02\x02\u1EBA" +
		"\u1EBB\x07\u0143\x02\x02\u1EBB\u1EBC\x05\u059E\u02D0\x02\u1EBC\u1EBD\x07" +
		"&\x02\x02\u1EBD\u1EBE\x07R\x02\x02\u1EBE\u1EBF\x05\u0332\u019A\x02\u1EBF" +
		"\u1EC0\x07`\x02\x02\u1EC0\u1EC2\x05\u0586\u02C4\x02\u1EC1\u1EC3\x05\u047A" +
		"\u023E\x02\u1EC2\u1EC1\x03\x02\x02\x02\u1EC2\u1EC3\x03\x02\x02\x02\u1EC3" +
		"\u1EC4\x03\x02\x02\x02\u1EC4\u1EC6\x07;\x02\x02\u1EC5\u1EC7\x05\u0334" +
		"\u019B\x02\u1EC6\u1EC5\x03\x02\x02\x02\u1EC6\u1EC7\x03\x02\x02\x02\u1EC7" +
		"\u1EC8\x03\x02\x02\x02\u1EC8\u1EC9\x05\u032A\u0196\x02\u1EC9\u0329\x03" +
		"\x02\x02\x02\u1ECA\u1ED1\x07\u0110\x02\x02\u1ECB\u1ED1\x05\u032E\u0198" +
		"\x02\u1ECC\u1ECD\x07\x04\x02\x02\u1ECD\u1ECE\x05\u032C\u0197\x02\u1ECE" +
		"\u1ECF\x07\x05\x02\x02\u1ECF\u1ED1\x03\x02\x02\x02\u1ED0\u1ECA\x03\x02" +
		"\x02\x02\u1ED0\u1ECB\x03\x02\x02\x02\u1ED0\u1ECC\x03\x02\x02\x02\u1ED1" +
		"\u032B\x03\x02\x02\x02\u1ED2\u1ED4\x05\u0330\u0199\x02\u1ED3\u1ED2\x03" +
		"\x02\x02\x02\u1ED3\u1ED4\x03\x02\x02\x02\u1ED4\u1EDB\x03\x02\x02\x02\u1ED5" +
		"\u1ED7\x07\t\x02\x02\u1ED6\u1ED8\x05\u0330\u0199\x02\u1ED7\u1ED6\x03\x02" +
		"\x02\x02\u1ED7\u1ED8\x03\x02\x02\x02\u1ED8\u1EDA\x03\x02\x02\x02\u1ED9" +
		"\u1ED5\x03\x02\x02\x02\u1EDA\u1EDD\x03\x02\x02\x02\u1EDB\u1ED9\x03\x02" +
		"\x02\x02\u1EDB\u1EDC\x03\x02\x02\x02\u1EDC\u032D\x03\x02\x02\x02\u1EDD" +
		"\u1EDB\x03\x02\x02\x02\u1EDE\u1EE4\x05\u03EC\u01F7\x02\u1EDF\u1EE4\x05" +
		"\u03BA\u01DE\x02\u1EE0\u1EE4\x05\u03DA\u01EE\x02\u1EE1\u1EE4\x05\u03CC" +
		"\u01E7\x02\u1EE2\u1EE4\x05\u0336\u019C\x02\u1EE3\u1EDE\x03\x02\x02\x02" +
		"\u1EE3\u1EDF\x03\x02\x02\x02\u1EE3\u1EE0\x03\x02\x02\x02\u1EE3\u1EE1\x03" +
		"\x02\x02\x02\u1EE3\u1EE2\x03\x02\x02\x02\u1EE4\u032F\x03\x02\x02\x02\u1EE5" +
		"\u1EE6\x05\u032E\u0198\x02\u1EE6\u0331\x03\x02\x02\x02\u1EE7\u1EE8\t*" +
		"\x02\x02\u1EE8\u0333\x03\x02\x02\x02\u1EE9\u1EEA\t+\x02\x02\u1EEA\u0335" +
		"\x03\x02\x02\x02\u1EEB\u1EEC\x07\u0111\x02\x02\u1EEC\u1EEE\x05\u05C4\u02E3" +
		"\x02\u1EED\u1EEF\x05\u0338\u019D\x02\u1EEE\u1EED\x03\x02\x02\x02\u1EEE" +
		"\u1EEF\x03\x02\x02\x02\u1EEF\u0337\x03\x02\x02\x02\u1EF0\u1EF1\x07\b\x02" +
		"\x02\u1EF1\u1EF2\x05\u05B4\u02DB\x02\u1EF2\u0339\x03\x02\x02\x02\u1EF3" +
		"\u1EF4\x07\xFE\x02\x02\u1EF4\u1EF5\x05\u05C4\u02E3\x02\u1EF5\u033B\x03" +
		"\x02\x02\x02\u1EF6\u1EF7\x07\u0170\x02\x02\u1EF7\u1EFB\x05\u05C4\u02E3" +
		"\x02\u1EF8\u1EF9\x07\u0170\x02\x02\u1EF9\u1EFB\x07\v\x02\x02\u1EFA\u1EF6" +
		"\x03\x02\x02\x02\u1EFA\u1EF8\x03\x02\x02\x02\u1EFB\u033D\x03\x02\x02\x02" +
		"\u1EFC\u1EFE\x07\x83\x02\x02\u1EFD\u1EFF\x05\u0340\u01A1\x02\u1EFE\u1EFD" +
		"\x03\x02\x02\x02\u1EFE\u1EFF\x03\x02\x02\x02\u1EFF\u1F01\x03\x02\x02\x02" +
		"\u1F00\u1F02\x05\u0348\u01A5\x02\u1F01\u1F00\x03\x02\x02\x02\u1F01\u1F02" +
		"\x03\x02\x02\x02\u1F02\u1F42\x03\x02\x02\x02\u1F03\u1F05\x07\x94\x02\x02" +
		"\u1F04\u1F06\x05\u0340\u01A1\x02\u1F05\u1F04\x03\x02\x02\x02\u1F05\u1F06" +
		"\x03\x02\x02\x02\u1F06\u1F08\x03\x02\x02\x02\u1F07\u1F09\x05\u0346\u01A4" +
		"\x02\u1F08\u1F07\x03\x02\x02\x02\u1F08\u1F09\x03\x02\x02\x02\u1F09\u1F42" +
		"\x03\x02\x02\x02\u1F0A\u1F0B\x07\u0156\x02\x02\u1F0B\u1F0D\x07\u0166\x02" +
		"\x02\u1F0C\u1F0E\x05\u0346\u01A4\x02\u1F0D\u1F0C\x03\x02\x02\x02\u1F0D" +
		"\u1F0E\x03\x02\x02\x02\u1F0E\u1F42\x03\x02\x02\x02\u1F0F\u1F11\x07\xA3" +
		"\x02\x02\u1F10\u1F12\x05\u0340\u01A1\x02\u1F11\u1F10\x03\x02\x02\x02\u1F11" +
		"\u1F12\x03\x02\x02\x02\u1F12\u1F14\x03\x02\x02\x02\u1F13\u1F15\x05\u0348" +
		"\u01A5\x02\u1F14\u1F13\x03\x02\x02\x02\u1F14\u1F15\x03\x02\x02\x02\u1F15" +
		"\u1F42\x03\x02\x02\x02\u1F16\u1F18\x07\u01C8\x02\x02\u1F17\u1F19\x05\u0340" +
		"\u01A1\x02\u1F18\u1F17\x03\x02\x02\x02\u1F18\u1F19\x03\x02\x02\x02\u1F19" +
		"\u1F1B\x03\x02\x02\x02\u1F1A\u1F1C\x05\u0348\u01A5\x02\u1F1B\u1F1A\x03" +
		"\x02\x02\x02\u1F1B\u1F1C\x03\x02\x02\x02\u1F1C\u1F42\x03\x02\x02\x02\u1F1D" +
		"\u1F1F\x07\u0141\x02\x02\u1F1E\u1F20\x05\u0340\u01A1\x02\u1F1F\u1F1E\x03" +
		"\x02\x02\x02\u1F1F\u1F20\x03\x02\x02\x02\u1F20\u1F22\x03\x02\x02\x02\u1F21" +
		"\u1F23\x05\u0348\u01A5\x02\u1F22\u1F21\x03\x02\x02\x02\u1F22\u1F23\x03" +
		"\x02\x02\x02\u1F23\u1F42\x03\x02\x02\x02\u1F24\u1F25\x07\u0144\x02\x02" +
		"\u1F25\u1F42\x05\u05C4\u02E3\x02\u1F26\u1F27\x07\u0136\x02\x02\u1F27\u1F28" +
		"\x07\u0144\x02\x02\u1F28\u1F42\x05\u05C4\u02E3\x02\u1F29\u1F2A\x07\u0136" +
		"\x02\x02\u1F2A\u1F42\x05\u05C4\u02E3\x02\u1F2B\u1F2D\x07\u0141\x02\x02" +
		"\u1F2C\u1F2E\x05\u0340\u01A1\x02\u1F2D\u1F2C\x03\x02\x02\x02\u1F2D\u1F2E" +
		"\x03\x02\x02\x02\u1F2E\u1F2F\x03\x02\x02\x02\u1F2F\u1F30\x07`\x02\x02" +
		"\u1F30\u1F31\x07\u0144\x02\x02\u1F31\u1F42\x05\u05C4\u02E3\x02\u1F32\u1F34" +
		"\x07\u0141\x02\x02\u1F33\u1F35\x05\u0340\u01A1\x02\u1F34\u1F33\x03\x02" +
		"\x02\x02\u1F34\u1F35\x03\x02\x02\x02\u1F35\u1F36\x03\x02\x02\x02\u1F36" +
		"\u1F37\x07`\x02\x02\u1F37\u1F42\x05\u05C4\u02E3\x02\u1F38\u1F39\x07\u0124" +
		"\x02\x02\u1F39\u1F3A\x07\u0166\x02\x02\u1F3A\u1F42\x05\u05B4\u02DB\x02" +
		"\u1F3B\u1F3C\x07\xA3\x02\x02\u1F3C\u1F3D\x07\u0125\x02\x02\u1F3D\u1F42" +
		"\x05\u05B4\u02DB\x02\u1F3E\u1F3F\x07\u0141\x02\x02\u1F3F\u1F40\x07\u0125" +
		"\x02\x02\u1F40\u1F42\x05\u05B4\u02DB\x02\u1F41\u1EFC\x03\x02\x02\x02\u1F41" +
		"\u1F03\x03\x02\x02\x02\u1F41\u1F0A\x03\x02\x02\x02\u1F41\u1F0F\x03\x02" +
		"\x02\x02\u1F41\u1F16\x03\x02\x02\x02\u1F41\u1F1D\x03\x02\x02\x02\u1F41" +
		"\u1F24\x03\x02\x02\x02\u1F41\u1F26\x03\x02\x02\x02\u1F41\u1F29\x03\x02" +
		"\x02\x02\u1F41\u1F2B\x03\x02\x02\x02\u1F41\u1F32\x03\x02\x02\x02\u1F41" +
		"\u1F38\x03\x02\x02\x02\u1F41\u1F3B\x03\x02\x02\x02\u1F41\u1F3E\x03\x02" +
		"\x02\x02\u1F42\u033F\x03\x02\x02\x02\u1F43\u1F44\t,\x02\x02\u1F44\u0341" +
		"\x03\x02\x02\x02\u1F45\u1F46\x07\xF6\x02\x02\u1F46\u1F47\x07\xFD\x02\x02" +
		"\u1F47\u1F50\x05F$\x02\u1F48\u1F49\x07\u012E\x02\x02\u1F49\u1F50\x07S" +
		"\x02\x02\u1F4A\u1F4B\x07\u012E\x02\x02\u1F4B\u1F50\x07\u0180\x02\x02\u1F4C" +
		"\u1F50\x078\x02\x02\u1F4D\u1F4E\x07O\x02\x02\u1F4E\u1F50\x078\x02\x02" +
		"\u1F4F\u1F45\x03\x02\x02\x02\u1F4F\u1F48\x03\x02\x02\x02\u1F4F\u1F4A\x03" +
		"\x02\x02\x02\u1F4F\u1F4C\x03\x02\x02\x02\u1F4F\u1F4D\x03\x02\x02\x02\u1F50" +
		"\u0343\x03\x02\x02\x02\u1F51\u1F58\x05\u0342\u01A2\x02\u1F52\u1F54\x07" +
		"\b\x02\x02\u1F53\u1F52\x03\x02\x02\x02\u1F53\u1F54\x03\x02\x02\x02\u1F54" +
		"\u1F55\x03\x02\x02\x02\u1F55\u1F57\x05\u0342\u01A2\x02\u1F56\u1F53\x03" +
		"\x02\x02\x02\u1F57\u1F5A\x03\x02\x02\x02\u1F58\u1F56\x03\x02\x02\x02\u1F58" +
		"\u1F59\x03\x02\x02\x02\u1F59\u0345\x03\x02\x02\x02\u1F5A\u1F58\x03\x02" +
		"\x02\x02\u1F5B\u1F5C\x05\u0344\u01A3\x02\u1F5C\u0347\x03\x02\x02\x02\u1F5D" +
		"\u1F5F\x07#\x02\x02\u1F5E\u1F60\x07\u010F\x02\x02\u1F5F\u1F5E\x03\x02" +
		"\x02\x02\u1F5F\u1F60\x03\x02\x02\x02\u1F60\u1F61\x03\x02\x02\x02\u1F61" +
		"\u1F62\x07\x9B\x02\x02\u1F62\u0349\x03\x02\x02\x02\u1F63\u1F66\x070\x02" +
		"\x02\u1F64\u1F65\x07T\x02\x02\u1F65\u1F67\x07\u0139\x02\x02\u1F66\u1F64" +
		"\x03\x02\x02\x02\u1F66\u1F67\x03\x02\x02\x02\u1F67\u1F69\x03\x02\x02\x02" +
		"\u1F68\u1F6A\x05\xC0a\x02\u1F69\u1F68\x03\x02\x02\x02\u1F69\u1F6A\x03" +
		"\x02\x02\x02\u1F6A\u1F7C\x03\x02\x02\x02\u1F6B\u1F6C\x07\u017A\x02\x02" +
		"\u1F6C\u1F6E\x05\u0582\u02C2\x02\u1F6D\u1F6F\x05\xF4{\x02\u1F6E\u1F6D" +
		"\x03\x02\x02\x02\u1F6E\u1F6F\x03\x02\x02\x02\u1F6F\u1F71\x03\x02\x02\x02" +
		"\u1F70\u1F72\x05\x88E\x02\u1F71\u1F70\x03\x02\x02\x02\u1F71\u1F72\x03" +
		"\x02\x02\x02\u1F72\u1F7D\x03\x02\x02\x02\u1F73\u1F74\x07\u0131\x02\x02" +
		"\u1F74\u1F75\x07\u017A\x02\x02\u1F75\u1F76\x05\u0582\u02C2\x02\u1F76\u1F77" +
		"\x07\x04\x02\x02\u1F77\u1F78\x05\xF6|\x02\u1F78\u1F7A\x07\x05\x02\x02" +
		"\u1F79\u1F7B\x05\x88E\x02\u1F7A\u1F79\x03\x02\x02\x02\u1F7A\u1F7B\x03" +
		"\x02\x02\x02\u1F7B\u1F7D\x03\x02\x02\x02\u1F7C\u1F6B\x03\x02\x02\x02\u1F7C" +
		"\u1F73\x03\x02\x02\x02\u1F7D\u1F7E\x03\x02\x02\x02\u1F7E\u1F7F\x07&\x02" +
		"\x02\u1F7F\u1F81\x05\u03EC\u01F7\x02\u1F80\u1F82\x05\u034C\u01A7\x02\u1F81" +
		"\u1F80\x03\x02\x02\x02\u1F81\u1F82\x03\x02\x02\x02\u1F82\u034B\x03\x02" +
		"\x02\x02\u1F83\u1F85\x07k\x02\x02\u1F84\u1F86\t-\x02\x02\u1F85\u1F84\x03" +
		"\x02\x02\x02\u1F85\u1F86\x03\x02\x02\x02\u1F86\u1F87\x03\x02\x02\x02\u1F87" +
		"\u1F88\x07,\x02\x02\u1F88\u1F89\x07\u0119\x02\x02\u1F89\u034D\x03\x02" +
		"\x02\x02\u1F8A\u1F8B\x07\xFF\x02\x02\u1F8B\u1F8C\x05\u05A2\u02D2\x02\u1F8C" +
		"\u034F\x03\x02\x02\x02\u1F8D\u1F8E\x070\x02\x02\u1F8E\u1F8F\x07\xB1\x02" +
		"\x02\u1F8F\u1F91\x05\u058C\u02C7\x02\u1F90\u1F92\x05\x10\t\x02\u1F91\u1F90" +
		"\x03\x02\x02\x02\u1F91\u1F92\x03\x02\x02\x02\u1F92\u1F94\x03\x02\x02\x02" +
		"\u1F93\u1F95\x05\u0352\u01AA\x02\u1F94\u1F93\x03\x02\x02\x02\u1F94\u1F95" +
		"\x03\x02\x02\x02\u1F95\u0351\x03\x02\x02\x02\u1F96\u1F97\x05\u0354\u01AB" +
		"\x02\u1F97\u0353\x03\x02\x02\x02\u1F98\u1F9A\x05\u0356\u01AC\x02\u1F99" +
		"\u1F98\x03\x02\x02\x02\u1F9A\u1F9B\x03\x02\x02\x02\u1F9B\u1F99\x03\x02" +
		"\x02\x02\u1F9B\u1F9C\x03\x02\x02\x02\u1F9C\u0355\x03\x02\x02\x02\u1F9D" +
		"\u1F9F\x05\u0358\u01AD\x02\u1F9E\u1FA0\x05\u035A\u01AE\x02\u1F9F\u1F9E" +
		"\x03\x02\x02\x02\u1F9F\u1FA0\x03\x02\x02\x02\u1FA0\u1FA4\x03\x02\x02\x02" +
		"\u1FA1\u1FA5\x05\u05BA\u02DE\x02\u1FA2\u1FA5\x05J&\x02\u1FA3\u1FA5\x07" +
		"7\x02\x02\u1FA4\u1FA1\x03\x02\x02\x02\u1FA4\u1FA2\x03\x02\x02\x02\u1FA4" +
		"\u1FA3\x03\x02\x02\x02\u1FA5\u0357\x03\x02\x02\x02\u1FA6\u1FAF\x05\u05D6" +
		"\u02EC\x02\u1FA7\u1FA8\x07\xA6\x02\x02\u1FA8\u1FAF\x07L\x02\x02\u1FA9" +
		"\u1FAF\x07\xC4\x02\x02\u1FAA\u1FAF\x07\u0101\x02\x02\u1FAB\u1FAF\x07\u011C" +
		"\x02\x02\u1FAC\u1FAF\x07\u0161\x02\x02\u1FAD\u1FAF\x07\u0163\x02\x02\u1FAE" +
		"\u1FA6\x03\x02\x02\x02\u1FAE\u1FA7\x03\x02\x02\x02\u1FAE\u1FA9\x03\x02" +
		"\x02\x02\u1FAE\u1FAA\x03\x02\x02\x02\u1FAE\u1FAB\x03\x02\x02\x02\u1FAE" +
		"\u1FAC\x03\x02\x02\x02\u1FAE\u1FAD\x03\x02\x02\x02\u1FAF\u0359\x03\x02" +
		"\x02\x02\u1FB0\u1FB1\x07\f\x02\x02\u1FB1\u035B\x03\x02\x02\x02\u1FB2\u1FB3" +
		"\x07\x8C\x02\x02\u1FB3\u1FB4\x07\xB1\x02\x02\u1FB4\u1FC3\x05\u058E\u02C8" +
		"\x02\u1FB5\u1FB7\x07k\x02\x02\u1FB6\u1FB5\x03\x02\x02\x02\u1FB6\u1FB7" +
		"\x03\x02\x02\x02\u1FB7\u1FB8\x03\x02\x02\x02\u1FB8\u1FBA\x05\u0352\u01AA" +
		"\x02\u1FB9\u1FB6\x03\x02\x02\x02\u1FB9\u1FBA\x03\x02\x02\x02\u1FBA\u1FC4" +
		"\x03\x02\x02\x02\u1FBB\u1FBD\x05\u0352\u01AA\x02\u1FBC\u1FBB\x03\x02\x02" +
		"\x02\u1FBC\u1FBD\x03\x02\x02\x02\u1FBD\u1FC4\x03\x02\x02\x02\u1FBE\u1FBF" +
		"\x07\u014F\x02\x02\u1FBF\u1FC0\x07\u0161\x02\x02\u1FC0\u1FC2\x05\u057A" +
		"\u02BE\x02\u1FC1\u1FBE\x03\x02\x02\x02\u1FC1\u1FC2\x03\x02\x02\x02\u1FC2" +
		"\u1FC4\x03\x02\x02\x02\u1FC3\u1FB9\x03\x02\x02\x02\u1FC3\u1FBC\x03\x02" +
		"\x02\x02\u1FC3\u1FC1\x03\x02\x02\x02\u1FC4\u035D\x03\x02\x02\x02\u1FC5" +
		"\u1FC6\x07\x8C\x02\x02\u1FC6\u1FC7\x07\xB1\x02\x02\u1FC7\u1FC9\x05\u058E" +
		"\u02C8\x02\u1FC8\u1FCA\x05Z.\x02\u1FC9\u1FC8\x03\x02\x02\x02\u1FC9\u1FCA" +
		"\x03\x02\x02\x02\u1FCA\u035F\x03\x02\x02\x02\u1FCB\u1FD0\x05\u0362\u01B2" +
		"\x02\u1FCC\u1FCD\x07\b\x02\x02\u1FCD\u1FCF\x05\u0362\u01B2\x02\u1FCE\u1FCC" +
		"\x03\x02\x02\x02\u1FCF\u1FD2\x03\x02\x02\x02\u1FD0\u1FCE\x03\x02\x02\x02" +
		"\u1FD0\u1FD1\x03\x02\x02\x02\u1FD1\u0361\x03\x02\x02\x02\u1FD2\u1FD0\x03" +
		"\x02\x02\x02\u1FD3\u1FD4\x07\xD3\x02\x02\u1FD4\u0363\x03\x02\x02\x02\u1FD5" +
		"\u1FD6\x07\x8C\x02\x02\u1FD6\u1FD7\x07n\x02\x02\u1FD7\u1FD8\x05\u0230" +
		"\u0119\x02\u1FD8\u1FD9\x07\u0133\x02\x02\u1FD9\u1FDA\x07\u0179\x02\x02" +
		"\u1FDA\u0365\x03\x02\x02\x02\u1FDB\u1FDC\x07\x8C\x02\x02\u1FDC\u1FDD\x07" +
		"\u015F\x02\x02\u1FDD\u1FDE\t.\x02\x02\u1FDE\u1FDF\x05<\x1F\x02\u1FDF\u0367" +
		"\x03\x02\x02\x02\u1FE0\u1FE1\x070\x02\x02\u1FE1\u1FE2\x07\xBF\x02\x02" +
		"\u1FE2\u1FE4\x05\u0230\u0119\x02\u1FE3\u1FE5\x05\u036C\u01B7\x02\u1FE4" +
		"\u1FE3\x03\x02\x02\x02\u1FE4\u1FE5\x03\x02\x02\x02\u1FE5\u1FE6\x03\x02" +
		"\x02\x02\u1FE6\u1FE7\x05\u0492\u024A\x02\u1FE7\u1FE8\x05\xDAn\x02\u1FE8" +
		"\u0369\x03\x02\x02\x02\u1FE9\u1FEA\x07\x8C\x02\x02\u1FEA\u1FEB\x07\xBF" +
		"\x02\x02\u1FEB\u2001\x05\u0230\u0119\x02\u1FEC\u2002\x05|?\x02\u1FED\u1FEE" +
		"\x07\xC1\x02\x02\u1FEE\u1FEF\x07O\x02\x02\u1FEF\u2002\x07P\x02\x02\u1FF0" +
		"\u1FF1\x07\u014F\x02\x02\u1FF1\u1FF2\x07O\x02\x02\u1FF2\u2002\x07P\x02" +
		"\x02\u1FF3\u1FF4\x07\x87\x02\x02\u1FF4\u2002\x05\xEEx\x02\u1FF5\u1FF6" +
		"\x07\xC1\x02\x02\u1FF6\u1FF8\x07/\x02\x02\u1FF7\u1FF9\x05\u02EE\u0178" +
		"\x02\u1FF8\u1FF7\x03\x02\x02\x02\u1FF8\u1FF9\x03\x02\x02\x02\u1FF9\u1FFA" +
		"\x03\x02\x02\x02\u1FFA\u1FFC\x05\u059E\u02D0\x02\u1FFB\u1FFD\x05~@\x02" +
		"\u1FFC\u1FFB\x03\x02\x02\x02\u1FFC\u1FFD\x03\x02\x02\x02\u1FFD\u2002\x03" +
		"\x02\x02\x02\u1FFE\u1FFF\x07\u0176\x02\x02\u1FFF\u2000\x07/\x02\x02\u2000" +
		"\u2002\x05\u059E\u02D0\x02\u2001\u1FEC\x03\x02\x02\x02\u2001\u1FED\x03" +
		"\x02\x02\x02\u2001\u1FF0\x03\x02\x02\x02\u2001\u1FF3\x03\x02\x02\x02\u2001" +
		"\u1FF5\x03\x02\x02\x02\u2001\u1FFE\x03\x02\x02\x02\u2002\u036B\x03\x02" +
		"\x02\x02\u2003\u2004\x07&\x02\x02\u2004\u036D\x03\x02\x02\x02\u2005\u2006" +
		"\x07\x8C\x02\x02\u2006\u2007\x07\u0165\x02\x02\u2007\u2008\x07\u0147\x02" +
		"\x02\u2008\u2009\x07\xBB\x02\x02\u2009\u200A\x05\u0230\u0119\x02\u200A" +
		"\u200B\x05\u01F0\xF9\x02\u200B\u036F\x03\x02\x02\x02\u200C\u200D\x07\x8C" +
		"\x02\x02\u200D\u200E\x07\u0165\x02\x02\u200E\u200F\x07\u0147\x02\x02\u200F" +
		"\u2010\x07\xA5\x02\x02\u2010\u2011";
	private static readonly _serializedATNSegment16: string =
		"\x05\u0230\u0119\x02\u2011\u2012\x07\x87\x02\x02\u2012\u2013\x07\u0103" +
		"\x02\x02\u2013\u2014\x07@\x02\x02\u2014\u2015\x05\u058A\u02C6\x02\u2015" +
		"\u2016\x05\u0372\u01BA\x02\u2016\u2017\x05\u0228\u0115\x02\u2017\u204C" +
		"\x03\x02\x02\x02\u2018\u2019\x07\x8C\x02\x02\u2019\u201A\x07\u0165\x02" +
		"\x02\u201A\u201B\x07\u0147\x02\x02\u201B\u201C\x07\xA5\x02\x02\u201C\u201D" +
		"\x05\u0230\u0119\x02\u201D\u201E\x07\x8C\x02\x02\u201E\u201F\x07\u0103" +
		"\x02\x02\u201F\u2020\x07@\x02\x02\u2020\u2021\x05\u058A\u02C6\x02\u2021" +
		"\u2022\x05\u0372\u01BA\x02\u2022\u2023\x05\u0228\u0115\x02\u2023\u204C" +
		"\x03\x02\x02\x02\u2024\u2025\x07\x8C\x02\x02\u2025\u2026\x07\u0165\x02" +
		"\x02\u2026\u2027\x07\u0147\x02\x02\u2027\u2028\x07\xA5\x02\x02\u2028\u2029" +
		"\x05\u0230\u0119\x02\u2029\u202A\x07\x8C\x02\x02\u202A\u202B\x07\u0103" +
		"\x02\x02\u202B\u202C\x07\u0139\x02\x02\u202C\u202D\x05\u0230\u0119\x02" +
		"\u202D\u202E\x05\u0372\u01BA\x02\u202E\u202F\x05\u0230\u0119\x02\u202F" +
		"\u204C\x03\x02\x02\x02\u2030\u2031\x07\x8C\x02\x02\u2031\u2032\x07\u0165" +
		"\x02\x02\u2032\u2033\x07\u0147\x02\x02\u2033\u2034\x07\xA5\x02\x02\u2034" +
		"\u2035\x05\u0230\u0119\x02\u2035\u2036\x07\x8C\x02\x02\u2036\u2037\x07" +
		"\u0103\x02\x02\u2037\u2038\x07@\x02\x02\u2038\u2039\x05\u058A\u02C6\x02" +
		"\u2039\u203A\x07\u0139\x02\x02\u203A\u203B\x05\u0230\u0119\x02\u203B\u203C" +
		"\x05\u0372\u01BA\x02\u203C\u203D\x05\u0230\u0119\x02\u203D\u204C\x03\x02" +
		"\x02\x02\u203E\u203F\x07\x8C\x02\x02\u203F\u2040\x07\u0165\x02\x02\u2040" +
		"\u2041\x07\u0147\x02\x02\u2041\u2042\x07\xA5\x02\x02\u2042\u2043\x05\u0230" +
		"\u0119\x02\u2043\u2044\x07\xC1\x02\x02\u2044\u2046\x07\u0103\x02\x02\u2045" +
		"\u2047\x05\u02EE\u0178\x02\u2046\u2045\x03\x02\x02\x02\u2046\u2047\x03" +
		"\x02\x02\x02\u2047\u2048\x03\x02\x02\x02\u2048\u2049\x07@\x02\x02\u2049" +
		"\u204A\x05\u058A\u02C6\x02\u204A\u204C\x03\x02\x02\x02\u204B\u200C\x03" +
		"\x02\x02\x02\u204B\u2018\x03\x02\x02\x02\u204B\u2024\x03\x02\x02\x02\u204B" +
		"\u2030\x03\x02\x02\x02\u204B\u203E\x03\x02\x02\x02\u204C\u0371\x03\x02" +
		"\x02\x02\u204D\u204E\x07k\x02\x02\u204E\u0373\x03\x02\x02\x02\u204F\u2051" +
		"\x070\x02\x02\u2050\u2052\x05\u020C\u0107\x02\u2051\u2050\x03\x02\x02" +
		"\x02\u2051\u2052\x03\x02\x02\x02\u2052\u2053\x03\x02\x02\x02\u2053\u2054" +
		"\x07\xAA\x02\x02\u2054\u2055\x05\u0230\u0119\x02\u2055\u2056\x07@\x02" +
		"\x02\u2056\u2057\x05\u05B4\u02DB\x02\u2057\u2058\x07`\x02\x02\u2058\u2059" +
		"\x05\u05B4\u02DB\x02\u2059\u205A\x07B\x02\x02\u205A\u205B\x05\u0230\u0119" +
		"\x02\u205B\u0375\x03\x02\x02\x02\u205C\u205E\x07\xA0\x02\x02\u205D\u205F" +
		"\x05\u0390\u01C9\x02\u205E\u205D\x03\x02\x02\x02\u205E\u205F\x03\x02\x02" +
		"\x02\u205F\u2060\x03\x02\x02\x02\u2060\u2062\x05\u0580\u02C1\x02\u2061" +
		"\u2063\x05\u037A\u01BE\x02\u2062\u2061\x03\x02\x02\x02\u2062\u2063\x03" +
		"\x02\x02\x02\u2063\u206F\x03\x02\x02\x02\u2064\u2066\x07\xA0\x02\x02\u2065" +
		"\u2067\x05\u0390\u01C9\x02\u2066\u2065\x03\x02\x02\x02\u2066\u2067\x03" +
		"\x02\x02\x02\u2067\u206F\x03\x02\x02\x02\u2068\u2069\x07\xA0\x02\x02\u2069" +
		"\u206A\x05\u0378\u01BD\x02\u206A\u206C\x05\u0580\u02C1\x02\u206B\u206D" +
		"\x05\u037A\u01BE\x02\u206C\u206B\x03\x02\x02\x02\u206C\u206D\x03\x02\x02" +
		"\x02\u206D\u206F\x03\x02\x02\x02\u206E\u205C\x03\x02\x02\x02\u206E\u2064" +
		"\x03\x02\x02\x02\u206E\u2068\x03\x02\x02\x02\u206F\u0377\x03\x02\x02\x02" +
		"\u2070\u2071\x07\x04\x02\x02\u2071\u2076\x05\u0390\u01C9\x02\u2072\u2073" +
		"\x07\b\x02\x02\u2073\u2075\x05\u0390\u01C9\x02\u2074\u2072\x03\x02\x02" +
		"\x02\u2075\u2078\x03\x02\x02\x02\u2076\u2074\x03\x02\x02\x02\u2076\u2077" +
		"\x03\x02\x02\x02\u2077\u2079\x03\x02\x02\x02\u2078\u2076\x03\x02\x02\x02" +
		"\u2079\u207A\x07\x05\x02\x02\u207A\u0379\x03\x02\x02\x02\u207B\u207C\x07" +
		"f\x02\x02\u207C\u207D\x05\u059E\u02D0\x02\u207D\u037B\x03\x02\x02\x02" +
		"\u207E\u2080\x07\u0174\x02\x02\u207F\u2081\x05\u0396\u01CC\x02\u2080\u207F" +
		"\x03\x02\x02\x02\u2080\u2081\x03\x02\x02\x02\u2081\u2083\x03\x02\x02\x02" +
		"\u2082\u2084\x05\u0398\u01CD\x02\u2083\u2082\x03\x02\x02\x02\u2083\u2084" +
		"\x03\x02\x02\x02\u2084\u2086\x03\x02\x02\x02\u2085\u2087\x05\u0390\u01C9" +
		"\x02\u2086\u2085\x03\x02\x02\x02\u2086\u2087\x03\x02\x02\x02\u2087\u2089" +
		"\x03\x02\x02\x02\u2088\u208A\x05\u038A\u01C6\x02\u2089\u2088\x03\x02\x02" +
		"\x02\u2089\u208A\x03\x02\x02\x02\u208A\u208C\x03\x02\x02\x02\u208B\u208D" +
		"\x05\u03A0\u01D1\x02\u208C\u208B\x03\x02\x02\x02\u208C\u208D\x03\x02\x02" +
		"\x02\u208D\u2099\x03\x02\x02\x02\u208E\u2093\x07\u0174\x02\x02\u208F\u2090" +
		"\x07\x04\x02\x02\u2090\u2091\x05\u0380\u01C1\x02\u2091\u2092\x07\x05\x02" +
		"\x02\u2092\u2094\x03\x02\x02\x02\u2093\u208F\x03\x02\x02\x02\u2093\u2094" +
		"\x03\x02\x02\x02\u2094\u2096\x03\x02\x02\x02\u2095\u2097\x05\u03A0\u01D1" +
		"\x02\u2096\u2095\x03\x02\x02\x02\u2096\u2097\x03\x02\x02\x02\u2097\u2099" +
		"\x03\x02\x02\x02\u2098\u207E\x03\x02\x02\x02\u2098\u208E\x03\x02\x02\x02" +
		"\u2099\u037D\x03\x02\x02\x02\u209A\u209C\x05\u0382\u01C2\x02\u209B\u209D" +
		"\x05\u0390\u01C9\x02\u209C\u209B\x03\x02\x02\x02\u209C\u209D\x03\x02\x02" +
		"\x02\u209D\u209F\x03\x02\x02\x02\u209E\u20A0\x05\u03A0\u01D1\x02\u209F" +
		"\u209E\x03\x02\x02\x02\u209F\u20A0\x03\x02\x02\x02\u20A0\u20A9\x03\x02" +
		"\x02\x02\u20A1\u20A2\x05\u0382\u01C2\x02\u20A2\u20A3\x07\x04\x02\x02\u20A3" +
		"\u20A4\x05\u038C\u01C7\x02\u20A4\u20A6\x07\x05\x02\x02\u20A5\u20A7\x05" +
		"\u03A0\u01D1\x02\u20A6\u20A5\x03\x02\x02\x02\u20A6\u20A7\x03\x02\x02\x02" +
		"\u20A7\u20A9\x03\x02\x02\x02\u20A8\u209A\x03\x02\x02\x02\u20A8\u20A1\x03" +
		"\x02\x02\x02\u20A9\u037F\x03\x02\x02\x02\u20AA\u20AF\x05\u0384\u01C3\x02" +
		"\u20AB\u20AC\x07\b\x02\x02\u20AC\u20AE\x05\u0384\u01C3\x02\u20AD\u20AB" +
		"\x03\x02\x02\x02\u20AE\u20B1\x03\x02\x02\x02\u20AF\u20AD\x03\x02\x02\x02" +
		"\u20AF\u20B0\x03\x02\x02\x02\u20B0\u0381\x03\x02\x02\x02\u20B1\u20AF\x03" +
		"\x02\x02\x02\u20B2\u20B3\t/\x02\x02\u20B3\u0383\x03\x02\x02\x02\u20B4" +
		"\u20B6\x05\u0386\u01C4\x02\u20B5\u20B7\x05\u0388\u01C5\x02\u20B6\u20B5" +
		"\x03\x02\x02\x02\u20B6\u20B7\x03\x02\x02\x02\u20B7\u0385\x03\x02\x02\x02" +
		"\u20B8\u20BB\x05\u05D2\u02EA\x02\u20B9\u20BB\x05\u0382\u01C2\x02\u20BA" +
		"\u20B8\x03\x02\x02\x02\u20BA\u20B9\x03\x02\x02\x02\u20BB\u0387\x03\x02" +
		"\x02\x02\u20BC\u20BF\x05J&\x02\u20BD\u20BF\x05\u0142\xA2\x02\u20BE\u20BC" +
		"\x03\x02\x02\x02\u20BE\u20BD\x03\x02\x02\x02\u20BF\u0389\x03\x02\x02\x02" +
		"\u20C0\u20C1\x05\u0382\u01C2\x02\u20C1\u038B\x03\x02\x02\x02\u20C2\u20C7" +
		"\x05\u038E\u01C8\x02\u20C3\u20C4\x07\b\x02\x02\u20C4\u20C6\x05\u038E\u01C8" +
		"\x02\u20C5\u20C3\x03\x02\x02\x02\u20C6\u20C9\x03\x02\x02\x02\u20C7\u20C5" +
		"\x03\x02\x02\x02\u20C7\u20C8\x03\x02\x02\x02\u20C8\u038D\x03\x02\x02\x02" +
		"\u20C9\u20C7\x03\x02\x02\x02\u20CA\u20CE\x05\u0390\u01C9\x02\u20CB\u20CE" +
		"\x05\u0392\u01CA\x02\u20CC\u20CE\x05\u0394\u01CB\x02\u20CD\u20CA\x03\x02" +
		"\x02\x02\u20CD\u20CB\x03\x02\x02\x02\u20CD\u20CC\x03\x02\x02\x02\u20CE" +
		"\u038F\x03\x02\x02\x02\u20CF\u20D1\x07\x82\x02\x02\u20D0\u20D2\t0\x02" +
		"\x02\u20D1\u20D0\x03\x02\x02\x02\u20D1\u20D2\x03\x02\x02\x02\u20D2\u0391" +
		"\x03\x02\x02\x02\u20D3\u20D5\x07\u0225\x02\x02\u20D4\u20D6\t0\x02\x02" +
		"\u20D5\u20D4\x03\x02\x02\x02\u20D5\u20D6\x03\x02\x02\x02\u20D6\u0393\x03" +
		"\x02\x02\x02\u20D7\u20DA\x07\u0226\x02\x02\u20D8\u20DB\x05\u0142\xA2\x02" +
		"\u20D9\u20DB\x05\u05B4\u02DB\x02\u20DA\u20D8\x03\x02\x02\x02\u20DA\u20D9" +
		"\x03\x02\x02\x02\u20DB\u0395\x03\x02\x02\x02\u20DC\u20DD\x07s\x02\x02" +
		"\u20DD\u0397\x03\x02\x02\x02\u20DE\u20DF\x07r\x02\x02\u20DF\u0399\x03" +
		"\x02\x02\x02\u20E0\u20E1\x07\x04\x02\x02\u20E1\u20E2\x05\xF6|\x02\u20E2" +
		"\u20E3\x07\x05\x02\x02\u20E3\u039B\x03\x02\x02\x02\u20E4\u20E6\x05\u0580" +
		"\u02C1\x02\u20E5\u20E7\x05\u039A\u01CE\x02\u20E6\u20E5\x03\x02\x02\x02" +
		"\u20E6\u20E7\x03\x02\x02\x02\u20E7\u039D\x03\x02\x02\x02\u20E8\u20ED\x05" +
		"\u039C\u01CF\x02\u20E9\u20EA\x07\b\x02\x02\u20EA\u20EC\x05\u039C\u01CF" +
		"\x02\u20EB\u20E9\x03\x02\x02\x02\u20EC\u20EF\x03\x02\x02\x02\u20ED\u20EB" +
		"\x03\x02\x02\x02\u20ED\u20EE\x03\x02\x02\x02\u20EE\u039F\x03\x02\x02\x02" +
		"\u20EF\u20ED\x03\x02\x02\x02\u20F0\u20F1\x05\u039E\u01D0\x02\u20F1\u03A1" +
		"\x03\x02\x02\x02\u20F2\u20F3\x07\xCD\x02\x02\u20F3\u2105\x05\u03A4\u01D3" +
		"\x02\u20F4\u20F5\x07\xCD\x02\x02\u20F5\u20F7\x05\u0382\u01C2\x02\u20F6" +
		"\u20F8\x05\u0390\u01C9\x02\u20F7\u20F6\x03\x02\x02\x02\u20F7\u20F8\x03" +
		"\x02\x02\x02\u20F8\u20F9\x03\x02\x02\x02\u20F9\u20FA\x05\u03A4\u01D3\x02" +
		"\u20FA\u2105\x03\x02\x02\x02\u20FB\u20FC\x07\xCD\x02\x02\u20FC\u20FD\x07" +
		"\x82\x02\x02\u20FD\u2105\x05\u03A4\u01D3\x02\u20FE\u20FF\x07\xCD\x02\x02" +
		"\u20FF\u2100\x07\x04\x02\x02\u2100\u2101\x05\u03A6\u01D4\x02\u2101\u2102" +
		"\x07\x05\x02\x02\u2102\u2103\x05\u03A4\u01D3\x02\u2103\u2105\x03\x02\x02" +
		"\x02\u2104\u20F2\x03\x02\x02\x02\u2104\u20F4\x03\x02\x02\x02\u2104\u20FB" +
		"\x03\x02\x02\x02\u2104\u20FE\x03\x02\x02\x02\u2105\u03A3\x03\x02\x02\x02" +
		"\u2106\u2110\x05\u03EC\u01F7\x02\u2107\u2110\x05\u03BA\u01DE\x02\u2108" +
		"\u2110\x05\u03DA\u01EE\x02\u2109\u2110\x05\u03CC\u01E7\x02\u210A\u2110" +
		"\x05\u03E4\u01F3\x02\u210B\u2110\x05\u0126\x94\x02\u210C\u2110\x05\u012C" +
		"\x97\x02\u210D\u2110\x05\u0132\x9A\x02\u210E\u2110\x05\u03B4\u01DB\x02" +
		"\u210F\u2106\x03\x02\x02\x02\u210F\u2107\x03\x02\x02\x02\u210F\u2108\x03" +
		"\x02\x02\x02\u210F\u2109\x03\x02\x02\x02\u210F\u210A\x03\x02\x02\x02\u210F" +
		"\u210B\x03\x02\x02\x02\u210F\u210C\x03\x02\x02\x02\u210F\u210D\x03\x02" +
		"\x02\x02\u210F\u210E\x03\x02\x02\x02\u2110\u03A5\x03\x02\x02\x02\u2111" +
		"\u2116\x05\u03A8\u01D5\x02\u2112\u2113\x07\b\x02\x02\u2113\u2115\x05\u03A8" +
		"\u01D5\x02\u2114\u2112\x03\x02\x02\x02\u2115\u2118\x03\x02\x02\x02\u2116" +
		"\u2114\x03\x02\x02\x02\u2116\u2117\x03\x02\x02\x02\u2117\u03A7\x03\x02" +
		"\x02\x02\u2118\u2116\x03\x02\x02\x02\u2119\u211B\x05\u03AA\u01D6\x02\u211A" +
		"\u211C\x05\u03AC\u01D7\x02\u211B\u211A\x03\x02\x02\x02\u211B\u211C\x03" +
		"\x02\x02\x02\u211C\u03A9\x03\x02\x02\x02\u211D\u2120\x05\u05D2\u02EA\x02" +
		"\u211E\u2120\x05\u0382\u01C2\x02\u211F\u211D\x03\x02\x02\x02\u211F\u211E" +
		"\x03\x02\x02\x02\u2120\u03AB\x03\x02\x02\x02\u2121\u2124\x05J&\x02\u2122" +
		"\u2124\x05\u0142\xA2\x02\u2123\u2121\x03\x02\x02\x02\u2123\u2122\x03\x02" +
		"\x02\x02\u2124\u03AD\x03\x02\x02\x02\u2125\u2126\x07\u0124\x02\x02\u2126" +
		"\u2128\x05\u059E\u02D0\x02\u2127\u2129\x05\u03B0\u01D9\x02\u2128\u2127" +
		"\x03\x02\x02\x02\u2128\u2129\x03\x02\x02\x02\u2129\u212A\x03\x02\x02\x02" +
		"\u212A\u212B\x07&\x02\x02\u212B\u212C\x05\u03B2\u01DA\x02\u212C\u03AF" +
		"\x03\x02\x02\x02\u212D\u212E\x07\x04\x02\x02\u212E\u212F\x05\u0540\u02A1" +
		"\x02\u212F\u2130\x07\x05\x02\x02\u2130\u03B1\x03\x02\x02\x02\u2131\u2136" +
		"\x05\u03EC\u01F7\x02\u2132\u2136\x05\u03BA\u01DE\x02\u2133\u2136\x05\u03DA" +
		"\u01EE\x02\u2134\u2136\x05\u03CC\u01E7\x02\u2135\u2131\x03\x02\x02\x02" +
		"\u2135\u2132\x03\x02\x02\x02\u2135\u2133\x03\x02\x02\x02\u2135\u2134\x03" +
		"\x02\x02\x02\u2136\u03B3\x03\x02\x02\x02\u2137\u2138\x07\xCC\x02\x02\u2138" +
		"\u213A\x05\u059E\u02D0\x02\u2139\u213B\x05\u03B6\u01DC\x02\u213A\u2139" +
		"\x03\x02\x02\x02\u213A\u213B\x03\x02\x02\x02\u213B\u214F\x03\x02\x02\x02" +
		"\u213C\u213E\x070\x02\x02\u213D\u213F\x05\xC0a\x02\u213E\u213D\x03\x02" +
		"\x02\x02\u213E\u213F\x03\x02\x02\x02\u213F\u2140\x03\x02\x02\x02\u2140" +
		"\u2142\x07^\x02\x02\u2141\u2143\x05\u0204\u0103\x02\u2142\u2141\x03\x02" +
		"\x02\x02\u2142\u2143\x03\x02\x02\x02\u2143\u2144\x03\x02\x02\x02\u2144" +
		"\u2145\x05\u0128\x95\x02\u2145\u2146\x07&\x02\x02\u2146\u2147\x07\xCC" +
		"\x02\x02\u2147\u2149\x05\u059E\u02D0\x02\u2148\u214A\x05\u03B6\u01DC\x02" +
		"\u2149\u2148\x03\x02\x02\x02\u2149\u214A\x03\x02\x02\x02\u214A\u214C\x03" +
		"\x02\x02\x02\u214B\u214D\x05\u012A\x96\x02\u214C\u214B\x03\x02\x02\x02" +
		"\u214C\u214D\x03\x02\x02\x02\u214D\u214F\x03\x02\x02\x02\u214E\u2137\x03" +
		"\x02\x02\x02\u214E\u213C\x03\x02\x02\x02\u214F\u03B5\x03\x02\x02\x02\u2150" +
		"\u2151\x07\x04\x02\x02\u2151\u2152\x05\u0532\u029A\x02\u2152\u2153\x07" +
		"\x05\x02\x02\u2153\u03B7\x03\x02\x02\x02\u2154\u2155\x07\xB3\x02\x02\u2155" +
		"\u215F\x05\u059E\u02D0\x02\u2156\u2157\x07\xB3\x02\x02\u2157\u2158\x07" +
		"\u0124\x02\x02\u2158\u215F\x05\u059E\u02D0\x02\u2159\u215A\x07\xB3\x02" +
		"\x02\u215A\u215F\x07 \x02\x02\u215B\u215C\x07\xB3\x02\x02\u215C\u215D" +
		"\x07\u0124\x02\x02\u215D\u215F\x07 \x02\x02\u215E\u2154\x03\x02\x02\x02" +
		"\u215E\u2156\x03\x02\x02\x02\u215E\u2159\x03\x02\x02\x02\u215E\u215B\x03" +
		"\x02\x02\x02\u215F\u03B9\x03\x02\x02\x02\u2160\u2162\x05\u0406\u0204\x02" +
		"\u2161\u2160\x03\x02\x02\x02\u2161\u2162\x03\x02\x02\x02\u2162\u2163\x03" +
		"\x02\x02\x02\u2163\u2164\x07\xF3\x02\x02\u2164\u2165\x07I\x02\x02\u2165" +
		"\u2166\x05\u03BC\u01DF\x02\u2166\u2168\x05\u03BE\u01E0\x02\u2167\u2169" +
		"\x05\u03C6\u01E4\x02\u2168\u2167\x03\x02\x02\x02\u2168\u2169\x03\x02\x02" +
		"\x02\u2169\u216B\x03\x02\x02\x02\u216A\u216C\x05\u03CA\u01E6\x02\u216B" +
		"\u216A\x03\x02\x02\x02\u216B\u216C\x03\x02\x02\x02\u216C\u03BB\x03\x02" +
		"\x02\x02\u216D\u2170\x05\u0580\u02C1\x02\u216E\u216F\x07&\x02\x02\u216F" +
		"\u2171\x05\u05C4\u02E3\x02\u2170\u216E\x03\x02\x02\x02\u2170\u2171\x03" +
		"\x02\x02\x02\u2171\u03BD\x03\x02\x02\x02\u2172\u2173\x07\x04\x02\x02\u2173" +
		"\u2174\x05\u03C2\u01E2\x02\u2174\u2175\x07\x05\x02\x02\u2175\u2177\x03" +
		"\x02\x02\x02\u2176\u2172\x03\x02\x02\x02\u2176\u2177\x03\x02\x02\x02\u2177" +
		"\u217C\x03\x02\x02\x02\u2178\u2179\x07\u01D1\x02\x02\u2179\u217A\x05\u03C0" +
		"\u01E1\x02\u217A\u217B\x07\u01C4\x02\x02\u217B\u217D\x03\x02\x02\x02\u217C" +
		"\u2178\x03\x02\x02\x02\u217C\u217D\x03\x02\x02\x02\u217D\u2180\x03\x02" +
		"\x02\x02\u217E\u2181\x05\u06A0\u0351\x02\u217F\u2181\x05\u03EC\u01F7\x02" +
		"\u2180\u217E\x03\x02\x02\x02\u2180\u217F\x03\x02\x02\x02\u2181\u03BF\x03" +
		"\x02\x02\x02\u2182\u2183\t1\x02\x02\u2183\u03C1\x03\x02\x02\x02\u2184" +
		"\u2189\x05\u03C4\u01E3\x02\u2185\u2186\x07\b\x02\x02\u2186\u2188\x05\u03C4" +
		"\u01E3\x02\u2187\u2185\x03\x02\x02\x02\u2188\u218B\x03\x02\x02\x02\u2189" +
		"\u2187\x03\x02\x02\x02\u2189\u218A\x03\x02\x02\x02\u218A\u03C3\x03\x02" +
		"\x02\x02\u218B\u2189\x03\x02\x02\x02\u218C\u218D\x05\u059A\u02CE\x02\u218D" +
		"\u218E\x05\u0568\u02B5\x02\u218E\u03C5\x03\x02\x02\x02\u218F\u2190\x07" +
		"R\x02\x02\u2190\u2192\x07\u01D2\x02\x02\u2191\u2193\x05\u03C8\u01E5\x02" +
		"\u2192\u2191\x03\x02\x02\x02\u2192\u2193\x03\x02\x02\x02\u2193\u2194\x03" +
		"\x02\x02\x02\u2194\u219C\x07;\x02\x02\u2195\u2196\x07\u0173\x02\x02\u2196" +
		"\u2197\x07\u014F\x02\x02\u2197\u2199\x05\u03DC\u01EF\x02\u2198\u219A\x05" +
		"\u047A\u023E\x02\u2199\u2198\x03\x02\x02\x02\u2199\u219A\x03\x02\x02\x02" +
		"\u219A\u219D\x03\x02\x02\x02\u219B\u219D\x07\u0110\x02\x02\u219C\u2195" +
		"\x03\x02\x02\x02\u219C\u219B\x03\x02\x02\x02\u219D\u03C7\x03\x02\x02\x02" +
		"\u219E\u219F\x07\x04\x02\x02\u219F\u21A0\x05\u027E\u0140\x02\u21A0\u21A2" +
		"\x07\x05\x02\x02\u21A1\u21A3\x05\u047A\u023E\x02\u21A2\u21A1\x03\x02\x02" +
		"\x02\u21A2\u21A3\x03\x02\x02\x02\u21A3\u21A8\x03\x02\x02\x02\u21A4\u21A5" +
		"\x07R\x02\x02\u21A5\u21A6\x07/\x02\x02\u21A6\u21A8\x05\u059E\u02D0\x02" +
		"\u21A7\u219E\x03\x02\x02\x02\u21A7\u21A4\x03\x02\x02\x02\u21A8\u03C9\x03" +
		"\x02\x02\x02\u21A9\u21AA\x07Y\x02\x02\u21AA\u21AB\x05\u056C\u02B7\x02" +
		"\u21AB\u03CB\x03\x02\x02\x02\u21AC\u21AE\x05\u0406\u0204\x02\u21AD\u21AC" +
		"\x03\x02\x02\x02\u21AD\u21AE\x03\x02\x02\x02\u21AE\u21AF\x03\x02\x02\x02" +
		"\u21AF\u21B0\x07\xB8\x02\x02\u21B0\u21B1\x07B\x02\x02\u21B1\u21B3\x05" +
		"\u046A\u0236\x02\u21B2\u21B4\x05\u03CE\u01E8\x02\u21B3\u21B2\x03\x02\x02" +
		"\x02\u21B3\u21B4\x03\x02\x02\x02\u21B4\u21B6\x03\x02\x02\x02\u21B5\u21B7" +
		"\x05\u047C\u023F\x02\u21B6\u21B5\x03\x02\x02\x02\u21B6\u21B7\x03\x02\x02" +
		"\x02\u21B7\u21B9\x03\x02\x02\x02\u21B8\u21BA\x05\u03CA\u01E6\x02\u21B9" +
		"\u21B8\x03\x02\x02\x02\u21B9\u21BA\x03\x02\x02\x02\u21BA\u03CD\x03\x02" +
		"\x02\x02\u21BB\u21BC\x07f\x02\x02\u21BC\u21BD\x05\u0454\u022B\x02\u21BD" +
		"\u03CF\x03\x02\x02\x02\u21BE\u21C0\x07\u0102\x02\x02\u21BF\u21C1\x05\u040E" +
		"\u0208\x02\u21C0\u21BF\x03\x02\x02\x02\u21C0\u21C1\x03\x02\x02\x02\u21C1" +
		"\u21C2\x03\x02\x02\x02\u21C2\u21C4\x05\u0466\u0234\x02\u21C3\u21C5\x05" +
		"\u03D2\u01EA\x02\u21C4\u21C3\x03\x02\x02\x02\u21C4\u21C5\x03\x02\x02\x02" +
		"\u21C5\u21C7\x03\x02\x02\x02\u21C6\u21C8\x05\u03D6\u01EC\x02\u21C7\u21C6" +
		"\x03\x02\x02\x02\u21C7\u21C8\x03\x02\x02\x02\u21C8\u03D1\x03\x02\x02\x02" +
		"\u21C9\u21CA\x07F\x02\x02\u21CA\u21CB\x05\u03D4\u01EB\x02\u21CB\u21CC" +
		"\x07\u0109\x02\x02\u21CC\u03D3\x03\x02\x02\x02\u21CD\u21CE\x07\x85\x02" +
		"\x02\u21CE\u21DA\t2\x02\x02\u21CF\u21D0\x07\u01A0\x02\x02\u21D0\u21DA" +
		"\t2\x02\x02\u21D1\u21D6\x07\u0150\x02\x02\u21D2\u21D3\x07\u0173\x02\x02" +
		"\u21D3\u21D7\x07\xCB\x02\x02\u21D4\u21D5\x07\u01A0\x02\x02\u21D5\u21D7" +
		"\x07\xCB\x02\x02\u21D6\u21D2\x03\x02\x02\x02\u21D6\u21D4\x03\x02\x02\x02" +
		"\u21D6\u21D7\x03\x02\x02\x02\u21D7\u21DA\x03\x02\x02\x02\u21D8\u21DA\x07" +
		"\xCB\x02\x02\u21D9\u21CD\x03\x02\x02\x02\u21D9\u21CF\x03\x02\x02\x02\u21D9" +
		"\u21D1\x03\x02\x02\x02\u21D9\u21D8\x03\x02\x02\x02\u21DA\u03D5\x03\x02" +
		"\x02\x02\u21DB\u21DC\x07\u0112\x02\x02\u21DC\u03D7\x03\x02\x02\x02\u21DD" +
		"\u21E1\x07\u0112\x02\x02\u21DE\u21DF\x07\u01D3\x02\x02\u21DF\u21E1\x07" +
		"\u01D4\x02\x02\u21E0\u21DD\x03\x02\x02\x02\u21E0\u21DE\x03\x02\x02\x02" +
		"\u21E1\u03D9\x03\x02\x02\x02\u21E2\u21E4\x05\u0406\u0204\x02\u21E3\u21E2" +
		"\x03\x02\x02\x02\u21E3\u21E4\x03\x02\x02\x02\u21E4\u21E5\x03\x02\x02\x02" +
		"\u21E5\u21E6\x07\u0173\x02\x02\u21E6\u21E7\x05\u046A\u0236\x02\u21E7\u21E8" +
		"\x07\u014F\x02\x02\u21E8\u21EA\x05\u03DC\u01EF\x02\u21E9\u21EB\x05\u0452" +
		"\u022A\x02\u21EA\u21E9\x03\x02\x02\x02\u21EA\u21EB\x03\x02\x02\x02\u21EB" +
		"\u21ED\x03\x02\x02\x02\u21EC\u21EE\x05\u047C\u023F\x02\u21ED\u21EC\x03" +
		"\x02\x02\x02\u21ED\u21EE\x03\x02\x02\x02\u21EE\u21F0\x03\x02\x02\x02\u21EF" +
		"\u21F1\x05\u03CA\u01E6\x02\u21F0\u21EF\x03\x02\x02\x02\u21F0\u21F1\x03" +
		"\x02\x02\x02\u21F1\u03DB\x03\x02\x02\x02\u21F2\u21F7\x05\u03DE\u01F0\x02" +
		"\u21F3\u21F4\x07\b\x02\x02\u21F4\u21F6\x05\u03DE\u01F0\x02\u21F5\u21F3" +
		"\x03\x02\x02\x02\u21F6\u21F9\x03\x02\x02\x02\u21F7\u21F5\x03\x02\x02\x02" +
		"\u21F7\u21F8\x03\x02\x02\x02\u21F8\u03DD\x03\x02\x02\x02\u21F9\u21F7\x03" +
		"\x02\x02\x02\u21FA\u21FB\x05\u03E0\u01F1\x02\u21FB\u21FC\x07\f\x02\x02" +
		"\u21FC\u21FD\x05\u04BE\u0260\x02\u21FD\u220D\x03\x02\x02\x02\u21FE\u21FF" +
		"\x07\x04\x02\x02\u21FF\u2200\x05\u03E2\u01F2\x02\u2200\u2201\x07\x05\x02" +
		"\x02\u2201\u220A\x07\f\x02\x02\u2202\u2204\x07\u01A0\x02\x02\u2203\u2202" +
		"\x03\x02\x02\x02\u2203\u2204\x03\x02\x02\x02\u2204\u2205\x03\x02\x02\x02" +
		"\u2205\u220B\x05\u04BE\u0260\x02\u2206\u2207\x07\x04\x02\x02\u2207\u2208" +
		"\x05\u03F2\u01FA\x02\u2208\u2209\x07\x05\x02\x02\u2209\u220B\x03\x02\x02" +
		"\x02\u220A\u2203\x03\x02\x02\x02\u220A\u2206\x03\x02\x02\x02\u220B\u220D" +
		"\x03\x02\x02\x02\u220C\u21FA\x03\x02\x02\x02\u220C\u21FE\x03\x02\x02\x02" +
		"\u220D\u03DF\x03\x02\x02\x02\u220E\u220F\x05\u059A\u02CE\x02\u220F\u2210" +
		"\x05\u0568\u02B5\x02\u2210\u03E1\x03\x02\x02\x02\u2211\u2216\x05\u03E0" +
		"\u01F1\x02\u2212\u2213\x07\b\x02\x02\u2213\u2215\x05\u03E0\u01F1\x02\u2214" +
		"\u2212\x03\x02\x02\x02\u2215\u2218\x03\x02\x02\x02\u2216\u2214\x03\x02" +
		"\x02\x02\u2216\u2217\x03\x02\x02\x02\u2217\u03E3\x03\x02\x02\x02\u2218" +
		"\u2216\x03\x02\x02\x02\u2219\u221A\x07\xB4\x02\x02\u221A\u221B\x05\u03E6" +
		"\u01F4\x02\u221B\u221C\x05\u03E8\u01F5\x02\u221C\u221D\x07\xAE\x02\x02" +
		"\u221D\u221E\x05\u03EA\u01F6\x02\u221E\u221F\x07@\x02\x02\u221F\u2220" +
		"\x05\u03EC\u01F7\x02\u2220\u03E5\x03\x02\x02\x02\u2221\u2222\x05\u059E" +
		"\u02D0\x02\u2222\u03E7\x03\x02\x02\x02\u2223\u2224\x07\u010F\x02\x02\u2224" +
		"\u2229\x07\u0146\x02\x02\u2225\u2229\x07\u0146\x02\x02\u2226\u2229\x07" +
		"m\x02\x02\u2227\u2229\x07\xF2\x02\x02\u2228\u2223\x03\x02\x02\x02\u2228" +
		"\u2225\x03\x02\x02\x02\u2228\u2226\x03\x02\x02\x02\u2228\u2227\x03\x02" +
		"\x02\x02\u2229\u222C\x03\x02\x02\x02\u222A\u2228\x03\x02\x02\x02\u222A" +
		"\u222B\x03\x02\x02\x02\u222B\u03E9\x03\x02\x02\x02\u222C\u222A\x03\x02" +
		"\x02\x02\u222D\u2233\x03\x02\x02\x02\u222E\u222F\x07k\x02\x02\u222F\u2233" +
		"\x07\xDB\x02\x02\u2230\u2231\x07\u017D\x02\x02\u2231\u2233\x07\xDB\x02" +
		"\x02\u2232\u222D\x03\x02\x02\x02\u2232\u222E\x03\x02\x02\x02\u2232\u2230" +
		"\x03\x02\x02\x02\u2233\u03EB\x03\x02\x02\x02\u2234\u2237\x05\u03F0\u01F9" +
		"\x02\u2235\u2237\x05\u03EE\u01F8\x02\u2236\u2234\x03\x02\x02\x02\u2236" +
		"\u2235\x03\x02\x02\x02\u2237\u03ED\x03\x02\x02\x02\u2238\u2239\x07\x04" +
		"\x02\x02\u2239\u223A\x05\u03F0\u01F9\x02\u223A\u223B\x07\x05\x02\x02\u223B" +
		"\u2241\x03\x02\x02\x02\u223C\u223D\x07\x04\x02\x02\u223D\u223E\x05\u03EE" +
		"\u01F8\x02\u223E\u223F\x07\x05\x02\x02\u223F\u2241\x03\x02\x02\x02\u2240" +
		"\u2238\x03\x02\x02\x02\u2240\u223C\x03\x02\x02\x02\u2241\u03EF\x03\x02" +
		"\x02\x02\u2242\u2244\x05\u03F2\u01FA\x02\u2243\u2245\x05\u0416\u020C\x02" +
		"\u2244\u2243\x03\x02\x02\x02\u2244\u2245\x03\x02\x02\x02\u2245\u224E\x03" +
		"\x02\x02\x02\u2246\u2248\x05\u0444\u0223\x02\u2247\u2249\x05\u0420\u0211" +
		"\x02\u2248\u2247\x03\x02\x02\x02\u2248\u2249\x03\x02\x02\x02\u2249\u224F" +
		"\x03\x02\x02\x02\u224A\u224C\x05\u041E\u0210\x02\u224B\u224D\x05\u0446" +
		"\u0224\x02\u224C\u224B\x03\x02\x02\x02\u224C\u224D\x03\x02\x02\x02\u224D" +
		"\u224F\x03\x02\x02\x02\u224E\u2246\x03\x02\x02\x02\u224E\u224A\x03\x02" +
		"\x02\x02\u224E\u224F\x03\x02\x02\x02\u224F\u2260\x03\x02\x02\x02\u2250" +
		"\u2251\x05\u03FA\u01FE\x02\u2251\u2253\x05\u03F2\u01FA\x02\u2252\u2254" +
		"\x05\u0416\u020C\x02\u2253\u2252\x03\x02\x02\x02\u2253\u2254\x03\x02\x02" +
		"\x02\u2254\u225D\x03\x02\x02\x02\u2255\u2257\x05\u0444\u0223\x02\u2256" +
		"\u2258\x05\u0420\u0211\x02\u2257\u2256\x03\x02\x02\x02\u2257\u2258\x03" +
		"\x02\x02\x02\u2258\u225E\x03\x02\x02\x02\u2259\u225B\x05\u041E\u0210\x02" +
		"\u225A\u225C\x05\u0446\u0224\x02\u225B\u225A\x03\x02\x02\x02\u225B\u225C" +
		"\x03\x02\x02\x02\u225C\u225E\x03\x02\x02\x02\u225D\u2255\x03\x02\x02\x02" +
		"\u225D\u2259\x03\x02\x02\x02\u225D\u225E\x03\x02\x02\x02\u225E\u2260\x03" +
		"\x02\x02\x02\u225F\u2242\x03\x02\x02\x02\u225F\u2250\x03\x02\x02\x02\u2260" +
		"\u03F1\x03\x02\x02\x02\u2261\u2264\x05\u03F4\u01FB\x02\u2262\u2264\x05" +
		"\u03EE\u01F8\x02\u2263\u2261\x03\x02\x02\x02\u2263\u2262\x03\x02\x02\x02" +
		"\u2264\u03F3\x03\x02\x02\x02\u2265\u2275\x07Z\x02\x02\u2266\u2268\x05" +
		"\u0414\u020B\x02\u2267\u2266\x03\x02\x02\x02\u2267\u2268\x03\x02\x02\x02" +
		"\u2268\u226A\x03\x02\x02\x02\u2269\u226B\x05\u0408\u0205\x02\u226A\u2269" +
		"\x03\x02\x02\x02\u226A\u226B\x03\x02\x02\x02\u226B\u226D\x03\x02\x02\x02" +
		"\u226C\u226E\x05\u056A\u02B6\x02\u226D\u226C\x03\x02\x02\x02\u226D\u226E" +
		"\x03\x02\x02\x02\u226E\u2276\x03\x02\x02\x02\u226F\u2271\x05\u0412\u020A" +
		"\x02\u2270\u226F\x03\x02\x02\x02\u2270\u2271\x03\x02\x02\x02\u2271\u2273" +
		"\x03\x02\x02\x02\u2272\u2274\x05\u056C\u02B7\x02\u2273\u2272\x03\x02\x02" +
		"\x02\u2273\u2274\x03\x02\x02\x02\u2274\u2276\x03\x02\x02\x02\u2275\u2267" +
		"\x03\x02\x02\x02\u2275\u2270\x03\x02\x02\x02\u2276\u2278\x03\x02\x02\x02" +
		"\u2277\u2279\x05\u0408\u0205\x02\u2278\u2277\x03\x02\x02\x02\u2278\u2279" +
		"\x03\x02\x02\x02\u2279\u227B\x03\x02\x02\x02\u227A\u227C\x05\u0452\u022A" +
		"\x02\u227B\u227A\x03\x02\x02\x02\u227B\u227C\x03\x02\x02\x02\u227C\u227E" +
		"\x03\x02\x02\x02\u227D\u227F\x05\u047A\u023E\x02\u227E\u227D\x03\x02\x02" +
		"\x02\u227E\u227F\x03\x02\x02\x02\u227F\u2281\x03\x02\x02\x02\u2280\u2282" +
		"\x05\u0434\u021B\x02\u2281\u2280\x03\x02\x02\x02\u2281\u2282\x03\x02\x02" +
		"\x02\u2282\u2284\x03\x02\x02\x02\u2283\u2285\x05\u0442\u0222\x02\u2284" +
		"\u2283\x03\x02\x02\x02\u2284\u2285\x03\x02\x02\x02\u2285\u2287\x03\x02" +
		"\x02\x02\u2286\u2288\x05\u050A\u0286\x02\u2287\u2286\x03\x02\x02\x02\u2287" +
		"\u2288\x03\x02\x02\x02\u2288\u2293\x03\x02\x02\x02\u2289\u2293\x05\u0450" +
		"\u0229\x02\u228A\u228B\x07^\x02\x02\u228B\u2293\x05\u0462\u0232\x02\u228C" +
		"\u228D\x05\u03EE\u01F8\x02\u228D\u2290\x05\u03F8\u01FD\x02\u228E\u2291" +
		"\x05\u03F4\u01FB\x02\u228F\u2291\x05\u03EE\u01F8\x02\u2290\u228E\x03\x02" +
		"\x02\x02\u2290\u228F\x03\x02\x02\x02\u2291\u2293\x03\x02\x02\x02\u2292" +
		"\u2265\x03\x02\x02\x02\u2292\u2289\x03\x02\x02\x02\u2292\u228A\x03\x02" +
		"\x02\x02\u2292\u228C\x03\x02\x02\x02\u2293\u229B\x03\x02\x02\x02\u2294" +
		"\u2297\x05\u03F8\u01FD\x02\u2295\u2298\x05\u03F4\u01FB\x02\u2296\u2298" +
		"\x05\u03EE\u01F8\x02\u2297\u2295\x03\x02\x02\x02\u2297\u2296\x03\x02\x02" +
		"\x02\u2298\u229A\x03\x02\x02\x02\u2299\u2294\x03\x02\x02\x02\u229A\u229D" +
		"\x03\x02\x02\x02\u229B\u2299\x03\x02\x02\x02\u229B\u229C\x03\x02\x02\x02" +
		"\u229C\u03F5\x03\x02\x02\x02\u229D\u229B\x03\x02\x02\x02\u229E\u22A2\x07" +
		"c\x02\x02\u229F\u22A2\x07H\x02\x02\u22A0\u22A2\x07=\x02\x02\u22A1\u229E" +
		"\x03\x02\x02\x02\u22A1\u229F\x03\x02\x02\x02\u22A1\u22A0\x03\x02\x02\x02" +
		"\u22A2\u03F7\x03\x02\x02\x02\u22A3\u22A5\x05\u03F6\u01FC\x02\u22A4\u22A6" +
		"\x05\u0410\u0209\x02\u22A5\u22A4\x03\x02\x02\x02\u22A5\u22A6\x03\x02\x02" +
		"\x02\u22A6\u03F9\x03\x02\x02\x02\u22A7\u22A9\x07k\x02\x02\u22A8\u22AA" +
		"\x07\u0131\x02\x02\u22A9\u22A8\x03\x02\x02\x02\u22A9\u22AA\x03\x02\x02" +
		"\x02\u22AA\u22AB\x03\x02\x02\x02\u22AB\u22AC\x05\u03FC\u01FF\x02\u22AC" +
		"\u03FB\x03\x02\x02\x02\u22AD\u22B2\x05\u03FE\u0200\x02\u22AE\u22AF\x07" +
		"\b\x02\x02\u22AF\u22B1\x05\u03FE\u0200\x02\u22B0\u22AE\x03\x02\x02\x02" +
		"\u22B1\u22B4\x03\x02\x02\x02\u22B2\u22B0\x03\x02\x02\x02\u22B2\u22B3\x03" +
		"\x02\x02\x02\u22B3\u03FD\x03\x02\x02\x02\u22B4\u22B2\x03\x02\x02\x02\u22B5" +
		"\u22B7\x05\u059E\u02D0\x02\u22B6\u22B8\x05\u039A\u01CE\x02\u22B7\u22B6" +
		"\x03\x02\x02\x02\u22B7\u22B8\x03\x02\x02\x02\u22B8\u22B9\x03\x02\x02\x02" +
		"\u22B9\u22BB\x07&\x02\x02\u22BA\u22BC\x05\u0404\u0203\x02\u22BB\u22BA" +
		"\x03\x02\x02\x02\u22BB\u22BC\x03\x02\x02\x02\u22BC\u22BD\x03\x02\x02\x02" +
		"\u22BD\u22BE\x07\x04\x02\x02\u22BE\u22BF\x05\u03B2\u01DA\x02\u22BF\u22C1" +
		"\x07\x05";
	private static readonly _serializedATNSegment17: string =
		"\x02\x02\u22C0\u22C2\x05\u0400\u0201\x02\u22C1\u22C0\x03\x02\x02\x02\u22C1" +
		"\u22C2\x03\x02\x02\x02\u22C2\u22C4\x03\x02\x02\x02\u22C3\u22C5\x05\u0402" +
		"\u0202\x02\u22C4\u22C3\x03\x02\x02\x02\u22C4\u22C5\x03\x02\x02\x02\u22C5" +
		"\u03FF\x03\x02\x02\x02\u22C6\u22C7\x07\u0147\x02\x02\u22C7\u22C8\t3\x02" +
		"\x02\u22C8\u22C9\x07\xD1\x02\x02\u22C9\u22CA\x07\x95\x02\x02\u22CA\u22CB" +
		"\x05\xF6|\x02\u22CB\u22CC\x07\u014F\x02\x02\u22CC\u22CD\x05\u059A\u02CE" +
		"\x02\u22CD\u0401\x03\x02\x02\x02\u22CE\u22CF\x07\xAF\x02\x02\u22CF\u22D0" +
		"\x05\xF6|\x02\u22D0\u22D1\x07\u014F\x02\x02\u22D1\u22D7\x05\u059A\u02CE" +
		"\x02\u22D2\u22D3\x07`\x02\x02\u22D3\u22D4\x05\u059E\u02D0\x02\u22D4\u22D5" +
		"\x077\x02\x02\u22D5\u22D6\x05\u059E\u02D0\x02\u22D6\u22D8\x03\x02\x02" +
		"\x02\u22D7\u22D2\x03\x02\x02\x02\u22D7\u22D8\x03\x02\x02\x02\u22D8\u22D9" +
		"\x03\x02\x02\x02\u22D9\u22DA\x07f\x02\x02\u22DA\u22DB\x05\u059A\u02CE" +
		"\x02\u22DB\u0403\x03\x02\x02\x02\u22DC\u22E0\x07\u0105\x02\x02\u22DD\u22DE" +
		"\x07O\x02\x02\u22DE\u22E0\x07\u0105\x02\x02\u22DF\u22DC\x03\x02\x02\x02" +
		"\u22DF\u22DD\x03\x02\x02\x02\u22E0\u0405\x03\x02\x02\x02\u22E1\u22E2\x05" +
		"\u03FA\u01FE\x02\u22E2\u0407\x03\x02\x02\x02\u22E3\u22E8\x07I\x02\x02" +
		"\u22E4\u22E5\x05\u040A\u0206\x02\u22E5\u22E6\x05\u040C\u0207\x02\u22E6" +
		"\u22E9\x03\x02\x02\x02\u22E7\u22E9\x05\u068C\u0347\x02\u22E8\u22E4\x03" +
		"\x02\x02\x02\u22E8\u22E7\x03\x02\x02\x02\u22E9\u0409\x03\x02\x02\x02\u22EA" +
		"\u22ED\x03\x02\x02\x02\u22EB\u22ED\x07\u015C\x02\x02\u22EC\u22EA\x03\x02" +
		"\x02\x02\u22EC\u22EB\x03\x02\x02\x02\u22ED\u040B\x03\x02\x02\x02\u22EE" +
		"\u22F0\t4\x02\x02\u22EF\u22EE\x03\x02\x02\x02\u22EF\u22F0\x03\x02\x02" +
		"\x02\u22F0\u22F1\x03\x02\x02\x02\u22F1\u22F3\t\x17\x02\x02\u22F2\u22F4" +
		"\x05\u040E\u0208\x02\u22F3\u22F2\x03\x02\x02\x02\u22F3\u22F4\x03\x02\x02" +
		"\x02\u22F4\u22F5\x03\x02\x02\x02\u22F5\u22FF\x05\u057E\u02C0\x02\u22F6" +
		"\u22F8\x07\u0171\x02\x02\u22F7\u22F9\x05\u040E\u0208\x02\u22F8\u22F7\x03" +
		"\x02\x02\x02\u22F8\u22F9\x03\x02\x02\x02\u22F9\u22FA\x03\x02\x02\x02\u22FA" +
		"\u22FF\x05\u057E\u02C0\x02\u22FB\u22FC\x07^\x02\x02\u22FC\u22FF\x05\u057E" +
		"\u02C0\x02\u22FD\u22FF\x05\u057E\u02C0\x02\u22FE\u22EF\x03\x02\x02\x02" +
		"\u22FE\u22F6\x03\x02\x02\x02\u22FE\u22FB\x03\x02\x02\x02\u22FE\u22FD\x03" +
		"\x02\x02\x02\u22FF\u040D\x03\x02\x02\x02\u2300\u2301\x07^\x02\x02\u2301" +
		"\u040F\x03\x02\x02\x02\u2302\u2303\t5\x02\x02\u2303\u0411\x03\x02\x02" +
		"\x02\u2304\u230A\x07:\x02\x02\u2305\u2306\x07R\x02\x02\u2306\u2307\x07" +
		"\x04\x02\x02\u2307\u2308\x05\u0532\u029A\x02\u2308\u2309\x07\x05\x02\x02" +
		"\u2309\u230B\x03\x02\x02\x02\u230A\u2305\x03\x02\x02\x02\u230A\u230B\x03" +
		"\x02\x02\x02\u230B\u0413\x03\x02\x02\x02\u230C\u230D\x07 \x02\x02\u230D" +
		"\u0415\x03\x02\x02\x02\u230E\u230F\x05\u0418\u020D\x02\u230F\u0417\x03" +
		"\x02\x02\x02\u2310\u2311\x07U\x02\x02\u2311\u2312\x07\x95\x02\x02\u2312" +
		"\u2313\x05\u041A\u020E\x02\u2313\u0419\x03\x02\x02\x02\u2314\u2319\x05" +
		"\u041C\u020F\x02\u2315\u2316\x07\b\x02\x02\u2316\u2318\x05\u041C\u020F" +
		"\x02\u2317\u2315\x03\x02\x02\x02\u2318\u231B\x03\x02\x02\x02\u2319\u2317" +
		"\x03\x02\x02\x02\u2319\u231A\x03\x02\x02\x02\u231A\u041B\x03\x02\x02\x02" +
		"\u231B\u2319\x03\x02\x02\x02\u231C\u2320\x05\u053A\u029E\x02\u231D\u231E" +
		"\x07f\x02\x02\u231E\u2321\x05\u052E\u0298\x02\u231F\u2321\x05\u028C\u0147" +
		"\x02\u2320\u231D\x03\x02\x02\x02\u2320\u231F\x03\x02\x02\x02\u2320\u2321" +
		"\x03\x02\x02\x02\u2321\u2323\x03\x02\x02\x02\u2322\u2324\x05\u028E\u0148" +
		"\x02\u2323\u2322\x03\x02\x02\x02\u2323\u2324\x03\x02\x02\x02\u2324\u041D" +
		"\x03\x02\x02\x02\u2325\u2327\x05\u0422\u0212\x02\u2326\u2328\x05\u0426" +
		"\u0214\x02\u2327\u2326\x03\x02\x02\x02\u2327\u2328\x03\x02\x02\x02\u2328" +
		"\u2332\x03\x02\x02\x02\u2329\u232B\x05\u0426\u0214\x02\u232A\u232C\x05" +
		"\u0424\u0213\x02\u232B\u232A\x03\x02\x02\x02\u232B\u232C\x03\x02\x02\x02" +
		"\u232C\u2332\x03\x02\x02\x02\u232D\u232F\x05\u0424\u0213\x02\u232E\u2330" +
		"\x05\u0426\u0214\x02\u232F\u232E\x03\x02\x02\x02\u232F\u2330\x03\x02\x02" +
		"\x02\u2330\u2332\x03\x02\x02\x02\u2331\u2325\x03\x02\x02\x02\u2331\u2329" +
		"\x03\x02\x02\x02\u2331\u232D\x03\x02\x02\x02\u2332\u041F\x03\x02\x02\x02" +
		"\u2333\u2334\x05\u041E\u0210\x02\u2334\u0421\x03\x02\x02\x02\u2335\u2336" +
		"\x07L\x02\x02\u2336\u2339\x05\u0428\u0215\x02\u2337\u2338\x07\b\x02\x02" +
		"\u2338\u233A\x05\u042A\u0216\x02\u2339\u2337\x03\x02\x02\x02\u2339\u233A" +
		"\x03\x02\x02\x02\u233A\u0423\x03\x02\x02\x02\u233B\u233C\x07?\x02\x02" +
		"\u233C\u234A\x05\u0432\u021A\x02\u233D\u233E\x05\u042C\u0217\x02\u233E" +
		"\u2342\x05\u0430\u0219\x02\u233F\u2343\x07S\x02\x02\u2340\u2341\x07k\x02" +
		"\x02\u2341\u2343\x07\u01D5\x02\x02\u2342\u233F\x03\x02\x02\x02\u2342\u2340" +
		"\x03\x02\x02\x02\u2343\u234B\x03\x02\x02\x02\u2344\u2348\x05\u0430\u0219" +
		"\x02\u2345\u2349\x07S\x02\x02\u2346\u2347\x07k\x02\x02\u2347\u2349\x07" +
		"\u01D5\x02\x02\u2348\u2345\x03\x02\x02\x02\u2348\u2346\x03\x02\x02\x02" +
		"\u2349\u234B\x03\x02\x02\x02\u234A\u233D\x03\x02\x02\x02\u234A\u2344\x03" +
		"\x02\x02\x02\u234B\u0425\x03\x02\x02\x02\u234C\u2351\x07Q\x02\x02\u234D" +
		"\u2352\x05\u042A\u0216\x02\u234E\u234F\x05\u042C\u0217\x02\u234F\u2350" +
		"\x05\u0430\u0219\x02\u2350\u2352\x03\x02\x02\x02\u2351\u234D\x03\x02\x02" +
		"\x02\u2351\u234E\x03\x02\x02\x02\u2352\u0427\x03\x02\x02\x02\u2353\u2356" +
		"\x05\u04BE\u0260\x02\u2354\u2356\x07 \x02\x02\u2355\u2353\x03\x02\x02" +
		"\x02\u2355\u2354\x03\x02\x02\x02\u2356\u0429\x03\x02\x02\x02\u2357\u2358" +
		"\x05\u04BE\u0260\x02\u2358\u042B\x03\x02\x02\x02\u2359\u235F\x05\u04E8" +
		"\u0275\x02\u235A\u235B\x07\x0E\x02\x02\u235B\u235F\x05\u042E\u0218\x02" +
		"\u235C\u235D\x07\x0F\x02\x02\u235D\u235F\x05\u042E\u0218\x02\u235E\u2359" +
		"\x03\x02\x02\x02\u235E\u235A\x03\x02\x02\x02\u235E\u235C\x03\x02\x02\x02" +
		"\u235F\u042D\x03\x02\x02\x02\u2360\u2363\x05\u05B2\u02DA\x02\u2361\u2363" +
		"\x05\u05B0\u02D9\x02\u2362\u2360\x03\x02\x02\x02\u2362\u2361\x03\x02\x02" +
		"\x02\u2363\u042F\x03\x02\x02\x02\u2364\u2365\t6\x02\x02\u2365\u0431\x03" +
		"\x02\x02\x02\u2366\u2367\t7\x02\x02\u2367\u0433\x03\x02\x02\x02\u2368" +
		"\u2369\x07D\x02\x02\u2369\u236B\x07\x95\x02\x02\u236A\u236C\x05\u0410" +
		"\u0209\x02\u236B\u236A\x03\x02\x02\x02\u236B\u236C\x03\x02\x02\x02\u236C" +
		"\u236D\x03\x02\x02\x02\u236D\u236E\x05\u0436\u021C\x02\u236E\u0435\x03" +
		"\x02\x02\x02\u236F\u2374\x05\u0438\u021D\x02\u2370\u2371\x07\b\x02\x02" +
		"\u2371\u2373\x05\u0438\u021D\x02\u2372\u2370\x03\x02\x02\x02\u2373\u2376" +
		"\x03\x02\x02\x02\u2374\u2372\x03\x02\x02\x02\u2374\u2375\x03\x02\x02\x02" +
		"\u2375\u0437\x03\x02\x02\x02\u2376\u2374\x03\x02\x02\x02\u2377\u2381\x05" +
		"\u053A\u029E\x02\u2378\u2381\x05\u043A\u021E\x02\u2379\u2381\x05\u043E" +
		"\u0220\x02\u237A\u2381\x05\u043C\u021F\x02\u237B\u2381\x05\u0440\u0221" +
		"\x02\u237C\u237D\x07\x04\x02\x02\u237D\u237E\x05\u0534\u029B\x02\u237E" +
		"\u237F\x07\x05\x02\x02\u237F\u2381\x03\x02\x02\x02\u2380\u2377\x03\x02" +
		"\x02\x02\u2380\u2378\x03\x02\x02\x02\u2380\u2379\x03\x02\x02\x02\u2380" +
		"\u237A\x03\x02\x02\x02\u2380\u237B\x03\x02\x02\x02\u2380\u237C\x03\x02" +
		"\x02\x02\u2381\u0439\x03\x02\x02\x02\u2382\u2383\x07\x04\x02\x02\u2383" +
		"\u2384\x07\x05\x02\x02\u2384\u043B\x03\x02\x02\x02\u2385\u2386\x07\u01D6" +
		"\x02\x02\u2386\u2387\x07\x04\x02\x02\u2387\u2388\x05\u0534\u029B\x02\u2388" +
		"\u2389\x07\x05\x02\x02\u2389\u043D\x03\x02\x02\x02\u238A\u238B\x07\u01D7" +
		"\x02\x02\u238B\u238C\x07\x04\x02\x02\u238C\u238D\x05\u0534\u029B\x02\u238D" +
		"\u238E\x07\x05\x02\x02\u238E\u043F\x03\x02\x02\x02\u238F\u2390\x07\u01D8" +
		"\x02\x02\u2390\u2391\x07\u01D9\x02\x02\u2391\u2392\x07\x04\x02\x02\u2392" +
		"\u2393\x05\u0436\u021C\x02\u2393\u2394\x07\x05\x02\x02\u2394\u0441\x03" +
		"\x02\x02\x02\u2395\u2396\x07E\x02\x02\u2396\u2397\x05\u04BE\u0260\x02" +
		"\u2397\u0443\x03\x02\x02\x02\u2398\u239D\x05\u0448\u0225\x02\u2399\u239A" +
		"\x07@\x02\x02\u239A\u239B\x07\u012E\x02\x02\u239B\u239D\x07S\x02\x02\u239C" +
		"\u2398\x03\x02\x02\x02\u239C\u2399\x03\x02\x02\x02\u239D\u0445\x03\x02" +
		"\x02\x02\u239E\u239F\x05\u0444\u0223\x02\u239F\u0447\x03\x02\x02\x02\u23A0" +
		"\u23A2\x05\u044A\u0226\x02\u23A1\u23A0\x03\x02\x02\x02\u23A2\u23A3\x03" +
		"\x02\x02\x02\u23A3\u23A1\x03\x02\x02\x02\u23A3\u23A4\x03\x02\x02\x02\u23A4" +
		"\u0449\x03\x02\x02\x02\u23A5\u23A7\x05\u044C\u0227\x02\u23A6\u23A8\x05" +
		"\u044E\u0228\x02\u23A7\u23A6\x03\x02\x02\x02\u23A7\u23A8\x03\x02\x02\x02" +
		"\u23A8\u23AA\x03\x02\x02\x02\u23A9\u23AB\x05\u03D8\u01ED\x02\u23AA\u23A9" +
		"\x03\x02\x02\x02\u23AA\u23AB\x03\x02\x02\x02\u23AB\u044B\x03\x02\x02\x02" +
		"\u23AC\u23B6\x07@\x02\x02\u23AD\u23AE\x07\u010F\x02\x02\u23AE\u23B0\x07" +
		"\xF7\x02\x02\u23AF\u23AD\x03\x02\x02\x02\u23AF\u23B0\x03\x02\x02\x02\u23B0" +
		"\u23B1\x03\x02\x02\x02\u23B1\u23B7\x07\u0173\x02\x02\u23B2\u23B4\x07\xF7" +
		"\x02\x02\u23B3\u23B2\x03\x02\x02\x02\u23B3\u23B4\x03\x02\x02\x02\u23B4" +
		"\u23B5\x03\x02\x02\x02\u23B5\u23B7\x07\u0150\x02\x02\u23B6\u23AF\x03\x02" +
		"\x02\x02\u23B6\u23B3\x03\x02\x02\x02\u23B7\u044D\x03\x02\x02\x02\u23B8" +
		"\u23B9\x07\u0115\x02\x02\u23B9\u23BA\x05\u0570\u02B9\x02\u23BA\u044F\x03" +
		"\x02\x02\x02\u23BB\u23BC\x07\u01A8\x02\x02\u23BC\u23BD\x07\x04\x02\x02" +
		"\u23BD\u23BE\x05\u0532\u029A\x02\u23BE\u23C6\x07\x05\x02\x02\u23BF\u23C0" +
		"\x07\b\x02\x02\u23C0\u23C1\x07\x04\x02\x02\u23C1\u23C2\x05\u0532\u029A" +
		"\x02\u23C2\u23C3\x07\x05\x02\x02\u23C3\u23C5\x03\x02\x02\x02\u23C4\u23BF" +
		"\x03\x02\x02\x02\u23C5\u23C8\x03\x02\x02\x02\u23C6\u23C4\x03\x02\x02\x02" +
		"\u23C6\u23C7\x03\x02\x02\x02\u23C7\u0451\x03\x02\x02\x02\u23C8\u23C6\x03" +
		"\x02\x02\x02\u23C9\u23CA\x07B\x02\x02\u23CA\u23CB\x05\u0454\u022B\x02" +
		"\u23CB\u0453\x03\x02\x02\x02\u23CC\u23D1\x05\u0456\u022C\x02\u23CD\u23CE" +
		"\x07\b\x02\x02\u23CE\u23D0\x05\u0456\u022C\x02\u23CF\u23CD\x03\x02\x02" +
		"\x02\u23D0\u23D3\x03\x02\x02\x02\u23D1\u23CF\x03\x02\x02\x02\u23D1\u23D2" +
		"\x03\x02\x02\x02\u23D2\u0455\x03\x02\x02\x02\u23D3\u23D1\x03\x02\x02\x02" +
		"\u23D4\u23D6\x05\u0462\u0232\x02\u23D5\u23D7\x05\u045A\u022E\x02\u23D6" +
		"\u23D5\x03\x02\x02\x02\u23D6\u23D7\x03\x02\x02\x02\u23D7\u23D9\x03\x02" +
		"\x02\x02\u23D8\u23DA\x05\u046C\u0237\x02\u23D9\u23D8\x03\x02\x02\x02\u23D9" +
		"\u23DA\x03\x02\x02\x02\u23DA\u240F\x03\x02\x02\x02\u23DB\u23DD\x05\u0470" +
		"\u0239\x02\u23DC\u23DE\x05\u045C\u022F\x02\u23DD\u23DC\x03\x02\x02\x02" +
		"\u23DD\u23DE\x03\x02\x02\x02\u23DE\u240F\x03\x02\x02\x02\u23DF\u23E1\x05" +
		"\u0484\u0243\x02\u23E0\u23E2\x05\u045A\u022E\x02\u23E1\u23E0\x03\x02\x02" +
		"\x02\u23E1\u23E2\x03\x02\x02\x02\u23E2\u240F\x03\x02\x02\x02\u23E3\u23E5" +
		"\x05\u03EE\u01F8\x02\u23E4\u23E6\x05\u045A\u022E\x02\u23E5\u23E4\x03\x02" +
		"\x02\x02\u23E5\u23E6\x03\x02\x02\x02\u23E6\u240F\x03\x02\x02\x02\u23E7" +
		"\u23F4\x07J\x02\x02\u23E8\u23EA\x05\u0484\u0243\x02\u23E9\u23EB\x05\u045A" +
		"\u022E\x02\u23EA\u23E9\x03\x02\x02\x02\u23EA\u23EB\x03\x02\x02\x02\u23EB" +
		"\u23F5\x03\x02\x02\x02\u23EC\u23EE\x05\u0470\u0239\x02\u23ED\u23EF\x05" +
		"\u045C\u022F\x02\u23EE\u23ED\x03\x02\x02\x02\u23EE\u23EF\x03\x02\x02\x02" +
		"\u23EF\u23F5\x03\x02\x02\x02\u23F0\u23F2\x05\u03EE\u01F8\x02\u23F1\u23F3" +
		"\x05\u045A\u022E\x02\u23F2\u23F1\x03\x02\x02\x02\u23F2\u23F3\x03\x02\x02" +
		"\x02\u23F3\u23F5\x03\x02\x02\x02\u23F4\u23E8\x03\x02\x02\x02\u23F4\u23EC" +
		"\x03\x02\x02\x02\u23F4\u23F0\x03\x02\x02\x02\u23F5\u240F\x03\x02\x02\x02" +
		"\u23F6\u23F7\x07\x04\x02\x02\u23F7\u2408\x05\u0456\u022C\x02\u23F8\u23F9" +
		"\x07p\x02\x02\u23F9\u23FA\x07x\x02\x02\u23FA\u2409\x05\u0456\u022C\x02" +
		"\u23FB\u23FD\x07{\x02\x02\u23FC\u23FE\x05\u045E\u0230\x02\u23FD\u23FC" +
		"\x03\x02\x02\x02\u23FD\u23FE\x03\x02\x02\x02\u23FE\u23FF\x03\x02\x02\x02" +
		"\u23FF\u2400\x07x\x02\x02\u2400\u2409\x05\u0456\u022C\x02\u2401\u2403" +
		"\x05\u045E\u0230\x02\u2402\u2401\x03\x02\x02\x02\u2402\u2403\x03\x02\x02" +
		"\x02\u2403\u2404\x03\x02\x02\x02\u2404\u2405\x07x\x02\x02\u2405\u2406" +
		"\x05\u0456\u022C\x02\u2406\u2407\x05\u0460\u0231\x02\u2407\u2409\x03\x02" +
		"\x02\x02\u2408\u23F8\x03\x02\x02\x02\u2408\u23FB\x03\x02\x02\x02\u2408" +
		"\u2402\x03\x02\x02\x02\u2408\u2409\x03\x02\x02\x02\u2409\u240A\x03\x02" +
		"\x02\x02\u240A\u240C\x07\x05\x02\x02\u240B\u240D\x05\u045A\u022E\x02\u240C" +
		"\u240B\x03\x02\x02\x02\u240C\u240D\x03\x02\x02\x02\u240D\u240F\x03\x02" +
		"\x02\x02\u240E\u23D4\x03\x02\x02\x02\u240E\u23DB\x03\x02\x02\x02\u240E" +
		"\u23DF\x03\x02\x02\x02\u240E\u23E3\x03\x02\x02\x02\u240E\u23E7\x03\x02" +
		"\x02\x02\u240E\u23F6\x03\x02\x02\x02\u240F\u2422\x03\x02\x02\x02\u2410" +
		"\u2411\x07p\x02\x02\u2411\u2412\x07x\x02\x02\u2412\u2421\x05\u0456\u022C" +
		"\x02\u2413\u2415\x07{\x02\x02\u2414\u2416\x05\u045E\u0230\x02\u2415\u2414" +
		"\x03\x02\x02\x02\u2415\u2416\x03\x02\x02\x02\u2416\u2417\x03\x02\x02\x02" +
		"\u2417\u2418\x07x\x02\x02\u2418\u2421\x05\u0456\u022C\x02\u2419\u241B" +
		"\x05\u045E\u0230\x02\u241A\u2419\x03\x02\x02\x02\u241A\u241B\x03\x02\x02" +
		"\x02\u241B\u241C\x03\x02\x02\x02\u241C\u241D\x07x\x02\x02\u241D\u241E" +
		"\x05\u0456\u022C\x02\u241E\u241F\x05\u0460\u0231\x02\u241F\u2421\x03\x02" +
		"\x02\x02\u2420\u2410\x03\x02\x02\x02\u2420\u2413\x03\x02\x02\x02\u2420" +
		"\u241A\x03\x02\x02\x02\u2421\u2424\x03\x02\x02\x02\u2422\u2420\x03\x02" +
		"\x02\x02\u2422\u2423\x03\x02\x02\x02\u2423\u0457\x03\x02\x02\x02\u2424" +
		"\u2422\x03\x02\x02\x02\u2425\u2427\x07&\x02\x02\u2426\u2425\x03\x02\x02" +
		"\x02\u2426\u2427\x03\x02\x02\x02\u2427\u2428\x03\x02\x02\x02\u2428\u242D" +
		"\x05\u05C4\u02E3\x02\u2429\u242A\x07\x04\x02\x02\u242A\u242B\x05\u058A" +
		"\u02C6\x02\u242B\u242C\x07\x05\x02\x02\u242C\u242E\x03\x02\x02\x02\u242D" +
		"\u2429\x03\x02\x02\x02\u242D\u242E\x03\x02\x02\x02\u242E\u0459\x03\x02" +
		"\x02\x02\u242F\u2430\x05\u0458\u022D\x02\u2430\u045B\x03\x02\x02\x02\u2431" +
		"\u243E\x05\u0458\u022D\x02\u2432\u2434\x07&\x02\x02\u2433\u2435\x05\u05C4" +
		"\u02E3\x02\u2434\u2433\x03\x02\x02\x02\u2434\u2435\x03\x02\x02\x02\u2435" +
		"\u2438\x03\x02\x02\x02\u2436\u2438\x05\u05C4\u02E3\x02\u2437\u2432\x03" +
		"\x02\x02\x02\u2437\u2436\x03\x02\x02\x02\u2438\u2439\x03\x02\x02\x02\u2439" +
		"\u243A\x07\x04\x02\x02\u243A\u243B\x05\u0480\u0241\x02\u243B\u243C\x07" +
		"\x05\x02\x02\u243C\u243E\x03\x02\x02\x02\u243D\u2431\x03\x02\x02\x02\u243D" +
		"\u2437\x03\x02\x02\x02\u243E\u045D\x03\x02\x02\x02\u243F\u2441\t8\x02" +
		"\x02\u2440\u2442\x07}\x02\x02\u2441\u2440\x03\x02\x02\x02\u2441\u2442" +
		"\x03\x02\x02\x02\u2442\u045F\x03\x02\x02\x02\u2443\u2444\x07f\x02\x02" +
		"\u2444\u2445\x07\x04\x02\x02\u2445\u2446\x05\xF6|\x02\u2446\u2447\x07" +
		"\x05\x02\x02\u2447\u244B\x03\x02\x02\x02\u2448\u2449\x07R\x02\x02\u2449" +
		"\u244B\x05\u04BE\u0260\x02\u244A\u2443\x03\x02\x02\x02\u244A\u2448\x03" +
		"\x02\x02\x02\u244B\u0461\x03\x02\x02\x02\u244C\u244E\x07S\x02\x02\u244D" +
		"\u244C\x03\x02\x02\x02\u244D\u244E\x03\x02\x02\x02\u244E\u244F\x03\x02" +
		"\x02\x02\u244F\u2451\x05\u0580\u02C1\x02\u2450\u2452\x07\v\x02\x02\u2451" +
		"\u2450\x03\x02\x02\x02\u2451\u2452\x03\x02\x02\x02\u2452\u2454\x03\x02" +
		"\x02\x02\u2453\u2455\x05\xF6|\x02\u2454\u2453\x03\x02\x02\x02\u2454\u2455" +
		"\x03\x02\x02\x02\u2455\u2457\x03\x02\x02\x02\u2456\u2458\x05\u047A\u023E" +
		"\x02\u2457\u2456\x03\x02\x02\x02\u2457\u2458\x03\x02\x02\x02\u2458\u2468" +
		"\x03\x02\x02\x02\u2459\u245F\x07S\x02\x02\u245A\u2460\x05\u0580\u02C1" +
		"\x02\u245B\u245C\x07\x04\x02\x02\u245C\u245D\x05\u0580\u02C1\x02\u245D" +
		"\u245E\x07\x05\x02\x02\u245E\u2460\x03\x02\x02\x02\u245F\u245A\x03\x02" +
		"\x02\x02\u245F\u245B\x03\x02\x02\x02\u2460\u2468\x03\x02\x02\x02\u2461" +
		"\u2462\x07F\x02\x02\u2462\u2465\x07\u0145\x02\x02\u2463\u2466\x05\u0590" +
		"\u02C9\x02\u2464\u2466\x07q\x02\x02\u2465\u2463\x03\x02\x02\x02\u2465" +
		"\u2464\x03\x02\x02\x02\u2466\u2468\x03\x02\x02\x02\u2467\u244D\x03\x02" +
		"\x02\x02\u2467\u2459\x03\x02\x02\x02\u2467\u2461\x03\x02\x02\x02\u2468" +
		"\u0463\x03\x02\x02\x02\u2469\u246B\x07^\x02\x02\u246A\u246C\x07S\x02\x02" +
		"\u246B\u246A\x03\x02\x02\x02\u246B\u246C\x03\x02\x02\x02\u246C\u246D\x03" +
		"\x02\x02\x02\u246D\u246F\x05\u0580\u02C1\x02\u246E\u2470\x07\v\x02\x02" +
		"\u246F\u246E\x03\x02\x02\x02\u246F\u2470\x03\x02\x02\x02\u2470\u2475\x03" +
		"\x02\x02\x02\u2471\u2472\x07\x04\x02\x02\u2472\u2473\x05\xF6|\x02\u2473" +
		"\u2474\x07\x05\x02\x02\u2474\u2476\x03\x02\x02\x02\u2475\u2471\x03\x02" +
		"\x02\x02\u2475\u2476\x03\x02\x02\x02\u2476\u2478\x03\x02\x02\x02\u2477" +
		"\u2479\x05\u047A\u023E\x02\u2478\u2477\x03\x02\x02\x02\u2478\u2479\x03" +
		"\x02\x02\x02\u2479\u248B\x03\x02\x02\x02\u247A\u247B\x07^\x02\x02\u247B" +
		"\u2481\x07S\x02\x02\u247C\u2482\x05\u0580\u02C1\x02\u247D\u247E\x07\x04" +
		"\x02\x02\u247E\u247F\x05\u0580\u02C1\x02\u247F\u2480\x07\x05\x02\x02\u2480" +
		"\u2482\x03\x02\x02\x02\u2481\u247C\x03\x02\x02\x02\u2481\u247D\x03\x02" +
		"\x02\x02\u2482\u248B\x03\x02\x02\x02\u2483\u2484\x07\u0160\x02\x02\u2484" +
		"\u2485\x07F\x02\x02\u2485\u2488\x07\u0145\x02\x02\u2486\u2489\x05\u0590" +
		"\u02C9\x02\u2487\u2489\x07q\x02\x02\u2488\u2486\x03\x02\x02\x02\u2488" +
		"\u2487\x03\x02\x02\x02\u2489\u248B\x03\x02\x02\x02\u248A\u2469\x03\x02" +
		"\x02\x02\u248A\u247A\x03\x02\x02\x02\u248A\u2483\x03\x02\x02\x02\u248B" +
		"\u0465\x03\x02\x02\x02\u248C\u2491\x05\u0462\u0232\x02\u248D\u248E\x07" +
		"\b\x02\x02\u248E\u2490\x05\u0462\u0232\x02\u248F\u248D\x03\x02\x02\x02" +
		"\u2490\u2493\x03\x02\x02\x02\u2491\u248F\x03\x02\x02\x02\u2491\u2492\x03" +
		"\x02\x02\x02\u2492\u0467\x03\x02\x02\x02\u2493\u2491\x03\x02\x02\x02\u2494" +
		"\u2499\x05\u0464\u0233\x02\u2495\u2496\x07\b\x02\x02\u2496\u2498\x05\u0464" +
		"\u0233\x02\u2497\u2495\x03\x02\x02\x02\u2498\u249B\x03\x02\x02\x02\u2499" +
		"\u2497\x03\x02\x02\x02\u2499\u249A\x03\x02\x02\x02\u249A\u0469\x03\x02" +
		"\x02\x02\u249B\u2499\x03\x02\x02\x02\u249C\u24A1\x05\u0462\u0232\x02\u249D" +
		"\u249F\x07&\x02\x02\u249E\u249D\x03\x02\x02\x02\u249E\u249F\x03\x02\x02" +
		"\x02\u249F\u24A0\x03\x02\x02\x02\u24A0\u24A2\x05\u05C4\u02E3\x02\u24A1" +
		"\u249E\x03\x02\x02\x02\u24A1\u24A2\x03\x02\x02\x02\u24A2\u046B\x03\x02" +
		"\x02\x02\u24A3\u24A4\x07\u01DA\x02\x02\u24A4\u24A5\x05\u05A6\u02D4\x02" +
		"\u24A5\u24A6\x07\x04\x02\x02\u24A6\u24A7\x05\u0532\u029A\x02\u24A7\u24A9" +
		"\x07\x05\x02\x02\u24A8\u24AA\x05\u046E\u0238\x02\u24A9\u24A8\x03\x02\x02" +
		"\x02\u24A9\u24AA\x03\x02\x02\x02\u24AA\u046D\x03\x02\x02\x02\u24AB\u24AC" +
		"\x07\u0138\x02\x02\u24AC\u24AD\x07\x04\x02\x02\u24AD\u24AE\x05\u04BE\u0260" +
		"\x02\u24AE\u24AF\x07\x05\x02\x02\u24AF\u046F\x03\x02\x02\x02\u24B0\u24B2" +
		"\x05\u04F0\u0279\x02\u24B1\u24B3\x05\u0478\u023D\x02\u24B2\u24B1\x03\x02" +
		"\x02\x02\u24B2\u24B3\x03\x02\x02\x02\u24B3\u24BD\x03\x02\x02\x02\u24B4" +
		"\u24B5\x07\u0142\x02\x02\u24B5\u24B6\x07B\x02\x02\u24B6\u24B7\x07\x04" +
		"\x02\x02\u24B7\u24B8\x05\u0474\u023B\x02\u24B8\u24BA\x07\x05\x02\x02\u24B9" +
		"\u24BB\x05\u0478\u023D\x02\u24BA\u24B9\x03\x02\x02\x02\u24BA\u24BB\x03" +
		"\x02\x02\x02\u24BB\u24BD\x03\x02\x02\x02\u24BC\u24B0\x03\x02\x02\x02\u24BC" +
		"\u24B4\x03\x02\x02\x02\u24BD\u0471\x03\x02\x02\x02\u24BE\u24C0\x05\u04F0" +
		"\u0279\x02\u24BF\u24C1\x05\u0476\u023C\x02\u24C0\u24BF\x03\x02\x02\x02" +
		"\u24C0\u24C1\x03\x02\x02\x02\u24C1\u0473\x03\x02\x02\x02\u24C2\u24C7\x05" +
		"\u0472\u023A\x02\u24C3\u24C4\x07\b\x02\x02\u24C4\u24C6\x05\u0472\u023A" +
		"\x02\u24C5\u24C3\x03\x02\x02\x02\u24C6\u24C9\x03\x02\x02\x02\u24C7\u24C5" +
		"\x03\x02\x02\x02\u24C7\u24C8\x03\x02\x02\x02\u24C8\u0475\x03\x02\x02\x02" +
		"\u24C9\u24C7\x03\x02\x02\x02\u24CA\u24CB\x07&\x02\x02\u24CB\u24CC\x07" +
		"\x04\x02\x02\u24CC\u24CD\x05\u0480\u0241\x02\u24CD\u24CE\x07\x05\x02\x02" +
		"\u24CE\u0477\x03\x02\x02\x02\u24CF\u24D0\x07k\x02\x02\u24D0\u24D1\x07" +
		"\u01DB\x02\x02\u24D1\u0479\x03\x02\x02\x02\u24D2\u24D3\x07i\x02\x02\u24D3" +
		"\u24D4\x05\u053A\u029E\x02\u24D4\u047B\x03\x02\x02\x02\u24D5\u24DA\x07" +
		"i\x02\x02\u24D6\u24D7\x07\u01B4\x02\x02\u24D7\u24D8\x07\u0115\x02\x02" +
		"\u24D8\u24DB\x05\u03E6\u01F4\x02\u24D9\u24DB\x05\u04BE\u0260\x02\u24DA" +
		"\u24D6\x03\x02\x02\x02\u24DA\u24D9\x03\x02\x02\x02\u24DB\u047D\x03\x02" +
		"\x02\x02\u24DC\u24DD\x05\u0480\u0241\x02\u24DD\u047F\x03\x02\x02\x02\u24DE" +
		"\u24E3\x05\u0482\u0242\x02\u24DF\u24E0\x07\b\x02\x02\u24E0\u24E2\x05\u0482" +
		"\u0242\x02\u24E1\u24DF\x03\x02\x02\x02\u24E2\u24E5\x03\x02\x02\x02\u24E3" +
		"\u24E1\x03\x02\x02\x02\u24E3\u24E4\x03\x02\x02\x02\u24E4\u0481\x03\x02" +
		"\x02\x02\u24E5\u24E3\x03\x02\x02\x02\u24E6\u24E7\x05\u05C4\u02E3\x02\u24E7" +
		"\u24E9\x05\u0492\u024A\x02\u24E8\u24EA\x05\x80A\x02\u24E9\u24E8\x03\x02" +
		"\x02\x02\u24E9\u24EA\x03\x02\x02\x02\u24EA\u0483\x03\x02\x02\x02\u24EB" +
		"\u24EC\x07\u01DC\x02\x02\u24EC\u24FC\x07\x04\x02\x02\u24ED\u24EE\x05\u04E8" +
		"\u0275\x02\u24EE\u24EF\x05\u0502\u0282\x02\u24EF\u24F0\x07\u01DD\x02\x02" +
		"\u24F0\u24F1\x05\u0486\u0244\x02\u24F1\u24FD\x03\x02\x02\x02\u24F2\u24F3" +
		"\x07\u01DE\x02\x02\u24F3\u24F4\x07\x04\x02\x02\u24F4\u24F5\x05\u048E\u0248" +
		"\x02\u24F5\u24F6\x07\x05\x02\x02\u24F6\u24F7\x07\b\x02\x02\u24F7\u24F8" +
		"\x05\u04E8\u0275\x02\u24F8\u24F9\x05\u0502\u0282\x02\u24F9\u24FA\x07\u01DD" +
		"\x02\x02\u24FA\u24FB\x05\u0486\u0244\x02\u24FB\u24FD\x03\x02\x02\x02\u24FC" +
		"\u24ED\x03\x02\x02\x02\u24FC\u24F2\x03\x02\x02\x02\u24FD\u24FE\x03\x02" +
		"\x02\x02\u24FE\u24FF\x07\x05\x02\x02\u24FF\u0485\x03\x02\x02\x02\u2500" +
		"\u2505\x05\u0488\u0245\x02\u2501\u2502\x07\b\x02\x02\u2502\u2504\x05\u0488" +
		"\u0245\x02\u2503\u2501\x03\x02\x02\x02\u2504\u2507\x03\x02\x02\x02\u2505" +
		"\u2503\x03\x02\x02\x02\u2505\u2506\x03\x02\x02\x02\u2506\u0487\x03\x02" +
		"\x02\x02\u2507\u2505\x03\x02\x02\x02\u2508\u250F\x05\u05C4\u02E3\x02\u2509" +
		"\u250B\x05\u0492\u024A\x02\u250A\u250C\x05\u048A\u0246\x02\u250B\u250A" +
		"\x03\x02\x02\x02\u250B\u250C\x03\x02\x02\x02\u250C\u2510\x03\x02\x02\x02" +
		"\u250D\u250E\x07@\x02\x02\u250E\u2510\x07\u01DB\x02\x02\u250F\u2509\x03" +
		"\x02\x02\x02\u250F\u250D\x03\x02\x02\x02\u2510\u0489\x03\x02\x02\x02\u2511" +
		"\u2513\x05\u048C\u0247\x02\u2512\u2511\x03\x02\x02\x02\u2513\u2514\x03" +
		"\x02\x02\x02\u2514\u2512\x03\x02\x02\x02\u2514\u2515\x03\x02\x02\x02\u2515" +
		"\u048B\x03\x02\x02\x02\u2516\u2517\x077\x02\x02\u2517\u251F\x05\u04BE" +
		"\u0260\x02\u2518\u2519\x05\u05D6\u02EC\x02\u2519\u251A\x05\u04BE\u0260" +
		"\x02\u251A\u251F\x03\x02\x02\x02\u251B\u251C\x07O\x02\x02\u251C\u251F" +
		"\x07P\x02\x02\u251D\u251F\x07P\x02\x02\u251E\u2516\x03\x02\x02\x02\u251E" +
		"\u2518\x03\x02\x02\x02\u251E\u251B\x03\x02\x02\x02\u251E\u251D\x03\x02" +
		"\x02\x02\u251F\u048D\x03\x02\x02\x02\u2520\u2525\x05\u0490\u0249\x02\u2521" +
		"\u2522\x07\b\x02\x02\u2522\u2524\x05\u0490\u0249\x02\u2523\u2521\x03\x02" +
		"\x02\x02\u2524\u2527\x03\x02\x02\x02\u2525\u2523\x03\x02\x02\x02\u2525" +
		"\u2526\x03\x02\x02\x02\u2526\u048F\x03\x02\x02\x02\u2527\u2525\x03\x02" +
		"\x02\x02\u2528\u2529\x05\u04E6\u0274\x02\u2529\u252A\x07&\x02\x02\u252A" +
		"\u252B\x05\u05D4\u02EB\x02\u252B\u252F\x03\x02\x02\x02\u252C\u252D\x07" +
		"7\x02\x02\u252D\u252F\x05\u04E6\u0274\x02\u252E\u2528\x03\x02\x02\x02" +
		"\u252E\u252C\x03\x02\x02\x02\u252F\u0491\x03\x02\x02\x02\u2530\u2532\x07" +
		"\u01A1\x02\x02\u2531\u2530\x03\x02\x02\x02\u2531\u2532\x03\x02\x02\x02" +
		"\u2532\u2533\x03\x02\x02\x02\u2533\u253C\x05\u0496\u024C\x02\u2534\u253D" +
		"\x05\u0494\u024B\x02\u2535\u253A\x07%\x02\x02\u2536\u2537\x07\x06\x02" +
		"\x02\u2537\u2538\x05\u05B2\u02DA\x02\u2538\u2539\x07\x07\x02\x02\u2539" +
		"\u253B\x03\x02\x02\x02\u253A\u2536\x03\x02\x02\x02\u253A\u253B\x03\x02" +
		"\x02\x02\u253B\u253D\x03\x02\x02\x02\u253C\u2534\x03\x02\x02\x02\u253C" +
		"\u2535\x03\x02\x02\x02\u253D\u2543\x03\x02\x02\x02\u253E\u253F\x05\u0586" +
		"\u02C4\x02\u253F\u2540\x07\x1D\x02\x02\u2540\u2541\t9\x02\x02\u2541\u2543" +
		"\x03\x02\x02\x02\u2542\u2531\x03\x02\x02\x02\u2542\u253E\x03\x02\x02\x02" +
		"\u2543\u0493\x03\x02\x02\x02\u2544\u2546\x07\x06\x02\x02\u2545\u2547\x05" +
		"\u05B2\u02DA\x02\u2546\u2545\x03\x02\x02\x02\u2546\u2547\x03\x02\x02\x02" +
		"\u2547\u2548\x03\x02\x02\x02\u2548\u254A\x07\x07\x02\x02\u2549\u2544\x03" +
		"\x02\x02\x02\u254A\u254D\x03\x02\x02\x02\u254B\u2549\x03\x02\x02\x02\u254B" +
		"\u254C\x03\x02\x02\x02\u254C\u0495\x03\x02\x02\x02\u254D\u254B\x03\x02" +
		"\x02\x02\u254E\u255E\x05\u049A\u024E\x02\u254F\u255E\x05\u049E\u0250\x02" +
		"\u2550\u255E\x05\u04A2\u0252\x02\u2551\u255E\x05\u04AA\u0256\x02\u2552" +
		"\u255E\x05\u04B2\u025A\x02\u2553\u255B\x05\u04B4\u025B\x02\u2554\u2556" +
		"\x05\u04B8\u025D\x02\u2555\u2554\x03\x02\x02\x02\u2555\u2556\x03\x02\x02" +
		"\x02\u2556\u255C\x03\x02\x02\x02\u2557\u2558\x07\x04\x02\x02\u2558\u2559" +
		"\x05\u05B2\u02DA\x02\u2559\u255A\x07\x05\x02\x02\u255A\u255C\x03\x02\x02" +
		"\x02\u255B\u2555\x03\x02\x02\x02\u255B\u2557\x03\x02\x02\x02\u255C\u255E" +
		"\x03\x02\x02\x02\u255D\u254E\x03\x02\x02\x02\u255D\u254F\x03\x02\x02\x02" +
		"\u255D\u2550\x03\x02\x02\x02\u255D\u2551\x03\x02\x02\x02\u255D\u2552\x03" +
		"\x02\x02\x02\u255D\u2553\x03\x02\x02\x02\u255E\u0497\x03\x02\x02\x02\u255F" +
		"\u2564\x05\u049E\u0250\x02\u2560\u2564\x05\u04A4\u0253\x02\u2561\u2564" +
		"\x05\u04AC\u0257\x02\u2562\u2564\x05\u04B2\u025A\x02\u2563\u255F\x03\x02" +
		"\x02\x02\u2563\u2560\x03\x02\x02\x02\u2563\u2561\x03\x02\x02\x02\u2563" +
		"\u2562\x03\x02\x02\x02\u2564\u0499\x03\x02\x02\x02\u2565\u2567\x05\u05CC" +
		"\u02E7\x02\u2566\u2568\x05\u0232\u011A\x02\u2567\u2566\x03\x02\x02\x02" +
		"\u2567\u2568\x03\x02\x02\x02\u2568\u256A\x03\x02\x02\x02\u2569\u256B\x05" +
		"\u049C\u024F\x02\u256A\u2569\x03\x02\x02\x02\u256A\u256B\x03\x02\x02\x02" +
		"\u256B\u049B\x03\x02\x02\x02\u256C\u256D\x07\x04\x02\x02\u256D\u256E\x05" +
		"\u0532\u029A\x02\u256E\u256F\x07\x05\x02\x02\u256F\u049D\x03\x02\x02\x02" +
		"\u2570\u2589\x07\u0193\x02\x02\u2571\u2589\x07\u0194\x02\x02\u2572\u2589" +
		"\x07\u01A2\x02\x02\u2573\u2589\x07\u0186\x02\x02\u2574\u2589\x07\u019F" +
		"\x02\x02\u2575\u2577\x07\u0190\x02\x02\u2576\u2578\x05\u04A0\u0251\x02" +
		"\u2577\u2576\x03\x02\x02\x02";
	private static readonly _serializedATNSegment18: string =
		"\u2577\u2578\x03\x02\x02\x02\u2578\u2589\x03\x02\x02\x02\u2579\u257A\x07" +
		"\xC0\x02\x02\u257A\u2589\x07\u019E\x02\x02\u257B\u257D\x07\u018D\x02\x02" +
		"\u257C\u257E\x05\u049C\u024F\x02\u257D\u257C\x03\x02\x02\x02\u257D\u257E" +
		"\x03\x02\x02\x02\u257E\u2589\x03\x02\x02\x02\u257F\u2581\x07\u018C\x02" +
		"\x02\u2580\u2582\x05\u049C\u024F\x02\u2581\u2580\x03\x02\x02\x02\u2581" +
		"\u2582\x03\x02\x02\x02\u2582\u2589\x03\x02\x02\x02\u2583\u2585\x07\u019B" +
		"\x02\x02\u2584\u2586\x05\u049C\u024F\x02\u2585\u2584\x03\x02\x02\x02\u2585" +
		"\u2586\x03\x02\x02\x02\u2586\u2589\x03\x02\x02\x02\u2587\u2589\x07\u0188" +
		"\x02\x02\u2588\u2570\x03\x02\x02\x02\u2588\u2571\x03\x02\x02\x02\u2588" +
		"\u2572\x03\x02\x02\x02\u2588\u2573\x03\x02\x02\x02\u2588\u2574\x03\x02" +
		"\x02\x02\u2588\u2575\x03\x02\x02\x02\u2588\u2579\x03\x02\x02\x02\u2588" +
		"\u257B\x03\x02\x02\x02\u2588\u257F\x03\x02\x02\x02\u2588\u2583\x03\x02" +
		"\x02\x02\u2588\u2587\x03\x02\x02\x02\u2589\u049F\x03\x02\x02\x02\u258A" +
		"\u258B\x07\x04\x02\x02\u258B\u258C\x05\u05B2\u02DA\x02\u258C\u258D\x07" +
		"\x05\x02\x02\u258D\u04A1\x03\x02\x02\x02\u258E\u2591\x05\u04A6\u0254\x02" +
		"\u258F\u2591\x05\u04A8\u0255\x02\u2590\u258E\x03\x02\x02\x02\u2590\u258F" +
		"\x03\x02\x02\x02\u2591\u04A3\x03\x02\x02\x02\u2592\u2595\x05\u04A6\u0254" +
		"\x02\u2593\u2595\x05\u04A8\u0255\x02\u2594\u2592\x03\x02\x02\x02\u2594" +
		"\u2593\x03\x02\x02\x02\u2595\u04A5\x03\x02\x02\x02\u2596\u2598\x07\u0187" +
		"\x02\x02\u2597\u2599\x05\u04B0\u0259\x02\u2598\u2597\x03\x02\x02\x02\u2598" +
		"\u2599\x03\x02\x02\x02\u2599\u259A\x03\x02\x02\x02\u259A\u259B\x07\x04" +
		"\x02\x02\u259B\u259C\x05\u0532\u029A\x02\u259C\u259D\x07\x05\x02\x02\u259D" +
		"\u04A7\x03\x02\x02\x02\u259E\u25A0\x07\u0187\x02\x02\u259F\u25A1\x05\u04B0" +
		"\u0259\x02\u25A0\u259F\x03\x02\x02\x02\u25A0\u25A1\x03\x02\x02\x02\u25A1" +
		"\u04A9\x03\x02\x02\x02\u25A2\u25A7\x05\u04AE\u0258\x02\u25A3\u25A4\x07" +
		"\x04\x02\x02\u25A4\u25A5\x05\u05B2\u02DA\x02\u25A5\u25A6\x07\x05\x02\x02" +
		"\u25A6\u25A8\x03\x02\x02\x02\u25A7\u25A3\x03\x02\x02\x02\u25A7\u25A8\x03" +
		"\x02\x02\x02\u25A8\u04AB\x03\x02\x02\x02\u25A9\u25AE\x05\u04AE\u0258\x02" +
		"\u25AA\u25AB\x07\x04\x02\x02\u25AB\u25AC\x05\u05B2\u02DA\x02\u25AC\u25AD" +
		"\x07\x05\x02\x02\u25AD\u25AF\x03\x02\x02\x02\u25AE\u25AA\x03\x02\x02\x02" +
		"\u25AE\u25AF\x03\x02\x02\x02\u25AF\u04AD\x03\x02\x02\x02\u25B0\u25B2\t" +
		":\x02\x02\u25B1\u25B3\x05\u04B0\u0259\x02\u25B2\u25B1\x03\x02\x02\x02" +
		"\u25B2\u25B3\x03\x02\x02\x02\u25B3\u25BB\x03\x02\x02\x02\u25B4\u25BB\x07" +
		"\u01A9\x02\x02\u25B5\u25B6\x07\u0197\x02\x02\u25B6\u25B8\t;\x02\x02\u25B7" +
		"\u25B9\x05\u04B0\u0259\x02\u25B8\u25B7\x03\x02\x02\x02\u25B8\u25B9\x03" +
		"\x02\x02\x02\u25B9\u25BB\x03\x02\x02\x02\u25BA\u25B0\x03\x02\x02\x02\u25BA" +
		"\u25B4\x03\x02\x02\x02\u25BA\u25B5\x03\x02\x02\x02\u25BB\u04AF\x03\x02" +
		"\x02\x02\u25BC\u25BD\x07\u0178\x02\x02\u25BD\u04B1\x03\x02\x02\x02\u25BE" +
		"\u25C3\t<\x02\x02\u25BF\u25C0\x07\x04\x02\x02\u25C0\u25C1\x05\u05B2\u02DA" +
		"\x02\u25C1\u25C2\x07\x05\x02\x02\u25C2\u25C4\x03\x02\x02\x02\u25C3\u25BF" +
		"\x03\x02\x02\x02\u25C3\u25C4\x03\x02\x02\x02\u25C4\u25C6\x03\x02\x02\x02" +
		"\u25C5\u25C7\x05\u04B6\u025C\x02\u25C6\u25C5\x03\x02\x02\x02\u25C6\u25C7" +
		"\x03\x02\x02\x02\u25C7\u04B3\x03\x02\x02\x02\u25C8\u25C9\x07\u0195\x02" +
		"\x02\u25C9\u04B5\x03\x02\x02\x02\u25CA\u25CB\x07k\x02\x02\u25CB\u25CC" +
		"\x07\u01A4\x02\x02\u25CC\u25D1\x07\u0184\x02\x02\u25CD\u25CE\x07\u017D" +
		"\x02\x02\u25CE\u25CF\x07\u01A4\x02\x02\u25CF\u25D1\x07\u0184\x02\x02\u25D0" +
		"\u25CA\x03\x02\x02\x02\u25D0\u25CD\x03\x02\x02\x02\u25D1\u04B7\x03\x02" +
		"\x02\x02\u25D2\u25EC\x07\u0182\x02\x02\u25D3\u25EC\x07\u010A\x02\x02\u25D4" +
		"\u25EC\x07\xB2\x02\x02\u25D5\u25EC\x07\xDC\x02\x02\u25D6\u25EC\x07\u0107" +
		"\x02\x02\u25D7\u25EC\x05\u04BA\u025E\x02\u25D8\u25D9\x07\u0182\x02\x02" +
		"\u25D9\u25DA\x07`\x02\x02\u25DA\u25EC\x07\u010A\x02\x02\u25DB\u25DC\x07" +
		"\xB2\x02\x02\u25DC\u25E0\x07`\x02\x02\u25DD\u25E1\x07\xDC\x02\x02\u25DE" +
		"\u25E1\x07\u0107\x02\x02\u25DF\u25E1\x05\u04BA\u025E\x02\u25E0\u25DD\x03" +
		"\x02\x02\x02\u25E0\u25DE\x03\x02\x02\x02\u25E0\u25DF\x03\x02\x02\x02\u25E1" +
		"\u25EC\x03\x02\x02\x02\u25E2\u25E3\x07\xDC\x02\x02\u25E3\u25E6\x07`\x02" +
		"\x02\u25E4\u25E7\x07\u0107\x02\x02\u25E5\u25E7\x05\u04BA\u025E\x02\u25E6" +
		"\u25E4\x03\x02\x02\x02\u25E6\u25E5\x03\x02\x02\x02\u25E7\u25EC\x03\x02" +
		"\x02\x02\u25E8\u25E9\x07\u0107\x02\x02\u25E9\u25EA\x07`\x02\x02\u25EA" +
		"\u25EC\x05\u04BA\u025E\x02\u25EB\u25D2\x03\x02\x02\x02\u25EB\u25D3\x03" +
		"\x02\x02\x02\u25EB\u25D4\x03\x02\x02\x02\u25EB\u25D5\x03\x02\x02\x02\u25EB" +
		"\u25D6\x03\x02\x02\x02\u25EB\u25D7\x03\x02\x02\x02\u25EB\u25D8\x03\x02" +
		"\x02\x02\u25EB\u25DB\x03\x02\x02\x02\u25EB\u25E2\x03\x02\x02\x02\u25EB" +
		"\u25E8\x03\x02\x02\x02\u25EC\u04B9\x03\x02\x02\x02\u25ED\u25F2\x07\u0148" +
		"\x02\x02\u25EE\u25EF\x07\x04\x02\x02\u25EF\u25F0\x05\u05B2\u02DA\x02\u25F0" +
		"\u25F1\x07\x05\x02\x02\u25F1\u25F3\x03\x02\x02\x02\u25F2\u25EE\x03\x02" +
		"\x02\x02\u25F2\u25F3\x03\x02\x02\x02\u25F3\u04BB\x03\x02\x02\x02\u25F4" +
		"\u25F5\x07\xC7\x02\x02\u25F5\u25F6\x05\u04BE\u0260\x02\u25F6\u04BD\x03" +
		"\x02\x02\x02\u25F7\u25F8\x05\u04C0\u0261\x02\u25F8\u04BF\x03\x02\x02\x02" +
		"\u25F9\u25FB\x05\u04C2\u0262\x02\u25FA\u25FC\x05\u052C\u0297\x02\u25FB" +
		"\u25FA\x03\x02\x02\x02\u25FB\u25FC\x03\x02\x02\x02\u25FC\u04C1\x03\x02" +
		"\x02\x02\u25FD\u2602\x05\u04C4\u0263\x02\u25FE\u25FF\t=\x02\x02\u25FF" +
		"\u2601\x05\u04C4\u0263\x02\u2600\u25FE\x03\x02\x02\x02\u2601\u2604\x03" +
		"\x02\x02\x02\u2602\u2600\x03\x02\x02\x02\u2602\u2603\x03\x02\x02\x02\u2603" +
		"\u04C3\x03\x02\x02\x02\u2604\u2602\x03\x02\x02\x02\u2605\u260A\x05\u04C6" +
		"\u0264\x02\u2606\u2607\x07T\x02\x02\u2607\u2609\x05\u04C6\u0264\x02\u2608" +
		"\u2606\x03\x02\x02\x02\u2609\u260C\x03\x02\x02\x02\u260A\u2608\x03\x02" +
		"\x02\x02\u260A\u260B\x03\x02\x02\x02\u260B\u04C5\x03\x02\x02\x02\u260C" +
		"\u260A\x03\x02\x02\x02\u260D\u2612\x05\u04C8\u0265\x02\u260E\u260F\x07" +
		"#\x02\x02\u260F\u2611\x05\u04C8\u0265\x02\u2610\u260E\x03\x02\x02\x02" +
		"\u2611\u2614\x03\x02\x02\x02\u2612\u2610\x03\x02\x02\x02\u2612\u2613\x03" +
		"\x02\x02\x02\u2613\u04C7\x03\x02\x02\x02\u2614\u2612\x03\x02\x02\x02\u2615" +
		"\u261B\x05\u04CA\u0266\x02\u2616\u2618\x07O\x02\x02\u2617\u2616\x03\x02" +
		"\x02\x02\u2617\u2618\x03\x02\x02\x02\u2618\u2619\x03\x02\x02\x02\u2619" +
		"\u261A\x07F\x02\x02\u261A\u261C\x05\u0554\u02AB\x02\u261B\u2617\x03\x02" +
		"\x02\x02\u261B\u261C\x03\x02\x02\x02\u261C\u04C9\x03\x02\x02\x02\u261D" +
		"\u261F\x07O\x02\x02\u261E\u261D\x03\x02\x02\x02\u261E\u261F\x03\x02\x02" +
		"\x02\u261F\u2620\x03\x02\x02\x02\u2620\u2621\x05\u04CC\u0267\x02\u2621" +
		"\u04CB\x03\x02\x02\x02\u2622\u2624\x05\u04CE\u0268\x02\u2623\u2625\t>" +
		"\x02\x02\u2624\u2623\x03\x02\x02\x02\u2624\u2625\x03\x02\x02\x02\u2625" +
		"\u04CD\x03\x02\x02\x02\u2626\u263E\x05\u04D0\u0269\x02\u2627\u2629\x07" +
		"v\x02\x02\u2628\u262A\x07O\x02\x02\u2629\u2628\x03\x02\x02\x02\u2629\u262A" +
		"\x03\x02\x02\x02\u262A\u263C\x03\x02\x02\x02\u262B\u263D\x07P\x02\x02" +
		"\u262C\u263D\x07b\x02\x02\u262D\u263D\x07>\x02\x02\u262E\u263D\x07\u016F" +
		"\x02\x02\u262F\u2630\x07:\x02\x02\u2630\u2631\x07B\x02\x02\u2631\u263D" +
		"\x05\u04BE\u0260\x02\u2632\u2633\x07\u0115\x02\x02\u2633\u2634\x07\x04" +
		"\x02\x02\u2634\u2635\x05\u0540\u02A1\x02\u2635\u2636\x07\x05\x02\x02\u2636" +
		"\u263D\x03\x02\x02\x02\u2637\u263D\x07\xBE\x02\x02\u2638\u263A\x05\u054A" +
		"\u02A6\x02\u2639\u2638\x03\x02\x02\x02\u2639\u263A\x03\x02\x02\x02\u263A" +
		"\u263B\x03\x02\x02\x02\u263B\u263D\x07\u01E0\x02\x02\u263C\u262B\x03\x02" +
		"\x02\x02\u263C\u262C\x03\x02\x02\x02\u263C\u262D\x03\x02\x02\x02\u263C" +
		"\u262E\x03\x02\x02\x02\u263C\u262F\x03\x02\x02\x02\u263C\u2632\x03\x02" +
		"\x02\x02\u263C\u2637\x03\x02\x02\x02\u263C\u2639\x03\x02\x02\x02\u263D" +
		"\u263F\x03\x02\x02\x02\u263E\u2627\x03\x02\x02\x02\u263E\u263F\x03\x02" +
		"\x02\x02\u263F\u04CF\x03\x02\x02\x02\u2640\u264C\x05\u04D2\u026A\x02\u2641" +
		"\u2642\t?\x02\x02\u2642\u264D\x05\u04D2\u026A\x02\u2643\u2644\x05\u0530" +
		"\u0299\x02\u2644\u264A\x05\u0526\u0294\x02\u2645\u264B\x05\u03EE\u01F8" +
		"\x02\u2646\u2647\x07\x04\x02\x02\u2647\u2648\x05\u04BE\u0260\x02\u2648" +
		"\u2649\x07\x05\x02\x02\u2649\u264B\x03\x02\x02\x02\u264A\u2645\x03\x02" +
		"\x02\x02\u264A\u2646\x03\x02\x02\x02\u264B\u264D\x03\x02\x02\x02\u264C" +
		"\u2641\x03\x02\x02\x02\u264C\u2643\x03\x02\x02\x02\u264C\u264D\x03\x02" +
		"\x02\x02\u264D\u04D1\x03\x02\x02\x02\u264E\u2660\x05\u04D4\u026B\x02\u264F" +
		"\u2651\x07O\x02\x02\u2650\u264F\x03\x02\x02\x02\u2650\u2651\x03\x02\x02" +
		"\x02\u2651\u265A\x03\x02\x02\x02\u2652\u265B\x07z\x02\x02\u2653\u265B" +
		"\x07t\x02\x02\u2654\u2655\x07\x81\x02\x02\u2655\u265B\x07`\x02\x02\u2656" +
		"\u2658\x07\u0185\x02\x02\u2657\u2659\x07]\x02\x02\u2658\u2657\x03\x02" +
		"\x02\x02\u2658\u2659\x03\x02\x02\x02\u2659\u265B\x03\x02\x02\x02\u265A" +
		"\u2652\x03\x02\x02\x02\u265A\u2653\x03\x02\x02\x02\u265A\u2654\x03\x02" +
		"\x02\x02\u265A\u2656\x03\x02\x02\x02\u265B\u265C\x03\x02\x02\x02\u265C" +
		"\u265E\x05\u04D4\u026B\x02\u265D\u265F\x05\u04BC\u025F\x02\u265E\u265D" +
		"\x03\x02\x02\x02\u265E\u265F\x03\x02\x02\x02\u265F\u2661\x03\x02\x02\x02" +
		"\u2660\u2650\x03\x02\x02\x02\u2660\u2661\x03\x02\x02\x02\u2661\u04D3\x03" +
		"\x02\x02\x02\u2662\u2668\x05\u04D6\u026C\x02\u2663\u2664\x05\u052C\u0297" +
		"\x02\u2664\u2665\x05\u04D6\u026C\x02\u2665\u2667\x03\x02\x02\x02\u2666" +
		"\u2663\x03\x02\x02\x02\u2667\u266A\x03\x02\x02\x02\u2668\u2666\x03\x02" +
		"\x02\x02\u2668\u2669\x03\x02\x02\x02\u2669\u04D5\x03\x02\x02\x02\u266A" +
		"\u2668\x03\x02\x02\x02\u266B\u266D\x05\u052C\u0297\x02\u266C\u266B\x03" +
		"\x02\x02\x02\u266C\u266D\x03\x02\x02\x02\u266D\u266E\x03\x02\x02\x02\u266E" +
		"\u266F\x05\u04D8\u026D\x02\u266F\u04D7\x03\x02\x02\x02\u2670\u2675\x05" +
		"\u04DA\u026E\x02\u2671\u2672\t@\x02\x02\u2672\u2674\x05\u04DA\u026E\x02" +
		"\u2673\u2671\x03\x02\x02\x02\u2674\u2677\x03\x02\x02\x02\u2675\u2673\x03" +
		"\x02\x02\x02\u2675\u2676\x03\x02\x02\x02\u2676\u04D9\x03\x02\x02\x02\u2677" +
		"\u2675\x03\x02\x02\x02\u2678\u267D\x05\u04DC\u026F\x02\u2679\u267A\tA" +
		"\x02\x02\u267A\u267C\x05\u04DC\u026F\x02\u267B\u2679\x03\x02\x02\x02\u267C" +
		"\u267F\x03\x02\x02\x02\u267D\u267B\x03\x02\x02\x02\u267D\u267E\x03\x02" +
		"\x02\x02\u267E\u04DB\x03\x02\x02\x02\u267F\u267D\x03\x02\x02\x02\u2680" +
		"\u2683\x05\u04DE\u0270\x02\u2681\u2682\x07\x11\x02\x02\u2682\u2684\x05" +
		"\u04BE\u0260\x02\u2683\u2681\x03\x02\x02\x02\u2683\u2684\x03\x02\x02\x02" +
		"\u2684\u04DD\x03\x02\x02\x02\u2685\u2687\t@\x02\x02\u2686\u2685\x03\x02" +
		"\x02\x02\u2686\u2687\x03\x02\x02\x02\u2687\u2688\x03\x02\x02\x02\u2688" +
		"\u2689\x05\u04E0\u0271\x02\u2689\u04DF\x03\x02\x02\x02\u268A\u268F\x05" +
		"\u04E2\u0272\x02\u268B\u268C\x07\x90\x02\x02\u268C\u268D\x07\u01A4\x02" +
		"\x02\u268D\u268E\x07\u0184\x02\x02\u268E\u2690\x05\u04BE\u0260\x02\u268F" +
		"\u268B\x03\x02\x02\x02\u268F\u2690\x03\x02\x02\x02\u2690\u04E1\x03\x02" +
		"\x02\x02\u2691\u2694\x05\u04E4\u0273\x02\u2692\u2693\x07-\x02\x02\u2693" +
		"\u2695\x05\u0230\u0119\x02\u2694\u2692\x03\x02\x02\x02\u2694\u2695\x03" +
		"\x02\x02\x02\u2695\u04E3\x03\x02\x02\x02\u2696\u269B\x05\u04E8\u0275\x02" +
		"\u2697\u2698\x07\x1C\x02\x02\u2698\u269A\x05\u0492\u024A\x02\u2699\u2697" +
		"\x03\x02\x02\x02\u269A\u269D\x03\x02\x02\x02\u269B\u2699\x03\x02\x02\x02" +
		"\u269B\u269C\x03\x02\x02\x02\u269C\u04E5\x03\x02\x02\x02\u269D\u269B\x03" +
		"\x02\x02\x02\u269E\u269F\b\u0274\x01\x02\u269F\u26A6\x05\u04E8\u0275\x02" +
		"\u26A0\u26A1\t@\x02\x02\u26A1\u26A6\x05\u04E6\u0274\v\u26A2\u26A3\x05" +
		"\u052C\u0297\x02\u26A3\u26A4\x05\u04E6\u0274\x05\u26A4\u26A6\x03\x02\x02" +
		"\x02\u26A5\u269E\x03\x02\x02\x02\u26A5\u26A0\x03\x02\x02\x02\u26A5\u26A2" +
		"\x03\x02\x02\x02\u26A6\u26CE\x03\x02\x02\x02\u26A7\u26A8\f\n\x02\x02\u26A8" +
		"\u26A9\x07\x11\x02\x02\u26A9\u26CD\x05\u04E6\u0274\v\u26AA\u26AB\f\t\x02" +
		"\x02\u26AB\u26AC\tA\x02\x02\u26AC\u26CD\x05\u04E6\u0274\n\u26AD\u26AE" +
		"\f\b\x02\x02\u26AE\u26AF\t@\x02\x02\u26AF\u26CD\x05\u04E6\u0274\t\u26B0" +
		"\u26B1\f\x07\x02\x02\u26B1\u26B2\x05\u052C\u0297\x02\u26B2\u26B3\x05\u04E6" +
		"\u0274\b\u26B3\u26CD\x03\x02\x02\x02\u26B4\u26B5\f\x06\x02\x02\u26B5\u26B6" +
		"\t?\x02\x02\u26B6\u26CD\x05\u04E6\u0274\x07\u26B7\u26B8\f\f\x02\x02\u26B8" +
		"\u26B9\x07\x1C\x02\x02\u26B9\u26CD\x05\u0492\u024A\x02\u26BA\u26BB\f\x04" +
		"\x02\x02\u26BB\u26CD\x05\u052C\u0297\x02\u26BC\u26BD\f\x03\x02\x02\u26BD" +
		"\u26BF\x07v\x02\x02\u26BE\u26C0\x07O\x02\x02\u26BF\u26BE\x03\x02\x02\x02" +
		"\u26BF\u26C0\x03\x02\x02\x02\u26C0\u26CA\x03\x02\x02\x02\u26C1\u26C2\x07" +
		":\x02\x02\u26C2\u26C3\x07B\x02\x02\u26C3\u26CB\x05\u04E6\u0274\x02\u26C4" +
		"\u26C5\x07\u0115\x02\x02\u26C5\u26C6\x07\x04\x02\x02\u26C6\u26C7\x05\u0540" +
		"\u02A1\x02\u26C7\u26C8\x07\x05\x02\x02\u26C8\u26CB\x03\x02\x02\x02\u26C9" +
		"\u26CB\x07\xBE\x02\x02\u26CA\u26C1\x03\x02\x02\x02\u26CA\u26C4\x03\x02" +
		"\x02\x02\u26CA\u26C9\x03\x02\x02\x02\u26CB\u26CD\x03\x02\x02\x02\u26CC" +
		"\u26A7\x03\x02\x02\x02\u26CC\u26AA\x03\x02\x02\x02\u26CC\u26AD\x03\x02" +
		"\x02\x02\u26CC\u26B0\x03\x02\x02\x02\u26CC\u26B4\x03\x02\x02\x02\u26CC" +
		"\u26B7\x03\x02\x02\x02\u26CC\u26BA\x03\x02\x02\x02\u26CC\u26BC\x03\x02" +
		"\x02\x02\u26CD\u26D0\x03\x02\x02\x02\u26CE\u26CC\x03\x02\x02\x02\u26CE" +
		"\u26CF\x03\x02\x02\x02\u26CF\u04E7\x03\x02\x02\x02\u26D0\u26CE\x03\x02" +
		"\x02\x02\u26D1\u26D2\x07\u018E\x02\x02\u26D2\u26F6\x05\u03EE\u01F8\x02" +
		"\u26D3\u26D6\x07%\x02\x02\u26D4\u26D7\x05\u03EE\u01F8\x02\u26D5\u26D7" +
		"\x05\u0542\u02A2\x02\u26D6\u26D4\x03\x02\x02\x02\u26D6\u26D5\x03\x02\x02" +
		"\x02\u26D7\u26F6\x03\x02\x02\x02\u26D8\u26D9\x07\x1E\x02\x02\u26D9\u26F6" +
		"\x05\u0568\u02B5\x02\u26DA\u26DB\x07\u01D8\x02\x02\u26DB\u26DC\x07\x04" +
		"\x02\x02\u26DC\u26DD\x05\u0532\u029A\x02\u26DD\u26DE\x07\x05\x02\x02\u26DE" +
		"\u26F6\x03\x02\x02\x02\u26DF\u26E0\x07d\x02\x02\u26E0\u26F6\x05\u03EE" +
		"\u01F8\x02\u26E1\u26F6\x05\u0560\u02B1\x02\u26E2\u26F6\x05\u05AA\u02D6" +
		"\x02\u26E3\u26F6\x05\u04EA\u0276\x02\u26E4\u26E5\x07\x04\x02\x02\u26E5" +
		"\u26E6\x05\u04BE\u0260\x02\u26E6\u26E7\x07\x05\x02\x02\u26E7\u26E8\x05" +
		"\u0568\u02B5\x02\u26E8\u26F6\x03\x02\x02\x02\u26E9\u26F6\x05\u0556\u02AC" +
		"\x02\u26EA\u26F6\x05\u04EE\u0278\x02\u26EB\u26ED\x05\u03EE\u01F8\x02\u26EC" +
		"\u26EE\x05\u0566\u02B4\x02\u26ED\u26EC\x03\x02\x02\x02\u26ED\u26EE\x03" +
		"\x02\x02\x02\u26EE\u26F6\x03\x02\x02\x02\u26EF\u26F6\x05\u0522\u0292\x02" +
		"\u26F0\u26F6\x05\u0524\u0293\x02\u26F1\u26F2\x05\u0520\u0291\x02\u26F2" +
		"\u26F3\x07\x7F\x02\x02\u26F3\u26F4\x05\u0520\u0291\x02\u26F4\u26F6\x03" +
		"\x02\x02\x02\u26F5\u26D1\x03\x02\x02\x02\u26F5\u26D3\x03\x02\x02\x02\u26F5" +
		"\u26D8\x03\x02\x02\x02\u26F5\u26DA\x03\x02\x02\x02\u26F5\u26DF\x03\x02" +
		"\x02\x02\u26F5\u26E1\x03\x02\x02\x02\u26F5\u26E2\x03\x02\x02\x02\u26F5" +
		"\u26E3\x03\x02\x02\x02\u26F5\u26E4\x03\x02\x02\x02\u26F5\u26E9\x03\x02" +
		"\x02\x02\u26F5\u26EA\x03\x02\x02\x02\u26F5\u26EB\x03\x02\x02\x02\u26F5" +
		"\u26EF\x03\x02\x02\x02\u26F5\u26F0\x03\x02\x02\x02\u26F5\u26F1\x03\x02" +
		"\x02\x02\u26F6\u04E9\x03\x02\x02\x02\u26F7\u26F8\x07\u0240\x02\x02\u26F8" +
		"\u04EB\x03\x02\x02\x02\u26F9\u2713\x05\u05A6\u02D4\x02\u26FA\u2710\x07" +
		"\x04\x02\x02\u26FB\u26FF\x05\u053C\u029F\x02\u26FC\u26FD\x07\b\x02\x02" +
		"\u26FD\u26FE\x07g\x02\x02\u26FE\u2700\x05\u053E\u02A0\x02\u26FF\u26FC" +
		"\x03\x02\x02\x02\u26FF\u2700\x03\x02\x02\x02\u2700\u2702\x03\x02\x02\x02" +
		"\u2701\u2703\x05\u0416\u020C\x02\u2702\u2701\x03\x02\x02\x02\u2702\u2703" +
		"\x03\x02\x02\x02\u2703\u2711\x03\x02\x02\x02\u2704\u2705\x07g\x02\x02" +
		"\u2705\u2707\x05\u053E\u02A0\x02\u2706\u2708\x05\u0416\u020C\x02\u2707" +
		"\u2706\x03\x02\x02\x02\u2707\u2708\x03\x02\x02\x02\u2708\u2711\x03\x02" +
		"\x02\x02\u2709\u270A\t5\x02\x02\u270A\u270C\x05\u053C\u029F\x02\u270B" +
		"\u270D\x05\u0416\u020C\x02\u270C\u270B\x03\x02\x02\x02\u270C\u270D\x03" +
		"\x02\x02\x02\u270D\u2711\x03\x02\x02\x02\u270E\u2711\x07\v\x02\x02\u270F" +
		"\u2711\x03\x02\x02\x02\u2710\u26FB\x03\x02\x02\x02\u2710\u2704\x03\x02" +
		"\x02\x02\u2710\u2709\x03\x02\x02\x02\u2710\u270E\x03\x02\x02\x02\u2710" +
		"\u270F\x03\x02\x02\x02\u2711\u2712\x03\x02\x02\x02\u2712\u2714\x07\x05" +
		"\x02\x02\u2713\u26FA\x03\x02\x02\x02\u2713\u2714\x03\x02\x02\x02\u2714" +
		"\u04ED\x03\x02\x02\x02\u2715\u2717\x05\u04EC\u0277\x02\u2716\u2718\x05" +
		"\u0506\u0284\x02\u2717\u2716\x03\x02\x02\x02\u2717\u2718\x03\x02\x02\x02" +
		"\u2718\u271A\x03\x02\x02\x02\u2719\u271B\x05\u0508\u0285\x02\u271A\u2719" +
		"\x03\x02\x02\x02\u271A\u271B\x03\x02\x02\x02\u271B\u271D\x03\x02\x02\x02" +
		"\u271C\u271E\x05\u0510\u0289\x02\u271D\u271C\x03\x02\x02\x02\u271D\u271E" +
		"\x03\x02\x02\x02\u271E\u2721\x03\x02\x02\x02\u271F\u2721\x05\u04F2\u027A" +
		"\x02\u2720\u2715\x03\x02\x02\x02\u2720\u271F\x03\x02\x02\x02\u2721\u04EF" +
		"\x03\x02\x02\x02\u2722\u2725\x05\u04EC\u0277\x02\u2723\u2725\x05\u04F2" +
		"\u027A\x02\u2724\u2722\x03\x02\x02\x02\u2724\u2723\x03\x02\x02\x02\u2725" +
		"\u04F1\x03\x02\x02\x02\u2726\u2727\x07n\x02\x02\u2727\u2728\x07@\x02\x02" +
		"\u2728\u2729\x07\x04\x02\x02\u2729\u272A\x05\u04BE\u0260\x02\u272A\u272B" +
		"\x07\x05\x02\x02\u272B\u27DF\x03\x02\x02\x02\u272C\u27DF\x072\x02\x02" +
		"\u272D\u2732\x074\x02\x02\u272E\u272F\x07\x04\x02\x02\u272F\u2730\x05" +
		"\u05B2\u02DA\x02\u2730\u2731\x07\x05\x02\x02\u2731\u2733\x03\x02\x02\x02" +
		"\u2732\u272E\x03\x02\x02\x02\u2732\u2733\x03\x02\x02\x02\u2733\u27DF\x03" +
		"\x02\x02\x02\u2734\u2739\x075\x02\x02\u2735\u2736\x07\x04\x02\x02\u2736" +
		"\u2737\x05\u05B2\u02DA\x02\u2737\u2738\x07\x05\x02\x02\u2738\u273A\x03" +
		"\x02\x02\x02\u2739\u2735\x03\x02\x02\x02\u2739\u273A\x03\x02\x02\x02\u273A" +
		"\u27DF\x03\x02\x02\x02\u273B\u2740\x07M\x02\x02\u273C\u273D\x07\x04\x02" +
		"\x02\u273D\u273E\x05\u05B2\u02DA\x02\u273E\u273F\x07\x05\x02\x02\u273F" +
		"\u2741\x03\x02\x02\x02\u2740\u273C\x03\x02\x02\x02\u2740\u2741\x03\x02" +
		"\x02\x02\u2741\u27DF\x03\x02\x02\x02\u2742\u2747\x07N\x02\x02\u2743\u2744" +
		"\x07\x04\x02\x02\u2744\u2745\x05\u05B2\u02DA\x02\u2745\u2746\x07\x05\x02" +
		"\x02\u2746\u2748\x03\x02\x02\x02\u2747\u2743\x03\x02\x02\x02\u2747\u2748" +
		"\x03\x02\x02\x02\u2748\u27DF\x03\x02\x02\x02\u2749\u27DF\x073\x02\x02" +
		"\u274A\u27DF\x076\x02\x02\u274B\u27DF\x07[\x02\x02\u274C\u27DF\x07e\x02" +
		"\x02\u274D\u27DF\x071\x02\x02\u274E\u27DF\x07q\x02\x02\u274F\u2750\x07" +
		"+\x02\x02\u2750\u2751\x07\x04\x02\x02\u2751\u2752\x05\u04BE\u0260\x02" +
		"\u2752\u2753\x07&\x02\x02\u2753\u2754\x05\u0492\u024A\x02\u2754\u2755" +
		"\x07\x05\x02\x02\u2755\u27DF\x03\x02\x02\x02\u2756\u2757\x07\u018F\x02" +
		"\x02\u2757\u2759\x07\x04\x02\x02\u2758\u275A\x05\u0546\u02A4\x02\u2759" +
		"\u2758\x03\x02\x02\x02\u2759\u275A\x03\x02\x02\x02\u275A\u275B\x03\x02" +
		"\x02\x02\u275B\u27DF\x07\x05\x02\x02\u275C\u275D\x07\u01EB\x02\x02\u275D" +
		"\u275E\x07\x04\x02\x02\u275E\u2761\x05\u04BE\u0260\x02\u275F\u2760\x07" +
		"\b\x02\x02\u2760\u2762\x05\u054A\u02A6\x02\u2761\u275F\x03\x02\x02\x02" +
		"\u2761\u2762\x03\x02\x02\x02\u2762\u2763\x03\x02\x02\x02\u2763\u2764\x07" +
		"\x05\x02\x02\u2764\u27DF\x03\x02\x02\x02\u2765\u2766\x07\u019C\x02\x02" +
		"\u2766\u2767\x07\x04\x02\x02\u2767\u2768\x05\u054C\u02A7\x02\u2768\u2769" +
		"\x07\x05\x02\x02\u2769\u27DF\x03\x02\x02\x02\u276A\u276B\x07\u019D\x02" +
		"\x02\u276B\u276D\x07\x04\x02\x02\u276C\u276E\x05\u054E\u02A8\x02\u276D" +
		"\u276C\x03\x02\x02\x02\u276D\u276E\x03\x02\x02\x02\u276E\u276F\x03\x02" +
		"\x02\x02\u276F\u27DF\x07\x05\x02\x02\u2770\u2771\x07\u01A3\x02\x02\u2771" +
		"\u2773\x07\x04\x02\x02\u2772\u2774\x05\u0550\u02A9\x02\u2773\u2772\x03" +
		"\x02\x02\x02\u2773\u2774\x03\x02\x02\x02\u2774\u2775\x03\x02\x02\x02\u2775" +
		"\u27DF\x07\x05\x02\x02\u2776\u2777\x07\u01A6\x02\x02\u2777\u2778\x07\x04" +
		"\x02\x02\u2778\u2779\x05\u04BE\u0260\x02\u2779\u277A\x07&\x02\x02\u277A" +
		"\u277B\x05\u0492\u024A\x02\u277B\u277C\x07\x05\x02\x02\u277C\u27DF\x03" +
		"\x02\x02\x02\u277D\u277E\x07\u01A7\x02\x02\u277E\u2780\x07\x04\x02\x02" +
		"\u277F\u2781\tB\x02\x02\u2780\u277F\x03\x02\x02\x02\u2780\u2781\x03\x02" +
		"\x02\x02\u2781\u2782\x03\x02\x02\x02\u2782\u2783\x05\u0552\u02AA\x02\u2783" +
		"\u2784\x07\x05\x02\x02\u2784\u27DF\x03\x02\x02\x02\u2785\u2786\x07\u019A" +
		"\x02\x02\u2786\u2787\x07\x04\x02\x02\u2787\u2788\x05\u04BE\u0260\x02\u2788" +
		"\u2789\x07\b\x02\x02\u2789\u278A\x05\u04BE\u0260\x02\u278A\u278B\x07\x05" +
		"\x02\x02\u278B\u27DF\x03\x02\x02\x02\u278C\u278D\x07\u018B\x02\x02\u278D" +
		"\u278E\x07\x04\x02\x02\u278E\u278F\x05\u0532\u029A\x02\u278F\u2790\x07" +
		"\x05\x02\x02\u2790\u27DF\x03\x02\x02\x02\u2791\u2792\x07\u0191\x02\x02" +
		"\u2792\u2793\x07\x04\x02\x02\u2793\u2794\x05\u0532\u029A\x02\u2794\u2795" +
		"\x07\x05\x02\x02\u2795\u27DF\x03\x02\x02\x02\u2796\u2797\x07\u0196\x02" +
		"\x02\u2797\u2798\x07\x04\x02\x02\u2798\u2799\x05\u0532\u029A\x02\u2799" +
		"\u279A\x07\x05\x02\x02\u279A\u27DF\x03\x02\x02\x02\u279B\u279C\x07\u01AB" +
		"\x02\x02\u279C\u279D\x07\x04\x02\x02\u279D\u279E\x05\u0532\u029A\x02\u279E" +
		"\u279F\x07\x05\x02\x02\u279F\u27DF\x03\x02\x02\x02\u27A0\u27A1\x07\u01AC" +
		"\x02\x02\u27A1\u27A2\x07\x04\x02\x02\u27A2\u27A3\x07\u010C\x02\x02\u27A3" +
		"\u27A9\x05\u05D4\u02EB\x02\u27A4\u27A7\x07\b\x02\x02\u27A5\u27A8\x05\u04F8" +
		"\u027D\x02\u27A6\u27A8\x05\u0532\u029A\x02\u27A7\u27A5\x03\x02\x02\x02" +
		"\u27A7\u27A6\x03\x02\x02\x02\u27A8\u27AA\x03\x02\x02\x02\u27A9\u27A4\x03" +
		"\x02\x02\x02\u27A9\u27AA\x03\x02\x02\x02\u27AA\u27AB\x03\x02\x02\x02\u27AB" +
		"\u27AC\x07\x05\x02\x02\u27AC\u27DF\x03\x02\x02\x02\u27AD\u27AE\x07\u01AD" +
		"\x02\x02\u27AE\u27AF\x07\x04\x02\x02\u27AF\u27B0\x05\u04E8\u0275\x02\u27B0" +
		"\u27B1\x05\u0502\u0282\x02\u27B1\u27B2\x07\x05\x02\x02\u27B2\u27DF\x03" +
		"\x02\x02\x02\u27B3\u27B4\x07\u01AE\x02\x02\u27B4\u27B5\x07\x04\x02\x02" +
		"\u27B5\u27B6\x05\u04FA\u027E\x02\u27B6\u27B7\x07\x05\x02\x02\u27B7\u27DF" +
		"\x03\x02\x02\x02\u27B8\u27B9\x07\u01AF\x02\x02\u27B9\u27BA\x07\x04\x02" +
		"\x02\u27BA\u27BB\x05\u04FE\u0280\x02\u27BB\u27BD\x05\u04BE\u0260\x02\u27BC" +
		"\u27BE\x05\u0500\u0281\x02\u27BD\u27BC\x03\x02\x02\x02\u27BD\u27BE\x03" +
		"\x02\x02\x02\u27BE\u27BF\x03\x02\x02\x02\u27BF\u27C0\x07\x05\x02\x02\u27C0" +
		"\u27DF\x03\x02\x02\x02\u27C1\u27C2\x07\u01B0\x02\x02\u27C2\u27C3\x07\x04" +
		"\x02\x02\u27C3\u27C4\x07\u010C\x02\x02\u27C4\u27C7\x05\u05D4\u02EB\x02" +
		"\u27C5\u27C6\x07\b\x02\x02\u27C6\u27C8\x05\u04BE\u0260\x02\u27C7\u27C5" +
		"\x03\x02\x02\x02\u27C7\u27C8\x03\x02\x02\x02\u27C8\u27C9\x03\x02\x02\x02" +
		"\u27C9\u27CA\x07\x05\x02\x02\u27CA\u27DF\x03\x02\x02\x02\u27CB\u27CC\x07" +
		"\u01B1\x02\x02\u27CC\u27CD\x07\x04\x02\x02\u27CD\u27CE\x07\u0181\x02\x02" +
		"\u27CE\u27CF\x05\u04BE\u0260\x02\u27CF\u27D0\x07\b\x02\x02\u27D0\u27D2" +
		"\x05\u04F4\u027B\x02\u27D1\u27D3\x05\u04F6\u027C\x02\u27D2\u27D1\x03\x02" +
		"\x02\x02\u27D2\u27D3\x03\x02\x02\x02\u27D3\u27D4\x03\x02\x02\x02\u27D4" +
		"\u27D5\x07\x05\x02\x02\u27D5\u27DF\x03\x02\x02\x02\u27D6\u27D7\x07\u01B2" +
		"\x02\x02\u27D7\u27D8\x07\x04\x02\x02\u27D8\u27D9\x05\u04FE\u0280\x02\u27D9" +
		"\u27DA\x05\u04BE\u0260\x02\u27DA\u27DB\x07&\x02\x02\u27DB\u27DC\x05\u0496" +
		"\u024C\x02\u27DC\u27DD\x07\x05\x02\x02\u27DD\u27DF\x03\x02\x02\x02\u27DE" +
		"\u2726\x03\x02\x02\x02\u27DE\u272C\x03\x02\x02\x02\u27DE\u272D\x03\x02" +
		"\x02\x02\u27DE\u2734\x03\x02\x02\x02\u27DE\u273B\x03\x02\x02\x02\u27DE" +
		"\u2742\x03\x02\x02\x02\u27DE\u2749\x03\x02\x02\x02\u27DE\u274A\x03\x02" +
		"\x02\x02\u27DE\u274B\x03\x02\x02\x02\u27DE\u274C\x03\x02\x02\x02\u27DE" +
		"\u274D\x03\x02\x02\x02\u27DE\u274E\x03\x02\x02\x02\u27DE\u274F\x03\x02" +
		"\x02\x02\u27DE\u2756\x03\x02\x02\x02\u27DE\u275C\x03\x02\x02\x02\u27DE" +
		"\u2765\x03\x02\x02\x02\u27DE\u276A\x03\x02\x02\x02\u27DE\u2770\x03\x02" +
		"\x02\x02\u27DE\u2776\x03\x02\x02\x02\u27DE\u277D\x03\x02\x02\x02\u27DE" +
		"\u2785\x03\x02\x02\x02\u27DE\u278C\x03\x02\x02\x02\u27DE\u2791\x03\x02" +
		"\x02\x02\u27DE\u2796\x03\x02\x02\x02\u27DE\u279B\x03\x02\x02\x02\u27DE" +
		"\u27A0\x03\x02\x02\x02\u27DE\u27AD\x03\x02\x02\x02\u27DE\u27B3\x03\x02" +
		"\x02\x02\u27DE\u27B8\x03\x02\x02\x02\u27DE\u27C1\x03\x02\x02\x02\u27DE" +
		"\u27CB\x03\x02\x02\x02\u27DE\u27D6\x03\x02\x02\x02\u27DF\u04F3\x03\x02" +
		"\x02\x02\u27E0\u27E1\x07\u0179\x02\x02\u27E1\u27E6\x05\u04BE\u0260\x02" +
		"\u27E2\u27E3\x07\u0179\x02\x02\u27E3\u27E4\x07\u010F\x02\x02\u27E4\u27E6" +
		"\x07\u01C4\x02\x02\u27E5\u27E0\x03\x02\x02\x02\u27E5\u27E2\x03\x02\x02" +
		"\x02\u27E6\u04F5\x03\x02\x02\x02\u27E7\u27E8\x07\b\x02\x02\u27E8\u27E9" +
		"\x07\u0155\x02\x02\u27E9\u27F2\x07\u0183\x02\x02\u27EA\u27EB\x07\b\x02" +
		"\x02\u27EB\u27EC\x07\u0155\x02\x02\u27EC\u27F2\x07\u010F\x02\x02\u27ED" +
		"\u27EE\x07\b\x02\x02\u27EE\u27EF\x07\u0155\x02\x02\u27EF\u27F0\x07\u010F" +
		"\x02\x02\u27F0\u27F2\x07\u01C4\x02\x02\u27F1\u27E7\x03\x02\x02\x02\u27F1" +
		"\u27EA\x03\x02\x02\x02\u27F1\u27ED\x03\x02\x02\x02\u27F2\u04F7\x03\x02" +
		"\x02\x02\u27F3\u27F4\x07\u01AA\x02\x02\u27F4\u27F5\x07\x04\x02\x02\u27F5" +
		"\u27F6\x05\u04FA\u027E\x02\u27F6\u27F7\x07\x05\x02\x02\u27F7\u04F9\x03" +
		"\x02\x02\x02\u27F8\u27FD\x05\u04FC\u027F\x02\u27F9\u27FA\x07\b\x02\x02" +
		"\u27FA\u27FC\x05\u04FC\u027F\x02\u27FB\u27F9\x03\x02\x02\x02\u27FC\u27FF" +
		"\x03\x02\x02\x02\u27FD\u27FB\x03\x02\x02\x02\u27FD\u27FE\x03\x02\x02\x02" +
		"\u27FE\u04FB\x03\x02\x02\x02\u27FF\u27FD\x03\x02\x02\x02\u2800\u2803\x05" +
		"\u04BE\u0260\x02\u2801\u2802\x07&\x02\x02\u2802\u2804\x05\u05D4\u02EB" +
		"\x02\u2803\u2801\x03\x02\x02\x02\u2803\u2804\x03\x02\x02\x02\u2804\u04FD" +
		"\x03\x02\x02\x02\u2805\u2806\tC\x02\x02\u2806\u04FF\x03\x02\x02\x02\u2807" +
		"\u2808\x07\u0126\x02\x02\u2808\u280C\x07\u017C\x02\x02\u2809\u280A\x07" +
		"\u015D\x02\x02\u280A\u280C\x07\u017C\x02\x02\u280B\u2807\x03\x02\x02\x02" +
		"\u280B\u2809\x03\x02\x02\x02\u280C\u0501\x03\x02\x02\x02\u280D\u280E\x07" +
		"\u0120\x02\x02\u280E\u281D";
	private static readonly _serializedATNSegment19: string =
		"\x05\u04E8\u0275\x02\u280F\u2810\x07\u0120\x02\x02\u2810\u2811\x05\u04E8" +
		"\u0275\x02\u2811\u2812\x05\u0504\u0283\x02\u2812\u281D\x03\x02\x02\x02" +
		"\u2813\u2814\x07\u0120\x02\x02\u2814\u2815\x05\u0504\u0283\x02\u2815\u2816" +
		"\x05\u04E8\u0275\x02\u2816\u281D\x03\x02\x02\x02\u2817\u2818\x07\u0120" +
		"\x02\x02\u2818\u2819\x05\u0504\u0283\x02\u2819\u281A\x05\u04E8\u0275\x02" +
		"\u281A\u281B\x05\u0504\u0283\x02\u281B\u281D\x03\x02\x02\x02\u281C\u280D" +
		"\x03\x02\x02\x02\u281C\u280F\x03\x02\x02\x02\u281C\u2813\x03\x02\x02\x02" +
		"\u281C\u2817\x03\x02\x02\x02\u281D\u0503\x03\x02\x02\x02\u281E\u281F\x07" +
		"\x95\x02\x02\u281F\u2820\tD\x02\x02\u2820\u0505\x03\x02\x02\x02\u2821" +
		"\u2822\x07\u01E1\x02\x02\u2822\u2823\x07D\x02\x02\u2823\u2824\x07\x04" +
		"\x02\x02\u2824\u2825\x05\u0418\u020D\x02\u2825\u2826\x07\x05\x02\x02\u2826" +
		"\u0507\x03\x02\x02\x02\u2827\u2828\x07\u01E2\x02\x02\u2828\u2829\x07\x04" +
		"\x02\x02\u2829\u282A\x07i\x02\x02\u282A\u282B\x05\u04BE\u0260\x02\u282B" +
		"\u282C\x07\x05\x02\x02\u282C\u0509\x03\x02\x02\x02\u282D\u282E\x07j\x02" +
		"\x02\u282E\u282F\x05\u050C\u0287\x02\u282F\u050B\x03\x02\x02\x02\u2830" +
		"\u2835\x05\u050E\u0288\x02\u2831\u2832\x07\b\x02\x02\u2832\u2834\x05\u050E" +
		"\u0288\x02\u2833\u2831\x03\x02\x02\x02\u2834\u2837\x03\x02\x02\x02\u2835" +
		"\u2833\x03\x02\x02\x02\u2835\u2836\x03\x02\x02\x02\u2836\u050D\x03\x02" +
		"\x02\x02\u2837\u2835\x03\x02\x02\x02\u2838\u2839\x05\u05C4\u02E3\x02\u2839" +
		"\u283A\x07&\x02\x02\u283A\u283B\x05\u0512\u028A\x02\u283B\u050F\x03\x02" +
		"\x02\x02\u283C\u283F\x07~\x02\x02\u283D\u2840\x05\u0512\u028A\x02\u283E" +
		"\u2840\x05\u05C4\u02E3\x02\u283F\u283D\x03\x02\x02\x02\u283F\u283E\x03" +
		"\x02\x02\x02\u2840\u0511\x03\x02\x02\x02\u2841\u2843\x07\x04\x02\x02\u2842" +
		"\u2844\x05\u0514\u028B\x02\u2843\u2842\x03\x02\x02\x02\u2843\u2844\x03" +
		"\x02\x02\x02\u2844\u2846\x03\x02\x02\x02\u2845\u2847\x05\u0516\u028C\x02" +
		"\u2846\u2845\x03\x02\x02\x02\u2846\u2847\x03\x02\x02\x02\u2847\u2849\x03" +
		"\x02\x02\x02\u2848\u284A\x05\u0416\u020C\x02\u2849\u2848\x03\x02\x02\x02" +
		"\u2849\u284A\x03\x02\x02\x02\u284A\u284C\x03\x02\x02\x02\u284B\u284D\x05" +
		"\u0518\u028D\x02\u284C\u284B\x03\x02\x02\x02\u284C\u284D\x03\x02\x02\x02" +
		"\u284D\u284E\x03\x02\x02\x02\u284E\u284F\x07\x05\x02\x02\u284F\u0513\x03" +
		"\x02\x02\x02\u2850\u2851\x05\u05C4\u02E3\x02\u2851\u0515\x03\x02\x02\x02" +
		"\u2852\u2853\x07\u011F\x02\x02\u2853\u2854\x07\x95\x02\x02\u2854\u2855" +
		"\x05\u0532\u029A\x02\u2855\u0517\x03\x02\x02\x02\u2856\u2857\x07\u012D" +
		"\x02\x02\u2857\u2859\x05\u051A\u028E\x02\u2858\u285A\x05\u051E\u0290\x02" +
		"\u2859\u2858\x03\x02\x02\x02\u2859\u285A\x03\x02\x02\x02\u285A\u2866\x03" +
		"\x02\x02\x02\u285B\u285C\x07\u0142\x02\x02\u285C\u285E\x05\u051A\u028E" +
		"\x02\u285D\u285F\x05\u051E\u0290\x02\u285E\u285D\x03\x02\x02\x02\u285E" +
		"\u285F\x03\x02\x02\x02\u285F\u2866\x03\x02\x02\x02\u2860\u2861\x07\u01E3" +
		"\x02\x02\u2861\u2863\x05\u051A\u028E\x02\u2862\u2864\x05\u051E\u0290\x02" +
		"\u2863\u2862\x03\x02\x02\x02\u2863\u2864\x03\x02\x02\x02\u2864\u2866\x03" +
		"\x02\x02\x02\u2865\u2856\x03\x02\x02\x02\u2865\u285B\x03\x02\x02\x02\u2865" +
		"\u2860\x03\x02\x02\x02\u2866\u0519\x03\x02\x02\x02\u2867\u286E\x05\u051C" +
		"\u028F\x02\u2868\u2869\x07\u0185\x02\x02\u2869\u286A\x05\u051C\u028F\x02" +
		"\u286A\u286B\x07#\x02\x02\u286B\u286C\x05\u051C\u028F\x02\u286C\u286E" +
		"\x03\x02\x02\x02\u286D\u2867\x03\x02\x02\x02\u286D\u2868\x03\x02\x02\x02" +
		"\u286E\u051B\x03\x02\x02\x02\u286F\u2870\x07\u016C\x02\x02\u2870\u2877" +
		"\tE\x02\x02\u2871\u2872\x07\u01B4\x02\x02\u2872\u2877\x07\u01A0\x02\x02" +
		"\u2873\u2874\x05\u04BE\u0260\x02\u2874\u2875\tE\x02\x02\u2875\u2877\x03" +
		"\x02\x02\x02\u2876\u286F\x03\x02\x02\x02\u2876\u2871\x03\x02\x02\x02\u2876" +
		"\u2873\x03\x02\x02\x02\u2877\u051D\x03\x02\x02\x02\u2878\u287F\x07\xC9" +
		"\x02\x02\u2879\u287A\x07\u01B4\x02\x02\u287A\u2880\x07\u01A0\x02\x02\u287B" +
		"\u2880\x07D\x02\x02\u287C\u2880\x07\u01D5\x02\x02\u287D\u287E\x07\u010F" +
		"\x02\x02\u287E\u2880\x07\u01E4\x02\x02\u287F\u2879\x03\x02\x02\x02\u287F" +
		"\u287B\x03\x02\x02\x02\u287F\u287C\x03\x02\x02\x02\u287F\u287D\x03\x02" +
		"\x02\x02\u2880\u051F\x03\x02\x02\x02\u2881\u2882\x07\u01A0\x02\x02\u2882" +
		"\u2884\x07\x04\x02\x02\u2883\u2885\x05\u0532\u029A\x02\u2884\u2883\x03" +
		"\x02\x02\x02\u2884\u2885\x03\x02\x02\x02\u2885\u2886\x03\x02\x02\x02\u2886" +
		"\u288E\x07\x05\x02\x02\u2887\u2888\x07\x04\x02\x02\u2888\u2889\x05\u0532" +
		"\u029A\x02\u2889\u288A\x07\b\x02\x02\u288A\u288B\x05\u04BE\u0260\x02\u288B" +
		"\u288C\x07\x05\x02\x02\u288C\u288E\x03\x02\x02\x02\u288D\u2881\x03\x02" +
		"\x02\x02\u288D\u2887\x03\x02\x02\x02\u288E\u0521\x03\x02\x02\x02\u288F" +
		"\u2890\x07\u01A0\x02\x02\u2890\u2892\x07\x04\x02\x02\u2891\u2893\x05\u0532" +
		"\u029A\x02\u2892\u2891\x03\x02\x02\x02\u2892\u2893\x03\x02\x02\x02\u2893" +
		"\u2894\x03\x02\x02\x02\u2894\u2895\x07\x05\x02\x02\u2895\u0523\x03\x02" +
		"\x02\x02\u2896\u2897\x07\x04\x02\x02\u2897\u2898\x05\u0532\u029A\x02\u2898" +
		"\u2899\x07\b\x02\x02\u2899\u289A\x05\u04BE\u0260\x02\u289A\u289B\x07\x05" +
		"\x02\x02\u289B\u0525\x03\x02\x02\x02\u289C\u289D\tF\x02\x02\u289D\u0527" +
		"\x03\x02\x02\x02\u289E\u28A1\x07\x1F\x02\x02\u289F\u28A1\x05\u052A\u0296" +
		"\x02\u28A0\u289E\x03\x02\x02\x02\u28A0\u289F\x03\x02\x02\x02\u28A1\u0529" +
		"\x03\x02\x02\x02\u28A2\u28A3\tG\x02\x02\u28A3\u052B\x03\x02\x02\x02\u28A4" +
		"\u28AB\x07\x1F\x02\x02\u28A5\u28A6\x07\u0118\x02\x02\u28A6\u28A7\x07\x04" +
		"\x02\x02\u28A7\u28A8\x05\u02DE\u0170\x02\u28A8\u28A9\x07\x05\x02\x02\u28A9" +
		"\u28AB\x03\x02\x02\x02\u28AA\u28A4\x03\x02\x02\x02\u28AA\u28A5\x03\x02" +
		"\x02\x02\u28AB\u052D\x03\x02\x02\x02\u28AC\u28B3\x05\u0528\u0295\x02\u28AD" +
		"\u28AE\x07\u0118\x02\x02\u28AE\u28AF\x07\x04\x02\x02\u28AF\u28B0\x05\u02DE" +
		"\u0170\x02\u28B0\u28B1\x07\x05\x02\x02\u28B1\u28B3\x03\x02\x02\x02\u28B2" +
		"\u28AC\x03\x02\x02\x02\u28B2\u28AD\x03\x02\x02\x02\u28B3\u052F\x03\x02" +
		"\x02\x02\u28B4\u28C1\x05\u0528\u0295\x02\u28B5\u28B6\x07\u0118\x02\x02" +
		"\u28B6\u28B7\x07\x04\x02\x02\u28B7\u28B8\x05\u02DE\u0170\x02\u28B8\u28B9" +
		"\x07\x05\x02\x02\u28B9\u28C1\x03\x02\x02\x02\u28BA\u28C1\x07z\x02\x02" +
		"\u28BB\u28BC\x07O\x02\x02\u28BC\u28C1\x07z\x02\x02\u28BD\u28C1\x07t\x02" +
		"\x02\u28BE\u28BF\x07O\x02\x02\u28BF\u28C1\x07t\x02\x02\u28C0\u28B4\x03" +
		"\x02\x02\x02\u28C0\u28B5\x03\x02\x02\x02\u28C0\u28BA\x03\x02\x02\x02\u28C0" +
		"\u28BB\x03\x02\x02\x02\u28C0\u28BD\x03\x02\x02\x02\u28C0\u28BE\x03\x02" +
		"\x02\x02\u28C1\u0531\x03\x02\x02\x02\u28C2\u28C7\x05\u04BE\u0260\x02\u28C3" +
		"\u28C4\x07\b\x02\x02\u28C4\u28C6\x05\u04BE\u0260\x02\u28C5\u28C3\x03\x02" +
		"\x02\x02\u28C6\u28C9\x03\x02\x02\x02\u28C7\u28C5\x03\x02\x02\x02\u28C7" +
		"\u28C8\x03\x02\x02\x02\u28C8\u0533\x03\x02\x02\x02\u28C9\u28C7\x03\x02" +
		"\x02\x02\u28CA\u28CF\x05\u053A\u029E\x02\u28CB\u28CC\x07\b\x02\x02\u28CC" +
		"\u28CE\x05\u053A\u029E\x02\u28CD\u28CB\x03\x02\x02\x02\u28CE\u28D1\x03" +
		"\x02\x02\x02\u28CF\u28CD\x03\x02\x02\x02\u28CF\u28D0\x03\x02\x02\x02\u28D0" +
		"\u0535\x03\x02\x02\x02\u28D1\u28CF\x03\x02\x02\x02\u28D2\u28D7\x05\u0538" +
		"\u029D\x02\u28D3\u28D4\x07\b\x02\x02\u28D4\u28D6\x05\u0538\u029D\x02\u28D5" +
		"\u28D3\x03\x02\x02\x02\u28D6\u28D9\x03\x02\x02\x02\u28D7\u28D5\x03\x02" +
		"\x02\x02\u28D7\u28D8\x03\x02\x02\x02\u28D8\u0537\x03\x02\x02\x02\u28D9" +
		"\u28D7\x03\x02\x02\x02\u28DA\u28E0\x05\u059A\u02CE\x02\u28DB\u28DC\x07" +
		"\x04\x02\x02\u28DC\u28DD\x05\u04BE\u0260\x02\u28DD\u28DE\x07\x05\x02\x02" +
		"\u28DE\u28E0\x03\x02\x02\x02\u28DF\u28DA\x03\x02\x02\x02\u28DF\u28DB\x03" +
		"\x02\x02\x02\u28E0\u0539\x03\x02\x02\x02\u28E1\u28E4\x05\u059A\u02CE\x02" +
		"\u28E2\u28E4\x05\u04BE\u0260\x02\u28E3\u28E1\x03\x02\x02\x02\u28E3\u28E2" +
		"\x03\x02\x02\x02\u28E4\u053B\x03\x02\x02\x02\u28E5\u28EA\x05\u053E\u02A0" +
		"\x02\u28E6\u28E7\x07\b\x02\x02\u28E7\u28E9\x05\u053E\u02A0\x02\u28E8\u28E6" +
		"\x03\x02\x02\x02\u28E9\u28EC\x03\x02\x02\x02\u28EA\u28E8\x03\x02\x02\x02" +
		"\u28EA\u28EB\x03\x02\x02\x02\u28EB\u053D\x03\x02\x02\x02\u28EC\u28EA\x03" +
		"\x02\x02\x02\u28ED\u28F3\x05\u04BE\u0260\x02\u28EE\u28EF\x05\u02AE\u0158" +
		"\x02\u28EF\u28F0\tH\x02\x02\u28F0\u28F1\x05\u04BE\u0260\x02\u28F1\u28F3" +
		"\x03\x02\x02\x02\u28F2\u28ED\x03\x02\x02\x02\u28F2\u28EE\x03\x02\x02\x02" +
		"\u28F3\u053F\x03\x02\x02\x02\u28F4\u28F9\x05\u0492\u024A\x02\u28F5\u28F6" +
		"\x07\b\x02\x02\u28F6\u28F8\x05\u0492\u024A\x02\u28F7\u28F5\x03\x02\x02" +
		"\x02\u28F8\u28FB\x03\x02\x02\x02\u28F9\u28F7\x03\x02\x02\x02\u28F9\u28FA" +
		"\x03\x02\x02\x02\u28FA\u0541\x03\x02\x02\x02\u28FB\u28F9\x03\x02\x02\x02" +
		"\u28FC\u28FF\x07\x06\x02\x02\u28FD\u2900\x05\u0532\u029A\x02\u28FE\u2900" +
		"\x05\u0544\u02A3\x02\u28FF\u28FD\x03\x02\x02\x02\u28FF\u28FE\x03\x02\x02" +
		"\x02\u28FF\u2900\x03\x02\x02\x02\u2900\u2901\x03\x02\x02\x02\u2901\u2902" +
		"\x07\x07\x02\x02\u2902\u0543\x03\x02\x02\x02\u2903\u2908\x05\u0542\u02A2" +
		"\x02\u2904\u2905\x07\b\x02\x02\u2905\u2907\x05\u0542\u02A2\x02\u2906\u2904" +
		"\x03\x02\x02\x02\u2907\u290A\x03\x02\x02\x02\u2908\u2906\x03\x02\x02\x02" +
		"\u2908\u2909\x03\x02\x02\x02\u2909\u0545\x03\x02\x02\x02\u290A\u2908\x03" +
		"\x02\x02\x02\u290B\u290C\x05\u0548\u02A5\x02\u290C\u290D\x07B\x02\x02" +
		"\u290D\u290E\x05\u04BE\u0260\x02\u290E\u0547\x03\x02\x02\x02\u290F\u2918" +
		"\x05\u05D6\u02EC\x02\u2910\u2918\x07\u0182\x02\x02\u2911\u2918\x07\u010A" +
		"\x02\x02\u2912\u2918\x07\xB2\x02\x02\u2913\u2918\x07\xDC\x02\x02\u2914" +
		"\u2918\x07\u0107\x02\x02\u2915\u2918\x07\u0148\x02\x02\u2916\u2918\x05" +
		"\u05B4\u02DB\x02\u2917\u290F\x03\x02\x02\x02\u2917\u2910\x03\x02\x02\x02" +
		"\u2917\u2911\x03\x02\x02\x02\u2917\u2912\x03\x02\x02\x02\u2917\u2913\x03" +
		"\x02\x02\x02\u2917\u2914\x03\x02\x02\x02\u2917\u2915\x03\x02\x02\x02\u2917" +
		"\u2916\x03\x02\x02\x02\u2918\u0549\x03\x02\x02\x02\u2919\u291A\tI\x02" +
		"\x02\u291A\u054B\x03\x02\x02\x02\u291B\u291C\x05\u04BE\u0260\x02\u291C" +
		"\u291D\x07V\x02\x02\u291D\u291E\x05\u04BE\u0260\x02\u291E\u291F\x07B\x02" +
		"\x02\u291F\u2922\x05\u04BE\u0260\x02\u2920\u2921\x07@\x02\x02\u2921\u2923" +
		"\x05\u04BE\u0260\x02\u2922\u2920\x03\x02\x02\x02\u2922\u2923\x03\x02\x02" +
		"\x02\u2923\u054D\x03\x02\x02\x02\u2924\u2925\x05\u04E6\u0274\x02\u2925" +
		"\u2926\x07F\x02\x02\u2926\u2927\x05\u04E6\u0274\x02\u2927\u054F\x03\x02" +
		"\x02\x02\u2928\u2929\x05\u04BE\u0260\x02\u2929\u292A\x07B\x02\x02\u292A" +
		"\u292B\x05\u04BE\u0260\x02\u292B\u292C\x07@\x02\x02\u292C\u292D\x05\u04BE" +
		"\u0260\x02\u292D\u2944\x03\x02\x02\x02\u292E\u292F\x05\u04BE\u0260\x02" +
		"\u292F\u2930\x07@\x02\x02\u2930\u2931\x05\u04BE\u0260\x02\u2931\u2932" +
		"\x07B\x02\x02\u2932\u2933\x05\u04BE\u0260\x02\u2933\u2944\x03\x02\x02" +
		"\x02\u2934\u2935\x05\u04BE\u0260\x02\u2935\u2936\x07B\x02\x02\u2936\u2937" +
		"\x05\u04BE\u0260\x02\u2937\u2944\x03\x02\x02\x02\u2938\u2939\x05\u04BE" +
		"\u0260\x02\u2939\u293A\x07@\x02\x02\u293A\u293B\x05\u04BE\u0260\x02\u293B" +
		"\u2944\x03\x02\x02\x02\u293C\u293D\x05\u04BE\u0260\x02\u293D\u293E\x07" +
		"\x81\x02\x02\u293E\u293F\x05\u04BE\u0260\x02\u293F\u2940\x07\xC7\x02\x02" +
		"\u2940\u2941\x05\u04BE\u0260\x02\u2941\u2944\x03\x02\x02\x02\u2942\u2944" +
		"\x05\u0532\u029A\x02\u2943\u2928\x03\x02\x02\x02\u2943\u292E\x03\x02\x02" +
		"\x02\u2943\u2934\x03\x02\x02\x02\u2943\u2938\x03\x02\x02\x02\u2943\u293C" +
		"\x03\x02\x02\x02\u2943\u2942\x03\x02\x02\x02\u2944\u0551\x03\x02\x02\x02" +
		"\u2945\u2946\x05\u04BE\u0260\x02\u2946\u2947\x07B\x02\x02\u2947\u2948" +
		"\x05\u0532\u029A\x02\u2948\u294D\x03\x02\x02\x02\u2949\u294A\x07B\x02" +
		"\x02\u294A\u294D\x05\u0532\u029A\x02\u294B\u294D\x05\u0532\u029A\x02\u294C" +
		"\u2945\x03\x02\x02\x02\u294C\u2949\x03\x02\x02\x02\u294C\u294B\x03\x02" +
		"\x02\x02\u294D\u0553\x03\x02\x02\x02\u294E\u2954\x05\u03EE\u01F8\x02\u294F" +
		"\u2950\x07\x04\x02\x02\u2950\u2951\x05\u0532\u029A\x02\u2951\u2952\x07" +
		"\x05\x02\x02\u2952\u2954\x03\x02\x02\x02\u2953\u294E\x03\x02\x02\x02\u2953" +
		"\u294F\x03\x02\x02\x02\u2954\u0555\x03\x02\x02\x02\u2955\u2957\x07*\x02" +
		"\x02\u2956\u2958\x05\u055E\u02B0\x02\u2957\u2956\x03\x02\x02\x02\u2957" +
		"\u2958\x03\x02\x02\x02\u2958\u2959\x03\x02\x02\x02\u2959\u295B\x05\u0558" +
		"\u02AD\x02\u295A\u295C\x05\u055C\u02AF\x02\u295B\u295A\x03\x02\x02\x02" +
		"\u295B\u295C\x03\x02\x02\x02\u295C\u295D\x03\x02\x02\x02\u295D\u295E\x07" +
		"\u01C8\x02\x02\u295E\u0557\x03\x02\x02\x02\u295F\u2961\x05\u055A\u02AE" +
		"\x02\u2960\u295F\x03\x02\x02\x02\u2961\u2962\x03\x02\x02\x02\u2962\u2960" +
		"\x03\x02\x02\x02\u2962\u2963\x03\x02\x02\x02\u2963\u0559\x03\x02\x02\x02" +
		"\u2964\u2965\x07h\x02\x02\u2965\u2966\x05\u04BE\u0260\x02\u2966\u2967" +
		"\x07_\x02\x02\u2967\u2968\x05\u04BE\u0260\x02\u2968\u055B\x03\x02\x02" +
		"\x02\u2969\u296A\x07<\x02\x02\u296A\u296B\x05\u04BE\u0260\x02\u296B\u055D" +
		"\x03\x02\x02\x02\u296C\u296D\x05\u04BE\u0260\x02\u296D\u055F\x03\x02\x02" +
		"\x02\u296E\u2970\x05\u05C4\u02E3\x02\u296F\u2971\x05\u0566\u02B4\x02\u2970" +
		"\u296F\x03\x02\x02\x02\u2970\u2971\x03\x02\x02\x02\u2971\u0561\x03\x02" +
		"\x02\x02\u2972\u2975\x07\r\x02\x02\u2973\u2976\x05\u05A0\u02D1\x02\u2974" +
		"\u2976\x07\v\x02\x02\u2975\u2973\x03\x02\x02\x02\u2975\u2974\x03\x02\x02" +
		"\x02\u2976\u2984\x03\x02\x02\x02\u2977\u2980\x07\x06\x02\x02\u2978\u2981" +
		"\x05\u04BE\u0260\x02\u2979\u297B\x05\u0564\u02B3\x02\u297A\u2979\x03\x02" +
		"\x02\x02\u297A\u297B\x03\x02\x02\x02\u297B\u297C\x03\x02\x02\x02\u297C" +
		"\u297E\x07\n\x02\x02\u297D\u297F\x05\u0564\u02B3\x02\u297E\u297D\x03\x02" +
		"\x02\x02\u297E\u297F\x03\x02\x02\x02\u297F\u2981\x03\x02\x02\x02\u2980" +
		"\u2978\x03\x02\x02\x02\u2980\u297A\x03\x02\x02\x02\u2981\u2982\x03\x02" +
		"\x02\x02\u2982\u2984\x07\x07\x02\x02\u2983\u2972\x03\x02\x02\x02\u2983" +
		"\u2977\x03\x02\x02\x02\u2984\u0563\x03\x02\x02\x02\u2985\u2986\x05\u04BE" +
		"\u0260\x02\u2986\u0565\x03\x02\x02\x02\u2987\u2989\x05\u0562\u02B2\x02" +
		"\u2988\u2987\x03\x02\x02\x02\u2989\u298A\x03\x02\x02\x02\u298A\u2988\x03" +
		"\x02\x02\x02\u298A\u298B\x03\x02\x02\x02\u298B\u0567\x03\x02\x02\x02\u298C" +
		"\u298E\x05\u0562\u02B2\x02\u298D\u298C\x03\x02\x02\x02\u298E\u2991\x03" +
		"\x02\x02\x02\u298F\u298D\x03\x02\x02\x02\u298F\u2990\x03\x02\x02\x02\u2990" +
		"\u0569\x03\x02\x02\x02\u2991\u298F\x03\x02\x02\x02\u2992\u2993\x05\u056C" +
		"\u02B7\x02\u2993\u056B\x03\x02\x02\x02\u2994\u2999\x05\u056E\u02B8\x02" +
		"\u2995\u2996\x07\b\x02\x02\u2996\u2998\x05\u056E\u02B8\x02\u2997\u2995" +
		"\x03\x02\x02\x02\u2998\u299B\x03\x02\x02\x02\u2999\u2997\x03\x02\x02\x02" +
		"\u2999\u299A\x03\x02\x02\x02\u299A\u056D\x03\x02\x02\x02\u299B\u2999\x03" +
		"\x02\x02\x02\u299C\u29A1\x05\u053A\u029E\x02\u299D\u299E\x07&\x02\x02" +
		"\u299E\u29A2\x05\u05D4\u02EB\x02\u299F\u29A2\x05\u05D6\u02EC\x02\u29A0" +
		"\u29A2\x03\x02\x02\x02\u29A1\u299D\x03\x02\x02\x02\u29A1\u299F\x03\x02" +
		"\x02\x02\u29A1\u29A0\x03\x02\x02\x02\u29A2\u29A5\x03\x02\x02\x02\u29A3" +
		"\u29A5\x07\v\x02\x02\u29A4\u299C\x03\x02\x02\x02\u29A4\u29A3\x03\x02\x02" +
		"\x02\u29A5\u056F\x03\x02\x02\x02\u29A6\u29AB\x05\u0586\u02C4\x02\u29A7" +
		"\u29A8\x07\b\x02\x02\u29A8\u29AA\x05\u0586\u02C4\x02\u29A9\u29A7\x03\x02" +
		"\x02\x02\u29AA\u29AD\x03\x02\x02\x02\u29AB\u29A9\x03\x02\x02\x02\u29AB" +
		"\u29AC\x03\x02\x02\x02\u29AC\u0571\x03\x02\x02\x02\u29AD\u29AB\x03\x02" +
		"\x02\x02\u29AE\u29B3\x05\u0580\u02C1\x02\u29AF\u29B0\x07\b\x02\x02\u29B0" +
		"\u29B2\x05\u0580\u02C1\x02\u29B1\u29AF\x03\x02\x02\x02\u29B2\u29B5\x03" +
		"\x02\x02\x02\u29B3\u29B1\x03\x02\x02\x02\u29B3\u29B4\x03\x02\x02\x02\u29B4" +
		"\u0573\x03\x02\x02\x02\u29B5\u29B3\x03\x02\x02\x02\u29B6\u29BB\x05\u0590" +
		"\u02C9\x02\u29B7\u29B8\x07\b\x02\x02\u29B8\u29BA\x05\u0590\u02C9\x02\u29B9" +
		"\u29B7\x03\x02\x02\x02\u29BA\u29BD\x03\x02\x02\x02\u29BB\u29B9\x03\x02" +
		"\x02\x02\u29BB\u29BC\x03\x02\x02\x02\u29BC\u0575\x03\x02\x02\x02\u29BD" +
		"\u29BB\x03\x02\x02\x02\u29BE\u29C3\x05\u058E\u02C8\x02\u29BF\u29C0\x07" +
		"\b\x02\x02\u29C0\u29C2\x05\u058E\u02C8\x02\u29C1\u29BF\x03\x02\x02\x02" +
		"\u29C2\u29C5\x03\x02\x02\x02\u29C3\u29C1\x03\x02\x02\x02\u29C3\u29C4\x03" +
		"\x02\x02\x02\u29C4\u0577\x03\x02\x02\x02\u29C5\u29C3\x03\x02\x02\x02\u29C6" +
		"\u29CB\x05\u0596\u02CC\x02\u29C7\u29C8\x07\b\x02\x02\u29C8\u29CA\x05\u0596" +
		"\u02CC\x02\u29C9\u29C7\x03\x02\x02\x02\u29CA\u29CD\x03\x02\x02\x02\u29CB" +
		"\u29C9\x03\x02\x02\x02\u29CB\u29CC\x03\x02\x02\x02\u29CC\u0579\x03\x02" +
		"\x02\x02\u29CD\u29CB\x03\x02\x02\x02\u29CE\u29D0\x05\u05C4\u02E3\x02\u29CF" +
		"\u29D1\x05\u0566\u02B4\x02\u29D0\u29CF\x03\x02\x02\x02\u29D0\u29D1\x03" +
		"\x02\x02\x02\u29D1\u057B\x03\x02\x02\x02\u29D2\u29D4\x05\u05C4\u02E3\x02" +
		"\u29D3\u29D5\x05\u0566\u02B4\x02\u29D4\u29D3\x03\x02\x02\x02\u29D4\u29D5" +
		"\x03\x02\x02\x02\u29D5\u057D\x03\x02\x02\x02\u29D6\u29D8\x05\u05C4\u02E3" +
		"\x02\u29D7\u29D9\x05\u0566\u02B4\x02\u29D8\u29D7\x03\x02\x02\x02\u29D8" +
		"\u29D9\x03\x02\x02\x02\u29D9\u057F\x03\x02\x02\x02\u29DA\u29DC\x05\u05C4" +
		"\u02E3\x02\u29DB\u29DD\x05\u0566\u02B4\x02\u29DC\u29DB\x03\x02\x02\x02" +
		"\u29DC\u29DD\x03\x02\x02\x02\u29DD\u0581\x03\x02\x02\x02\u29DE\u29E0\x05" +
		"\u05C4\u02E3\x02\u29DF\u29E1\x05\u0566\u02B4\x02\u29E0\u29DF\x03\x02\x02" +
		"\x02\u29E0\u29E1\x03\x02\x02\x02\u29E1\u0583\x03\x02\x02\x02\u29E2\u29E4" +
		"\x05\u05C4\u02E3\x02\u29E3\u29E5\x05\u0232\u011A\x02\u29E4\u29E3\x03\x02" +
		"\x02\x02\u29E4\u29E5\x03\x02\x02\x02\u29E5\u0585\x03\x02\x02\x02\u29E6" +
		"\u29E8\x05\u05C4\u02E3\x02\u29E7\u29E9\x05\u0566\u02B4\x02\u29E8\u29E7" +
		"\x03\x02\x02\x02\u29E8\u29E9\x03\x02\x02\x02\u29E9\u0587\x03\x02\x02\x02" +
		"\u29EA\u29EF\x05\u057C\u02BF\x02\u29EB\u29EC\x07\b\x02\x02\u29EC\u29EE" +
		"\x05\u057C\u02BF\x02\u29ED\u29EB\x03\x02\x02\x02\u29EE\u29F1\x03\x02\x02" +
		"\x02\u29EF\u29ED\x03\x02\x02\x02\u29EF\u29F0\x03\x02\x02\x02\u29F0\u0589" +
		"\x03\x02\x02\x02\u29F1\u29EF\x03\x02\x02\x02\u29F2\u29F7\x05\u059E\u02D0" +
		"\x02\u29F3\u29F4\x07\b\x02\x02\u29F4\u29F6\x05\u059E\u02D0\x02\u29F5\u29F3" +
		"\x03\x02\x02\x02\u29F6\u29F9\x03\x02\x02\x02\u29F7\u29F5\x03\x02\x02\x02" +
		"\u29F7\u29F8\x03\x02\x02\x02\u29F8\u058B\x03\x02\x02\x02\u29F9\u29F7\x03" +
		"\x02\x02\x02\u29FA\u29FC\x05\u05C4\u02E3\x02\u29FB\u29FD\x05\u0232\u011A" +
		"\x02\u29FC\u29FB\x03\x02\x02\x02\u29FC\u29FD\x03\x02\x02\x02\u29FD\u058D" +
		"\x03\x02\x02\x02\u29FE\u2A00\x05\u05C4\u02E3\x02\u29FF\u2A01\x05\u0232" +
		"\u011A\x02\u2A00\u29FF\x03\x02\x02\x02\u2A00\u2A01\x03\x02\x02\x02\u2A01" +
		"\u058F\x03\x02\x02\x02\u2A02\u2A04\x05\u05C4\u02E3\x02\u2A03\u2A05\x05" +
		"\u0232\u011A\x02\u2A04\u2A03\x03\x02\x02\x02\u2A04\u2A05\x03\x02\x02\x02" +
		"\u2A05\u0591\x03\x02\x02\x02\u2A06\u2A07\x05\u05C4\u02E3\x02\u2A07\u0593" +
		"\x03\x02\x02\x02\u2A08\u2A09\x05\u05C4\u02E3\x02\u2A09\u0595\x03\x02\x02" +
		"\x02\u2A0A\u2A0F\x05\u05CC\u02E7\x02\u2A0B\u2A0C\x05\u05C4\u02E3\x02\u2A0C" +
		"\u2A0D\x05\u0566\u02B4\x02\u2A0D\u2A0F\x03\x02\x02\x02\u2A0E\u2A0A\x03" +
		"\x02\x02\x02\u2A0E\u2A0B\x03\x02\x02\x02\u2A0F\u0597\x03\x02\x02\x02\u2A10" +
		"\u2A15\x05\u05CC\u02E7\x02\u2A11\u2A12\x05\u05C4\u02E3\x02\u2A12\u2A13" +
		"\x05\u0566\u02B4\x02\u2A13\u2A15\x03\x02\x02\x02\u2A14\u2A10\x03\x02\x02" +
		"\x02\u2A14\u2A11\x03\x02\x02\x02\u2A15\u0599\x03\x02\x02\x02\u2A16\u2A17" +
		"\x05\u05C4\u02E3\x02\u2A17\u059B\x03\x02\x02\x02\u2A18\u2A19\x05\u05C4" +
		"\u02E3\x02\u2A19\u059D\x03\x02\x02\x02\u2A1A\u2A1B\x05\u05C4\u02E3\x02" +
		"\u2A1B\u059F\x03\x02\x02\x02\u2A1C\u2A1D\x05\u05D4\u02EB\x02\u2A1D\u05A1" +
		"\x03\x02\x02\x02\u2A1E\u2A1F\x05\u05B4\u02DB\x02\u2A1F\u05A3\x03\x02\x02" +
		"\x02\u2A20\u2A25\x05\u05CC\u02E7\x02\u2A21\u2A22\x05\u05C4\u02E3\x02\u2A22" +
		"\u2A23\x05\u0566\u02B4\x02\u2A23\u2A25\x03\x02\x02\x02\u2A24\u2A20\x03" +
		"\x02\x02\x02\u2A24\u2A21\x03\x02\x02\x02\u2A25\u05A5\x03\x02\x02\x02\u2A26" +
		"\u2A2B\x05\u05CC\u02E7\x02\u2A27\u2A28\x05\u05C4\u02E3\x02\u2A28\u2A29" +
		"\x05\u0566\u02B4\x02\u2A29\u2A2B\x03\x02\x02\x02\u2A2A\u2A26\x03\x02\x02" +
		"\x02\u2A2A\u2A27\x03\x02\x02\x02\u2A2B\u05A7\x03\x02\x02\x02\u2A2C\u2A31" +
		"\x05\u05CE\u02E8\x02\u2A2D\u2A2E\x05\u05C4\u02E3\x02\u2A2E\u2A2F\x05\u0566" +
		"\u02B4\x02\u2A2F\u2A31\x03\x02\x02\x02\u2A30\u2A2C\x03\x02\x02\x02\u2A30" +
		"\u2A2D\x03\x02\x02\x02\u2A31\u05A9\x03\x02\x02\x02\u2A32\u2A56\x05\u05B2" +
		"\u02DA\x02\u2A33\u2A56\x05\u05B0\u02D9\x02\u2A34\u2A56\x05\u05B4\u02DB" +
		"\x02\u2A35\u2A56\x05\u05AE\u02D8\x02\u2A36\u2A56\x05\u05AC\u02D7\x02\u2A37" +
		"\u2A41\x05\u05A6\u02D4\x02\u2A38\u2A42\x05\u05B4\u02DB\x02\u2A39\u2A3A" +
		"\x07\x04\x02\x02\u2A3A\u2A3C\x05\u053C\u029F\x02\u2A3B\u2A3D\x05\u0416" +
		"\u020C\x02\u2A3C\u2A3B\x03\x02\x02\x02\u2A3C\u2A3D\x03\x02\x02\x02\u2A3D" +
		"\u2A3E\x03\x02\x02\x02\u2A3E\u2A3F\x07\x05\x02\x02\u2A3F\u2A40\x05\u05B4" +
		"\u02DB\x02\u2A40\u2A42\x03\x02\x02\x02\u2A41\u2A38\x03\x02\x02\x02\u2A41" +
		"\u2A39\x03\x02\x02\x02\u2A42\u2A56\x03\x02\x02\x02\u2A43\u2A44\x05\u0498" +
		"\u024D\x02\u2A44\u2A45\x05\u05B4\u02DB\x02\u2A45\u2A56\x03\x02\x02\x02" +
		"\u2A46\u2A50\x05\u04B4\u025B\x02\u2A47\u2A49\x05\u05B4\u02DB\x02\u2A48" +
		"\u2A4A\x05\u04B8\u025D\x02\u2A49\u2A48\x03\x02\x02\x02\u2A49\u2A4A\x03" +
		"\x02\x02\x02\u2A4A\u2A51\x03\x02\x02\x02\u2A4B\u2A4C\x07\x04\x02\x02\u2A4C" +
		"\u2A4D\x05\u05B2\u02DA\x02\u2A4D\u2A4E\x07\x05\x02\x02\u2A4E\u2A4F\x05" +
		"\u05B4\u02DB\x02\u2A4F\u2A51\x03\x02\x02\x02\u2A50\u2A47\x03\x02\x02\x02" +
		"\u2A50\u2A4B\x03\x02\x02\x02\u2A51\u2A56\x03\x02\x02\x02\u2A52\u2A56\x07" +
		"b\x02\x02\u2A53\u2A56\x07>\x02\x02\u2A54\u2A56\x07P\x02\x02\u2A55\u2A32" +
		"\x03\x02\x02\x02\u2A55\u2A33\x03\x02\x02\x02\u2A55\u2A34\x03\x02\x02\x02" +
		"\u2A55\u2A35\x03\x02\x02\x02\u2A55\u2A36\x03\x02\x02\x02\u2A55\u2A37\x03" +
		"\x02\x02\x02\u2A55\u2A43\x03\x02\x02\x02\u2A55\u2A46\x03\x02\x02\x02\u2A55" +
		"\u2A52\x03\x02\x02\x02\u2A55\u2A53\x03\x02\x02\x02\u2A55\u2A54\x03\x02" +
		"\x02\x02\u2A56\u05AB\x03\x02\x02\x02\u2A57\u2A58\x07\u0239\x02\x02\u2A58" +
		"\u05AD\x03\x02\x02\x02\u2A59\u2A5A\x07\u0235\x02\x02\u2A5A\u05AF\x03\x02" +
		"\x02\x02\u2A5B\u2A5C\x07\u023F\x02\x02\u2A5C\u05B1\x03\x02\x02\x02\u2A5D" +
		"\u2A5E\x07\u023D\x02\x02\u2A5E\u05B3\x03\x02\x02\x02\u2A5F\u2A61\x05\u05B6" +
		"\u02DC\x02\u2A60\u2A62\x05\u05B8\u02DD\x02\u2A61\u2A60\x03\x02\x02\x02" +
		"\u2A61\u2A62\x03\x02\x02\x02\u2A62\u05B5\x03\x02\x02\x02\u2A63\u2A6F\x07" +
		"\u0230\x02\x02\u2A64\u2A6F\x07\u0232\x02\x02\u2A65\u2A69\x07\u0234\x02" +
		"\x02\u2A66\u2A68\x07\u024E\x02\x02\u2A67\u2A66\x03\x02\x02\x02\u2A68\u2A6B" +
		"\x03\x02\x02\x02\u2A69\u2A67\x03\x02\x02\x02\u2A69\u2A6A\x03\x02\x02\x02" +
		"\u2A6A\u2A6C\x03\x02\x02\x02\u2A6B\u2A69\x03\x02\x02\x02\u2A6C\u2A6F\x07" +
		"\u024F\x02\x02\u2A6D\u2A6F\x07\u024A\x02\x02\u2A6E\u2A63\x03\x02\x02\x02" +
		"\u2A6E\u2A64\x03\x02\x02\x02\u2A6E\u2A65\x03\x02\x02\x02\u2A6E\u2A6D\x03" +
		"\x02\x02\x02\u2A6F\u05B7\x03\x02\x02\x02\u2A70\u2A71\x07\u01E9\x02\x02" +
		"\u2A71\u2A72\x05\u05B6\u02DC\x02\u2A72\u05B9\x03\x02\x02\x02\u2A73\u2A79" +
		"\x05\u05B2\u02DA\x02\u2A74\u2A75\x07\x0E\x02\x02\u2A75\u2A79\x05\u05B2" +
		"\u02DA\x02\u2A76\u2A77\x07\x0F\x02\x02\u2A77\u2A79\x05\u05B2\u02DA\x02" +
		"\u2A78\u2A73\x03\x02\x02\x02\u2A78\u2A74\x03\x02\x02\x02\u2A78\u2A76\x03" +
		"\x02\x02\x02\u2A79\u05BB\x03\x02\x02\x02\u2A7A\u2A7B\x05\u05C0\u02E1\x02" +
		"\u2A7B\u05BD\x03\x02\x02\x02\u2A7C\u2A7D\x05\u05C0\u02E1\x02\u2A7D\u05BF" +
		"\x03\x02\x02\x02\u2A7E\u2A84\x05\u05D2\u02EA\x02\u2A7F\u2A84\x076\x02" +
		"\x02\u2A80\u2A84\x073\x02\x02\u2A81\u2A84\x07[\x02\x02\u2A82\u2A84\x07" +
		"\u020E\x02\x02\u2A83\u2A7E\x03\x02\x02\x02\u2A83\u2A7F\x03\x02\x02\x02" +
		"\u2A83\u2A80\x03\x02\x02\x02\u2A83\u2A81\x03\x02\x02\x02\u2A83\u2A82\x03" +
		"\x02\x02\x02\u2A84\u05C1\x03\x02\x02\x02\u2A85\u2A8A\x05\u05C0\u02E1\x02" +
		"\u2A86\u2A87\x07\b\x02\x02\u2A87\u2A89\x05\u05C0\u02E1\x02\u2A88\u2A86" +
		"\x03\x02\x02\x02\u2A89\u2A8C\x03\x02\x02\x02\u2A8A\u2A88\x03\x02\x02\x02" +
		"\u2A8A\u2A8B\x03\x02\x02\x02\u2A8B\u05C3\x03\x02\x02\x02\u2A8C\u2A8A\x03" +
		"\x02\x02\x02\u2A8D\u2A92\x05\u05D6\u02EC\x02\u2A8E\u2A92\x05\u05DA\u02EE" +
		"\x02\u2A8F\u2A92\x05\u05DC\u02EF\x02\u2A90\u2A92\x05\u06C8\u0365\x02\u2A91" +
		"\u2A8D\x03\x02\x02\x02\u2A91\u2A8E\x03\x02\x02\x02\u2A91\u2A8F\x03\x02" +
		"\x02\x02\u2A91\u2A90\x03\x02\x02\x02\u2A92\u05C5\x03\x02\x02\x02\u2A93" +
		"\u2A94\x05\u05D6\u02EC\x02\u2A94\u05C7\x03\x02\x02\x02\u2A95\u2AA2\x05" +
		"\u02C8\u0165\x02\u2A96\u2A97\x07\x04\x02\x02\u2A97\u2A98\x05\u04BE\u0260" +
		"\x02\u2A98\u2A99\x07\x05\x02\x02\u2A99\u2A9A\x03\x02\x02\x02\u2A9A\u2A9C" +
		"\x05\u05D6\u02EC\x02\u2A9B\u2A9D\x05\u028C\u0147\x02\u2A9C\u2A9B\x03\x02" +
		"\x02\x02\u2A9C\u2A9D\x03\x02\x02\x02\u2A9D\u2A9F\x03\x02\x02\x02\u2A9E" +
		"\u2AA0\x05\u028E\u0148\x02\u2A9F\u2A9E\x03\x02\x02\x02\u2A9F\u2AA0\x03" +
		"\x02\x02\x02\u2AA0\u2AA2\x03\x02\x02\x02\u2AA1\u2A95\x03\x02\x02\x02\u2AA1" +
		"\u2A96\x03\x02\x02\x02\u2AA2\u05C9\x03\x02\x02\x02\u2AA3\u2AA4\x07k\x02" +
		"\x02\u2AA4\u2AA6\x05\x86D\x02\u2AA5\u2AA3\x03\x02\x02\x02\u2AA5\u2AA6" +
		"\x03\x02\x02\x02\u2AA6\u2AA8\x03\x02\x02\x02\u2AA7\u2AA9\x05\u011E\x90" +
		"\x02\u2AA8\u2AA7\x03\x02\x02\x02\u2AA8\u2AA9\x03\x02\x02\x02\u2AA9\u05CB" +
		"\x03\x02\x02\x02\u2AAA\u2AAF\x05\u05D6\u02EC\x02\u2AAB\u2AAF\x05\u05DA" +
		"\u02EE\x02\u2AAC\u2AAF\x05\u06C8\u0365\x02\u2AAD\u2AAF\x05\u05DE\u02F0" +
		"\x02\u2AAE\u2AAA\x03\x02\x02\x02\u2AAE\u2AAB\x03\x02\x02\x02\u2AAE\u2AAC" +
		"\x03\x02\x02\x02\u2AAE\u2AAD\x03\x02\x02\x02\u2AAF\u05CD\x03\x02\x02\x02" +
		"\u2AB0\u2AB5\x05\u05D6\u02EC\x02\u2AB1\u2AB5\x05\u05DA\u02EE\x02\u2AB2" +
		"\u2AB5\x05\u06C8\u0365\x02\u2AB3\u2AB5\x05\u05DE\u02F0\x02\u2AB4\u2AB0" +
		"\x03\x02\x02\x02\u2AB4\u2AB1\x03\x02\x02\x02\u2AB4\u2AB2\x03\x02\x02\x02" +
		"\u2AB4\u2AB3\x03\x02\x02\x02\u2AB5\u05CF\x03\x02\x02\x02\u2AB6\u2AB9\x05" +
		"\u059A\u02CE\x02\u2AB7\u2AB9\x05\u05DE\u02F0\x02\u2AB8\u2AB6\x03\x02\x02" +
		"\x02\u2AB8\u2AB7\x03\x02\x02\x02\u2AB9\u05D1\x03\x02\x02\x02\u2ABA\u2ABF" +
		"\x05\u05D6\u02EC\x02\u2ABB\u2ABF\x05\u05DA\u02EE\x02\u2ABC\u2ABF\x05\u05DC" +
		"\u02EF\x02\u2ABD\u2ABF\x05\u05DE\u02F0\x02\u2ABE\u2ABA\x03\x02\x02\x02" +
		"\u2ABE\u2ABB\x03\x02\x02\x02\u2ABE\u2ABC\x03\x02\x02\x02\u2ABE\u2ABD\x03" +
		"\x02\x02\x02\u2ABF\u05D3\x03\x02\x02\x02\u2AC0\u2AC7\x05\u05D6\u02EC\x02" +
		"\u2AC1\u2AC7\x05\u06C8\u0365\x02\u2AC2\u2AC7\x05\u05DA\u02EE\x02\u2AC3" +
		"\u2AC7\x05\u05DC\u02EF\x02\u2AC4\u2AC7\x05\u05DE";
	private static readonly _serializedATNSegment20: string =
		"\u02F0\x02\u2AC5\u2AC7\x05\u05E0\u02F1\x02\u2AC6\u2AC0\x03\x02\x02\x02" +
		"\u2AC6\u2AC1\x03\x02\x02\x02\u2AC6\u2AC2\x03\x02\x02\x02\u2AC6\u2AC3\x03" +
		"\x02\x02\x02\u2AC6\u2AC4\x03\x02\x02\x02\u2AC6\u2AC5\x03\x02\x02\x02\u2AC7" +
		"\u05D5\x03\x02\x02\x02\u2AC8\u2ACA\x07\u0227\x02\x02\u2AC9\u2ACB\x05\u05B8" +
		"\u02DD\x02\u2ACA\u2AC9\x03\x02\x02\x02\u2ACA\u2ACB\x03\x02\x02\x02\u2ACB" +
		"\u2AD3\x03\x02\x02\x02\u2ACC\u2AD3\x05\u05B4\u02DB\x02\u2ACD\u2AD3\x07" +
		"\u0228\x02\x02\u2ACE\u2AD3\x07\u022C\x02\x02\u2ACF\u2AD3\x05\u04EA\u0276" +
		"\x02\u2AD0\u2AD3\x05\u05D8\u02ED\x02\u2AD1\u2AD3\x05\u06C8\u0365\x02\u2AD2" +
		"\u2AC8\x03\x02\x02\x02\u2AD2\u2ACC\x03\x02\x02\x02\u2AD2\u2ACD\x03\x02" +
		"\x02\x02\u2AD2\u2ACE\x03\x02\x02\x02\u2AD2\u2ACF\x03\x02\x02\x02\u2AD2" +
		"\u2AD0\x03\x02\x02\x02\u2AD2\u2AD1\x03\x02\x02\x02\u2AD3\u05D7\x03\x02" +
		"\x02\x02\u2AD4\u2AD5\x07\u0241\x02\x02\u2AD5\u05D9\x03\x02\x02\x02\u2AD6" +
		"\u2AD7\tJ\x02\x02\u2AD7\u05DB\x03\x02\x02\x02\u2AD8\u2B0C\x07\u0185\x02" +
		"\x02\u2AD9\u2B0C\x07\u0186\x02\x02\u2ADA\u2B0C\x05\u04A2\u0252\x02\u2ADB" +
		"\u2B0C\x07\u0188\x02\x02\u2ADC\u2B0C\x07\u0189\x02\x02\u2ADD\u2B0C\x05" +
		"\u04AA\u0256\x02\u2ADE\u2B0C\x07\u018B\x02\x02\u2ADF\u2B0C\x07\u018C\x02" +
		"\x02\u2AE0\u2B0C\x07\u018D\x02\x02\u2AE1\u2B0C\x07\u018E\x02\x02\u2AE2" +
		"\u2B0C\x07\u018F\x02\x02\u2AE3\u2B0C\x07\u0190\x02\x02\u2AE4\u2B0C\x07" +
		"\u0191\x02\x02\u2AE5\u2B0C\x07\u01D8\x02\x02\u2AE6\u2B0C\x07\u0192\x02" +
		"\x02\u2AE7\u2B0C\x07\u0193\x02\x02\u2AE8\u2B0C\x07\u0194\x02\x02\u2AE9" +
		"\u2B0C\x07\u0195\x02\x02\u2AEA\u2B0C\x07\u0196\x02\x02\u2AEB\u2B0C\x07" +
		"\u0197\x02\x02\u2AEC\u2B0C\x07\u0198\x02\x02\u2AED\u2B0C\x07\u0199\x02" +
		"\x02\u2AEE\u2B0C\x07\u01EB\x02\x02\u2AEF\u2B0C\x07\u019A\x02\x02\u2AF0" +
		"\u2B0C\x05\u049E\u0250\x02\u2AF1\u2B0C\x07\u01C7\x02\x02\u2AF2\u2B0C\x07" +
		"\u019C\x02\x02\u2AF3\u2B0C\x07\u019D\x02\x02\u2AF4\u2B0C\x07\u019E\x02" +
		"\x02\u2AF5\u2B0C\x07\u019F\x02\x02\u2AF6\u2B0C\x07\u01A0\x02\x02\u2AF7" +
		"\u2B0C\x07\u01A1\x02\x02\u2AF8\u2B0C\x07\u01A2\x02\x02\u2AF9\u2B0C\x07" +
		"\u01A3\x02\x02\u2AFA\u2B0C\x07\u01A4\x02\x02\u2AFB\u2B0C\x07\u01A5\x02" +
		"\x02\u2AFC\u2B0C\x07\u01A6\x02\x02\u2AFD\u2B0C\x07\u01A7\x02\x02\u2AFE" +
		"\u2B0C\x07\u01A8\x02\x02\u2AFF\u2B0C\x07\u01A9\x02\x02\u2B00\u2B0C\x07" +
		"\u01AA\x02\x02\u2B01\u2B0C\x07\u01AB\x02\x02\u2B02\u2B0C\x07\u01AC\x02" +
		"\x02\u2B03\u2B0C\x07\u01AD\x02\x02\u2B04\u2B0C\x07\u01AE\x02\x02\u2B05" +
		"\u2B0C\x07\u01DE\x02\x02\u2B06\u2B0C\x07\u01AF\x02\x02\u2B07\u2B0C\x07" +
		"\u01B0\x02\x02\u2B08\u2B0C\x07\u01B1\x02\x02\u2B09\u2B0C\x07\u01B2\x02" +
		"\x02\u2B0A\u2B0C\x07\u01DC\x02\x02\u2B0B\u2AD8\x03\x02\x02\x02\u2B0B\u2AD9" +
		"\x03\x02\x02\x02\u2B0B\u2ADA\x03\x02\x02\x02\u2B0B\u2ADB\x03\x02\x02\x02" +
		"\u2B0B\u2ADC\x03\x02\x02\x02\u2B0B\u2ADD\x03\x02\x02\x02\u2B0B\u2ADE\x03" +
		"\x02\x02\x02\u2B0B\u2ADF\x03\x02\x02\x02\u2B0B\u2AE0\x03\x02\x02\x02\u2B0B" +
		"\u2AE1\x03\x02\x02\x02\u2B0B\u2AE2\x03\x02\x02\x02\u2B0B\u2AE3\x03\x02" +
		"\x02\x02\u2B0B\u2AE4\x03\x02\x02\x02\u2B0B\u2AE5\x03\x02\x02\x02\u2B0B" +
		"\u2AE6\x03\x02\x02\x02\u2B0B\u2AE7\x03\x02\x02\x02\u2B0B\u2AE8\x03\x02" +
		"\x02\x02\u2B0B\u2AE9\x03\x02\x02\x02\u2B0B\u2AEA\x03\x02\x02\x02\u2B0B" +
		"\u2AEB\x03\x02\x02\x02\u2B0B\u2AEC\x03\x02\x02\x02\u2B0B\u2AED\x03\x02" +
		"\x02\x02\u2B0B\u2AEE\x03\x02\x02\x02\u2B0B\u2AEF\x03\x02\x02\x02\u2B0B" +
		"\u2AF0\x03\x02\x02\x02\u2B0B\u2AF1\x03\x02\x02\x02\u2B0B\u2AF2\x03\x02" +
		"\x02\x02\u2B0B\u2AF3\x03\x02\x02\x02\u2B0B\u2AF4\x03\x02\x02\x02\u2B0B" +
		"\u2AF5\x03\x02\x02\x02\u2B0B\u2AF6\x03\x02\x02\x02\u2B0B\u2AF7\x03\x02" +
		"\x02\x02\u2B0B\u2AF8\x03\x02\x02\x02\u2B0B\u2AF9\x03\x02\x02\x02\u2B0B" +
		"\u2AFA\x03\x02\x02\x02\u2B0B\u2AFB\x03\x02\x02\x02\u2B0B\u2AFC\x03\x02" +
		"\x02\x02\u2B0B\u2AFD\x03\x02\x02\x02\u2B0B\u2AFE\x03\x02\x02\x02\u2B0B" +
		"\u2AFF\x03\x02\x02\x02\u2B0B\u2B00\x03\x02\x02\x02\u2B0B\u2B01\x03\x02" +
		"\x02\x02\u2B0B\u2B02\x03\x02\x02\x02\u2B0B\u2B03\x03\x02\x02\x02\u2B0B" +
		"\u2B04\x03\x02\x02\x02\u2B0B\u2B05\x03\x02\x02\x02\u2B0B\u2B06\x03\x02" +
		"\x02\x02\u2B0B\u2B07\x03\x02\x02\x02\u2B0B\u2B08\x03\x02\x02\x02\u2B0B" +
		"\u2B09\x03\x02\x02\x02\u2B0B\u2B0A\x03\x02\x02\x02\u2B0C\u05DD\x03\x02" +
		"\x02\x02\u2B0D\u2B0E\tK\x02\x02\u2B0E\u05DF\x03\x02\x02\x02\u2B0F\u2B10" +
		"\tL\x02\x02\u2B10\u05E1\x03\x02\x02\x02\u2B11\u2B12\x05\u05E4\u02F3\x02" +
		"\u2B12\u2B13\x05\u05EE\u02F8\x02\u2B13\u2B14\x05\u05EC\u02F7\x02\u2B14" +
		"\u05E3\x03\x02\x02\x02\u2B15\u2B17\x05\u05E6\u02F4\x02\u2B16\u2B15\x03" +
		"\x02\x02\x02\u2B17\u2B1A\x03\x02\x02\x02\u2B18\u2B16\x03\x02\x02\x02\u2B18" +
		"\u2B19\x03\x02\x02\x02\u2B19\u05E5\x03\x02\x02\x02\u2B1A\u2B18\x03\x02" +
		"\x02\x02\u2B1B\u2B1C\x05\u05E8\u02F5\x02\u2B1C\u2B1D\x07\u0119\x02\x02" +
		"\u2B1D\u2B1E\x07\u01EC\x02\x02\u2B1E\u2B30\x03\x02\x02\x02\u2B1F\u2B20" +
		"\x05\u05E8\u02F5\x02\u2B20\u2B21\x07\u01ED\x02\x02\u2B21\u2B22\x05\u05EA" +
		"\u02F6\x02\u2B22\u2B30\x03\x02\x02\x02\u2B23\u2B24\x05\u05E8\u02F5\x02" +
		"\u2B24\u2B25\x07\u01EE\x02\x02\u2B25\u2B26\x07\u01EF\x02\x02\u2B26\u2B30" +
		"\x03\x02\x02\x02\u2B27\u2B28\x05\u05E8\u02F5\x02\u2B28\u2B29\x07\u01EE" +
		"\x02\x02\u2B29\u2B2A\x07\u01F0\x02\x02\u2B2A\u2B30\x03\x02\x02\x02\u2B2B" +
		"\u2B2C\x05\u05E8\u02F5\x02\u2B2C\u2B2D\x07\u01EE\x02\x02\u2B2D\u2B2E\x07" +
		"\u01F1\x02\x02\u2B2E\u2B30\x03\x02\x02\x02\u2B2F\u2B1B\x03\x02\x02\x02" +
		"\u2B2F\u2B1F\x03\x02\x02\x02\u2B2F\u2B23\x03\x02\x02\x02\u2B2F\u2B27\x03" +
		"\x02\x02\x02\u2B2F\u2B2B\x03\x02\x02\x02\u2B30\u05E7\x03\x02\x02\x02\u2B31" +
		"\u2B32\x07\x1F\x02\x02\u2B32\u05E9\x03\x02\x02\x02\u2B33\u2B38\x05\u05B4" +
		"\u02DB\x02\u2B34\u2B38\x05\u05E0\u02F1\x02\u2B35\u2B38\x05\u06C8\u0365" +
		"\x02\u2B36\u2B38\x05\u05DA\u02EE\x02\u2B37\u2B33\x03\x02\x02\x02\u2B37" +
		"\u2B34\x03\x02\x02\x02\u2B37\u2B35\x03\x02\x02\x02\u2B37\u2B36\x03\x02" +
		"\x02\x02\u2B38\u05EB\x03\x02\x02\x02\u2B39\u2B3C\x03\x02\x02\x02\u2B3A" +
		"\u2B3C\x07\t\x02\x02\u2B3B\u2B39\x03\x02\x02\x02\u2B3B\u2B3A\x03\x02\x02" +
		"\x02\u2B3C\u05ED\x03\x02\x02\x02\u2B3D\u2B3E\x05\u05F0\u02F9\x02\u2B3E" +
		"\u2B3F\x07\x94\x02\x02\u2B3F\u2B40\x05\u061A\u030E\x02\u2B40\u2B41\x05" +
		"\u06B4\u035B\x02\u2B41\u2B42\x07\u01C8\x02\x02\u2B42\u2B43\x05\u06C2\u0362" +
		"\x02\u2B43\u05EF\x03\x02\x02\x02\u2B44\u2B49\x05\u06BE\u0360\x02\u2B45" +
		"\u2B47\x05\u05F2\u02FA\x02\u2B46\u2B48\x05\u05F4\u02FB\x02\u2B47\u2B46" +
		"\x03\x02\x02\x02\u2B47\u2B48\x03\x02\x02\x02\u2B48\u2B4A\x03\x02\x02\x02" +
		"\u2B49\u2B45\x03\x02\x02\x02\u2B49\u2B4A\x03\x02\x02\x02\u2B4A\u05F1\x03" +
		"\x02\x02\x02\u2B4B\u2B4C\x07\xB4\x02\x02\u2B4C\u05F3\x03\x02\x02\x02\u2B4D" +
		"\u2B4F\x05\u05F8\u02FD\x02\u2B4E\u2B4D\x03\x02\x02\x02\u2B4F\u2B50\x03" +
		"\x02\x02\x02\u2B50\u2B4E\x03\x02\x02\x02\u2B50\u2B51\x03\x02\x02\x02\u2B51" +
		"\u05F5\x03\x02\x02\x02\u2B52\u2B53\x07\x14\x02\x02\u2B53\u2B54\x05\u06C6" +
		"\u0364\x02\u2B54\u2B55\x07\x15\x02\x02\u2B55\u05F7\x03\x02\x02\x02\u2B56" +
		"\u2B5A\x05\u05FA\u02FE\x02\u2B57\u2B5A\x07\xB4\x02\x02\u2B58\u2B5A\x05" +
		"\u05F6\u02FC\x02\u2B59\u2B56\x03\x02\x02\x02\u2B59\u2B57\x03\x02\x02\x02" +
		"\u2B59\u2B58\x03\x02\x02\x02\u2B5A\u05F9\x03\x02\x02\x02\u2B5B\u2B6B\x05" +
		"\u060A\u0306\x02\u2B5C\u2B5D\x07\u01F2\x02\x02\u2B5D\u2B5E\x07@\x02\x02" +
		"\u2B5E\u2B6C\x05\u0608\u0305\x02\u2B5F\u2B60\x05\u060C\u0307\x02\u2B60" +
		"\u2B61\x05\u060E\u0308\x02\u2B61\u2B62\x05\u0610\u0309\x02\u2B62\u2B63" +
		"\x05\u0612\u030A\x02\u2B63\u2B64\x05\u0614\u030B\x02\u2B64\u2B6C\x03\x02" +
		"\x02\x02\u2B65\u2B66\x05\u05FC\u02FF\x02\u2B66\u2B67\x07\xAE\x02\x02\u2B67" +
		"\u2B68\x05\u0600\u0301\x02\u2B68\u2B69\x05\u0606\u0304\x02\u2B69\u2B6A" +
		"\x05\u05FE\u0300\x02\u2B6A\u2B6C\x03\x02\x02\x02\u2B6B\u2B5C\x03\x02\x02" +
		"\x02\u2B6B\u2B5F\x03\x02\x02\x02\u2B6B\u2B65\x03\x02\x02\x02\u2B6C\u2B6D" +
		"\x03\x02\x02\x02\u2B6D\u2B6E\x07\t\x02\x02\u2B6E\u05FB\x03\x02\x02\x02" +
		"\u2B6F\u2B74\x03\x02\x02\x02\u2B70\u2B71\x07\u010F\x02\x02\u2B71\u2B74" +
		"\x07\u0146\x02\x02\u2B72\u2B74\x07\u0146\x02\x02\u2B73\u2B6F\x03\x02\x02" +
		"\x02\u2B73\u2B70\x03\x02\x02\x02\u2B73\u2B72\x03\x02\x02\x02\u2B74\u05FD" +
		"\x03\x02\x02\x02\u2B75\u2B76\x05\u03EC\u01F7\x02\u2B76\u05FF\x03\x02\x02" +
		"\x02\u2B77\u2B7D\x03\x02\x02\x02\u2B78\u2B79\x07\x04\x02\x02\u2B79\u2B7A" +
		"\x05\u0602\u0302\x02\u2B7A\u2B7B\x07\x05\x02\x02\u2B7B\u2B7D\x03\x02\x02" +
		"\x02\u2B7C\u2B77\x03\x02\x02\x02\u2B7C\u2B78\x03\x02\x02\x02\u2B7D\u0601" +
		"\x03\x02\x02\x02\u2B7E\u2B83\x05\u0604\u0303\x02\u2B7F\u2B80\x07\b\x02" +
		"\x02\u2B80\u2B82\x05\u0604\u0303\x02\u2B81\u2B7F\x03\x02\x02\x02\u2B82" +
		"\u2B85\x03\x02\x02\x02\u2B83\u2B81\x03\x02\x02\x02\u2B83\u2B84\x03\x02" +
		"\x02\x02\u2B84\u0603\x03\x02\x02\x02\u2B85\u2B83\x03\x02\x02\x02\u2B86" +
		"\u2B87\x05\u060A\u0306\x02\u2B87\u2B88\x05\u060E\u0308\x02\u2B88\u0605" +
		"\x03\x02\x02\x02\u2B89\u2B8A\tM\x02\x02\u2B8A\u0607\x03\x02\x02\x02\u2B8B" +
		"\u2B8E\x07\x1E\x02\x02\u2B8C\u2B8E\x05\u05C4\u02E3\x02\u2B8D\u2B8B\x03" +
		"\x02\x02\x02\u2B8D\u2B8C\x03\x02\x02\x02\u2B8E\u0609\x03\x02\x02\x02\u2B8F" +
		"\u2B90\x05\u06C6\u0364\x02\u2B90\u060B\x03\x02\x02\x02\u2B91\u2B94\x03" +
		"\x02\x02\x02\u2B92\u2B94\x07\u01F3\x02\x02\u2B93\u2B91\x03\x02\x02\x02" +
		"\u2B93\u2B92\x03\x02\x02\x02\u2B94\u060D\x03\x02\x02\x02\u2B95\u2B96\x05" +
		"\u0492\u024A\x02\u2B96\u060F\x03\x02\x02\x02\u2B97\u2B9B\x03\x02\x02\x02" +
		"\u2B98\u2B99\x07-\x02\x02\u2B99\u2B9B\x05\u0230\u0119\x02\u2B9A\u2B97" +
		"\x03\x02\x02\x02\u2B9A\u2B98\x03\x02\x02\x02\u2B9B\u0611\x03\x02\x02\x02" +
		"\u2B9C\u2BA0\x03\x02\x02\x02\u2B9D\u2B9E\x07O\x02\x02\u2B9E\u2BA0\x07" +
		"P\x02\x02\u2B9F\u2B9C\x03\x02\x02\x02\u2B9F\u2B9D\x03\x02\x02\x02\u2BA0" +
		"\u0613\x03\x02\x02\x02\u2BA1\u2BA6\x03\x02\x02\x02\u2BA2\u2BA3\x05\u0616" +
		"\u030C\x02\u2BA3\u2BA4\x05\u06CA\u0366\x02\u2BA4\u2BA6\x03\x02\x02\x02" +
		"\u2BA5\u2BA1\x03\x02\x02\x02\u2BA5\u2BA2\x03\x02\x02\x02\u2BA6\u0615\x03" +
		"\x02\x02\x02\u2BA7\u2BAA\x05\u0618\u030D\x02\u2BA8\u2BAA\x077\x02\x02" +
		"\u2BA9\u2BA7\x03\x02\x02\x02\u2BA9\u2BA8\x03\x02\x02\x02\u2BAA\u0617\x03" +
		"\x02\x02\x02\u2BAB\u2BAC\tN\x02\x02\u2BAC\u0619\x03\x02\x02\x02\u2BAD" +
		"\u2BAF\x05\u061C\u030F\x02\u2BAE\u2BAD\x03\x02\x02\x02\u2BAF\u2BB2\x03" +
		"\x02\x02\x02\u2BB0\u2BAE\x03\x02\x02\x02\u2BB0\u2BB1\x03\x02\x02\x02\u2BB1" +
		"\u061B\x03\x02\x02\x02\u2BB2\u2BB0\x03\x02\x02\x02\u2BB3\u2BB4\x05\u05EE" +
		"\u02F8\x02\u2BB4\u2BB5\x07\t\x02\x02\u2BB5\u2BCF\x03\x02\x02\x02\u2BB6" +
		"\u2BCF\x05\u065E\u0330\x02\u2BB7\u2BCF\x05\u0662\u0332\x02\u2BB8\u2BCF" +
		"\x05\u0624\u0313\x02\u2BB9\u2BCF\x05\u0634\u031B\x02\u2BBA\u2BCF\x05\u063A" +
		"\u031E\x02\u2BBB\u2BCF\x05\u0644\u0323\x02\u2BBC\u2BCF\x05\u0646\u0324" +
		"\x02\u2BBD\u2BCF\x05\u0648\u0325\x02\u2BBE\u2BCF\x05\u0656\u032C\x02\u2BBF" +
		"\u2BCF\x05\u065A\u032E\x02\u2BC0\u2BCF\x05\u066E\u0338\x02\u2BC1\u2BCF" +
		"\x05\u0674\u033B\x02\u2BC2\u2BCF\x05\u0676\u033C\x02\u2BC3\u2BCF\x05\u061E" +
		"\u0310\x02\u2BC4\u2BCF\x05\u0620\u0311\x02\u2BC5\u2BCF\x05\u0626\u0314" +
		"\x02\u2BC6\u2BCF\x05\u067E\u0340\x02\u2BC7\u2BCF\x05\u068A\u0346\x02\u2BC8" +
		"\u2BCF\x05\u0692\u034A\x02\u2BC9\u2BCF\x05\u06A6\u0354\x02\u2BCA\u2BCF" +
		"\x05\u06A8\u0355\x02\u2BCB\u2BCF\x05\u06AA\u0356\x02\u2BCC\u2BCF\x05\u06AC" +
		"\u0357\x02\u2BCD\u2BCF\x05\u06B0\u0359\x02\u2BCE\u2BB3\x03\x02\x02\x02" +
		"\u2BCE\u2BB6\x03\x02\x02\x02\u2BCE\u2BB7\x03\x02\x02\x02\u2BCE\u2BB8\x03" +
		"\x02\x02\x02\u2BCE\u2BB9\x03\x02\x02\x02\u2BCE\u2BBA\x03\x02\x02\x02\u2BCE" +
		"\u2BBB\x03\x02\x02\x02\u2BCE\u2BBC\x03\x02\x02\x02\u2BCE\u2BBD\x03\x02" +
		"\x02\x02\u2BCE\u2BBE\x03\x02\x02\x02\u2BCE\u2BBF\x03\x02\x02\x02\u2BCE" +
		"\u2BC0\x03\x02\x02\x02\u2BCE\u2BC1\x03\x02\x02\x02\u2BCE\u2BC2\x03\x02" +
		"\x02\x02\u2BCE\u2BC3\x03\x02\x02\x02\u2BCE\u2BC4\x03\x02\x02\x02\u2BCE" +
		"\u2BC5\x03\x02\x02\x02\u2BCE\u2BC6\x03\x02\x02\x02\u2BCE\u2BC7\x03\x02" +
		"\x02\x02\u2BCE\u2BC8\x03\x02\x02\x02\u2BCE\u2BC9\x03\x02\x02\x02\u2BCE" +
		"\u2BCA\x03\x02\x02\x02\u2BCE\u2BCB\x03\x02\x02\x02\u2BCE\u2BCC\x03\x02" +
		"\x02\x02\u2BCE\u2BCD\x03\x02\x02\x02\u2BCF\u061D\x03\x02\x02\x02\u2BD0" +
		"\u2BD1\x07\u01F4\x02\x02\u2BD1\u2BD2\x05\u06CE\u0368\x02\u2BD2\u2BD3\x07" +
		"\t\x02\x02\u2BD3\u061F\x03\x02\x02\x02\u2BD4\u2BD5\x07\u01B3\x02\x02\u2BD5" +
		"\u2BDB\x05\u06C6\u0364\x02\u2BD6\u2BD7\x07\x04\x02\x02\u2BD7\u2BD8\x05" +
		"\u0622\u0312\x02\u2BD8\u2BD9\x07\x05\x02\x02\u2BD9\u2BDA\x07\t\x02\x02" +
		"\u2BDA\u2BDC\x03\x02\x02\x02\u2BDB\u2BD6\x03\x02\x02\x02\u2BDB\u2BDC\x03" +
		"\x02\x02\x02\u2BDC\u2BE5\x03\x02\x02\x02\u2BDD\u2BDE\x07;\x02\x02\u2BDE" +
		"\u2BDF\x05\u06C6\u0364\x02\u2BDF\u2BE0\x07\x04\x02\x02\u2BE0\u2BE1\x05" +
		"\u0622\u0312\x02\u2BE1\u2BE2\x07\x05\x02\x02\u2BE2\u2BE3\x07\t\x02\x02" +
		"\u2BE3\u2BE5\x03\x02\x02\x02\u2BE4\u2BD4\x03\x02\x02\x02\u2BE4\u2BDD\x03" +
		"\x02\x02\x02\u2BE5\u0621\x03\x02\x02\x02\u2BE6\u2BE9\x03\x02\x02\x02\u2BE7" +
		"\u2BE9\x05\u0532\u029A\x02\u2BE8\u2BE6\x03\x02\x02\x02\u2BE8\u2BE7\x03" +
		"\x02\x02\x02\u2BE9\u0623\x03\x02\x02\x02\u2BEA\u2BEB\x05\u0632\u031A\x02" +
		"\u2BEB\u2BEC\x05\u0618\u030D\x02\u2BEC\u2BED\x05\u06CA\u0366\x02\u2BED" +
		"\u2BEE\x07\t\x02\x02\u2BEE\u0625\x03\x02\x02\x02\u2BEF\u2BF0\x07\u01F5" +
		"\x02\x02\u2BF0\u2BF1\x05\u0628\u0315\x02\u2BF1\u2BF2\x07\u01F6\x02\x02" +
		"\u2BF2\u2BF3\x05\u062A\u0316\x02\u2BF3\u2BF4\x07\t\x02\x02\u2BF4\u0627" +
		"\x03\x02\x02\x02\u2BF5\u2BF9\x03\x02\x02\x02\u2BF6\u2BF9\x07\u01B4\x02" +
		"\x02\u2BF7\u2BF9\x07\u01F7\x02\x02\u2BF8\u2BF5\x03\x02\x02\x02\u2BF8\u2BF6" +
		"\x03\x02\x02\x02\u2BF8\u2BF7\x03\x02\x02\x02\u2BF9\u0629\x03\x02\x02\x02" +
		"\u2BFA\u2BFF\x05\u062C\u0317\x02\u2BFB\u2BFC\x07\b\x02\x02\u2BFC\u2BFE" +
		"\x05\u062C\u0317\x02\u2BFD\u2BFB\x03\x02\x02\x02\u2BFE\u2C01\x03\x02\x02" +
		"\x02\u2BFF\u2BFD\x03\x02\x02\x02\u2BFF\u2C00\x03\x02\x02\x02\u2C00\u062B" +
		"\x03\x02\x02\x02\u2C01\u2BFF\x03\x02\x02\x02\u2C02\u2C03\x05\u0630\u0319" +
		"\x02\u2C03\u2C04\x05\u0618\u030D\x02\u2C04\u2C05\x05\u062E\u0318\x02\u2C05" +
		"\u062D\x03\x02\x02\x02\u2C06\u2C07\x05\u05C4\u02E3\x02\u2C07\u062F\x03" +
		"\x02\x02\x02\u2C08\u2C09\x05\u0632\u031A\x02\u2C09\u0631\x03\x02\x02\x02" +
		"\u2C0A\u2C0D\x05\u0230\u0119\x02\u2C0B\u2C0D\x07\x1E\x02\x02\u2C0C\u2C0A" +
		"\x03\x02\x02\x02\u2C0C\u2C0B\x03\x02\x02\x02\u2C0D\u2C14\x03\x02\x02\x02" +
		"\u2C0E\u2C0F\x07\x06\x02\x02\u2C0F\u2C10\x05\u06D0\u0369\x02\u2C10\u2C11" +
		"\x07\x07\x02\x02\u2C11\u2C13\x03\x02\x02\x02\u2C12\u2C0E\x03\x02\x02\x02" +
		"\u2C13\u2C16\x03\x02\x02\x02\u2C14\u2C12\x03\x02\x02\x02\u2C14\u2C15\x03" +
		"\x02\x02\x02\u2C15\u0633\x03\x02\x02\x02\u2C16\u2C14\x03\x02\x02\x02\u2C17" +
		"\u2C18\x07\xDE\x02\x02\u2C18\u2C19\x05\u06CC\u0367\x02\u2C19\u2C1A\x07" +
		"_\x02\x02\u2C1A\u2C1B\x05\u061A\u030E\x02\u2C1B\u2C1C\x05\u0636\u031C" +
		"\x02\u2C1C\u2C1D\x05\u0638\u031D\x02\u2C1D\u2C1E\x07\u01C8\x02\x02\u2C1E" +
		"\u2C1F\x07\xDE\x02\x02\u2C1F\u2C20\x07\t\x02\x02\u2C20\u0635\x03\x02\x02" +
		"\x02\u2C21\u2C22\x07\u01F8\x02\x02\u2C22\u2C23\x05\u04BE\u0260\x02\u2C23" +
		"\u2C24\x07_\x02\x02\u2C24\u2C25\x05\u061A\u030E\x02\u2C25\u2C27\x03\x02" +
		"\x02\x02\u2C26\u2C21\x03\x02\x02\x02\u2C27\u2C2A\x03\x02\x02\x02\u2C28" +
		"\u2C26\x03\x02\x02\x02\u2C28\u2C29\x03\x02\x02\x02\u2C29\u0637\x03\x02" +
		"\x02\x02\u2C2A\u2C28\x03\x02\x02\x02\u2C2B\u2C2F\x03\x02\x02\x02\u2C2C" +
		"\u2C2D\x07<\x02\x02\u2C2D\u2C2F\x05\u061A\u030E\x02\u2C2E\u2C2B\x03\x02" +
		"\x02\x02\u2C2E\u2C2C\x03\x02\x02\x02\u2C2F\u0639\x03\x02\x02\x02\u2C30" +
		"\u2C31\x07*\x02\x02\u2C31\u2C32\x05\u063C\u031F\x02\u2C32\u2C33\x05\u063E" +
		"\u0320\x02\u2C33\u2C34\x05\u0642\u0322\x02\u2C34\u2C35\x07\u01C8\x02\x02" +
		"\u2C35\u2C36\x07*\x02\x02\u2C36\u2C37\x07\t\x02\x02\u2C37\u063B\x03\x02" +
		"\x02\x02\u2C38\u2C3B\x03\x02\x02\x02\u2C39\u2C3B\x05\u06CA\u0366\x02\u2C3A" +
		"\u2C38\x03\x02\x02\x02\u2C3A\u2C39\x03\x02\x02\x02\u2C3B\u063D\x03\x02" +
		"\x02\x02\u2C3C\u2C3E\x05\u0640\u0321\x02\u2C3D\u2C3C\x03\x02\x02\x02\u2C3E" +
		"\u2C3F\x03\x02\x02\x02\u2C3F\u2C3D\x03\x02\x02\x02\u2C3F\u2C40\x03\x02" +
		"\x02\x02\u2C40\u063F\x03\x02\x02\x02\u2C41\u2C42\x07h\x02\x02\u2C42\u2C43" +
		"\x05\u0532\u029A\x02\u2C43\u2C44\x07_\x02\x02\u2C44\u2C45\x05\u061A\u030E" +
		"\x02\u2C45\u0641\x03\x02\x02\x02\u2C46\u2C4A\x03\x02\x02\x02\u2C47\u2C48" +
		"\x07<\x02\x02\u2C48\u2C4A\x05\u061A\u030E\x02\u2C49\u2C46\x03\x02\x02" +
		"\x02\u2C49\u2C47\x03\x02\x02\x02\u2C4A\u0643\x03\x02\x02\x02\u2C4B\u2C4C" +
		"\x05\u06C0\u0361\x02\u2C4C\u2C4D\x05\u0672\u033A\x02\u2C4D\u0645\x03\x02" +
		"\x02\x02\u2C4E\u2C4F\x05\u06C0\u0361\x02\u2C4F\u2C50\x07\u01F9\x02\x02" +
		"\u2C50\u2C51\x05\u06D2\u036A\x02\u2C51\u2C52\x05\u0672\u033A\x02\u2C52" +
		"\u0647\x03\x02\x02\x02\u2C53\u2C54\x05\u06C0\u0361\x02\u2C54\u2C55\x07" +
		"@\x02\x02\u2C55\u2C56\x05\u064A\u0326\x02\u2C56\u2C57\x05\u0672\u033A" +
		"\x02\u2C57\u0649\x03\x02\x02\x02\u2C58\u2C59\x05\u0654\u032B\x02\u2C59" +
		"\u2C69\x07F\x02\x02\u2C5A\u2C5B\x05\u03E6\u01F4\x02\u2C5B\u2C5C\x05\u064E" +
		"\u0328\x02\u2C5C\u2C6A\x03\x02\x02\x02\u2C5D\u2C6A\x05\u03EC\u01F7\x02" +
		"\u2C5E\u2C6A\x05\u03A2\u01D2\x02\u2C5F\u2C60\x07\xCC\x02\x02\u2C60\u2C61" +
		"\x05\u04BE\u0260\x02\u2C61\u2C62\x05\u064C\u0327\x02\u2C62\u2C6A\x03\x02" +
		"\x02\x02\u2C63\u2C64\x05\u0650\u0329\x02\u2C64\u2C65\x05\u04BE\u0260\x02" +
		"\u2C65\u2C66\x07\x1A\x02\x02\u2C66\u2C67\x05\u04BE\u0260\x02\u2C67\u2C68" +
		"\x05\u0652\u032A\x02\u2C68\u2C6A\x03\x02\x02\x02\u2C69\u2C5A\x03\x02\x02" +
		"\x02\u2C69\u2C5D\x03\x02\x02\x02\u2C69\u2C5E\x03\x02\x02\x02\u2C69\u2C5F" +
		"\x03\x02\x02\x02\u2C69\u2C63\x03\x02\x02\x02\u2C6A\u064B\x03\x02\x02\x02" +
		"\u2C6B\u2C6F\x03\x02\x02\x02\u2C6C\u2C6D\x07f\x02\x02\u2C6D\u2C6F\x05" +
		"\u0532\u029A\x02\u2C6E\u2C6B\x03\x02\x02\x02\u2C6E\u2C6C\x03\x02\x02\x02" +
		"\u2C6F\u064D\x03\x02\x02\x02\u2C70\u2C7D\x03\x02\x02\x02\u2C71\u2C72\x07" +
		"\x04\x02\x02\u2C72\u2C77\x05\u04BE\u0260\x02\u2C73\u2C74\x07\b\x02\x02" +
		"\u2C74\u2C76\x05\u04BE\u0260\x02\u2C75\u2C73\x03\x02\x02\x02\u2C76\u2C79" +
		"\x03\x02\x02\x02\u2C77\u2C75\x03\x02\x02\x02\u2C77\u2C78\x03\x02\x02\x02" +
		"\u2C78\u2C7A\x03\x02\x02\x02\u2C79\u2C77\x03\x02\x02\x02\u2C7A\u2C7B\x07" +
		"\x05\x02\x02\u2C7B\u2C7D\x03\x02\x02\x02\u2C7C\u2C70\x03\x02\x02\x02\u2C7C" +
		"\u2C71\x03\x02\x02\x02\u2C7D\u064F\x03\x02\x02\x02\u2C7E\u2C81\x03\x02" +
		"\x02\x02\u2C7F\u2C81\x07\u01FA\x02\x02\u2C80\u2C7E\x03\x02\x02\x02\u2C80" +
		"\u2C7F\x03\x02\x02\x02\u2C81\u0651\x03\x02\x02\x02\u2C82\u2C86\x03\x02" +
		"\x02\x02\u2C83\u2C84\x07\x95\x02\x02\u2C84\u2C86\x05\u04BE\u0260\x02\u2C85" +
		"\u2C82\x03\x02\x02\x02\u2C85\u2C83\x03\x02\x02\x02\u2C86\u0653\x03\x02" +
		"\x02\x02\u2C87\u2C88\x05\u0228\u0115\x02\u2C88\u0655\x03\x02\x02\x02\u2C89" +
		"\u2C8A\x05\u06C0\u0361\x02\u2C8A\u2C8B\x07\u01FB\x02\x02\u2C8B\u2C8C\x05" +
		"\u0654\u032B\x02\u2C8C\u2C8D\x05\u0658\u032D\x02\u2C8D\u2C8E\x07F\x02" +
		"\x02\u2C8E\u2C8F\x07%\x02\x02\u2C8F\u2C90\x05\u04BE\u0260\x02\u2C90\u2C91" +
		"\x05\u0672\u033A\x02\u2C91\u0657\x03\x02\x02\x02\u2C92\u2C96\x03\x02\x02" +
		"\x02\u2C93\u2C94\x07\u01FC\x02\x02\u2C94\u2C96\x05\u05B2\u02DA\x02\u2C95" +
		"\u2C92\x03\x02\x02\x02\u2C95\u2C93\x03\x02\x02\x02\u2C96\u0659\x03\x02" +
		"\x02\x02\u2C97\u2C98\x05\u065C\u032F\x02\u2C98\u2C9A\x05\u06C2\u0362\x02" +
		"\u2C99\u2C9B\x05\u06C4\u0363\x02\u2C9A\u2C99\x03\x02\x02\x02\u2C9A\u2C9B" +
		"\x03\x02\x02\x02\u2C9B\u2C9C\x03\x02\x02\x02\u2C9C\u2C9D\x07\t\x02\x02" +
		"\u2C9D\u065B\x03\x02\x02\x02\u2C9E\u2C9F\tO\x02\x02\u2C9F\u065D\x03\x02" +
		"\x02\x02\u2CA0\u2CAC\x07\u01FE\x02\x02\u2CA1\u2CA2\x07\u010E\x02\x02\u2CA2" +
		"\u2CAD\x05\u06CA\u0366\x02\u2CA3\u2CA9\x07\u01FF\x02\x02\u2CA4\u2CA5\x07" +
		"\xCC\x02\x02\u2CA5\u2CA6\x05\u04BE\u0260\x02\u2CA6\u2CA7\x05\u064C\u0327" +
		"\x02\u2CA7\u2CAA\x03\x02\x02\x02\u2CA8\u2CAA\x05\u03EC\u01F7\x02\u2CA9" +
		"\u2CA4\x03\x02\x02\x02\u2CA9\u2CA8\x03\x02\x02\x02\u2CAA\u2CAD\x03\x02" +
		"\x02\x02\u2CAB\u2CAD\x05\u0660\u0331\x02\u2CAC\u2CA1\x03\x02\x02\x02\u2CAC" +
		"\u2CA3\x03\x02\x02\x02\u2CAC\u2CAB\x03\x02\x02\x02\u2CAD\u2CAE\x03\x02" +
		"\x02\x02\u2CAE\u2CAF\x07\t\x02\x02\u2CAF\u065F\x03\x02\x02\x02\u2CB0\u2CB3" +
		"\x03\x02\x02\x02\u2CB1\u2CB3\x05\u06CA\u0366\x02\u2CB2\u2CB0\x03\x02\x02" +
		"\x02\u2CB2\u2CB1\x03\x02\x02\x02\u2CB3\u0661\x03\x02\x02\x02\u2CB4\u2CB6" +
		"\x07\u0200\x02\x02\u2CB5\u2CB7\x05\u0664\u0333\x02\u2CB6\u2CB5\x03\x02" +
		"\x02\x02\u2CB6\u2CB7\x03\x02\x02\x02\u2CB7\u2CB8\x03\x02\x02\x02\u2CB8" +
		"\u2CB9\x05\u05B4\u02DB\x02\u2CB9\u2CBA\x05\u0666\u0334\x02\u2CBA\u2CBB" +
		"\x05\u0668\u0335\x02\u2CBB\u2CBC\x07\t\x02\x02\u2CBC\u2CD7\x03\x02\x02" +
		"\x02\u2CBD\u2CBF\x07\u0200\x02\x02\u2CBE\u2CC0\x05\u0664\u0333\x02\u2CBF" +
		"\u2CBE\x03\x02\x02\x02\u2CBF\u2CC0\x03\x02\x02\x02\u2CC0\u2CC1\x03\x02" +
		"\x02\x02\u2CC1\u2CC2\x05\u05D6\u02EC\x02\u2CC2\u2CC3\x05\u0668\u0335\x02" +
		"\u2CC3\u2CC4\x07\t\x02\x02\u2CC4\u2CD7\x03\x02\x02\x02\u2CC5\u2CC7\x07" +
		"\u0200\x02\x02\u2CC6\u2CC8\x05\u0664\u0333\x02\u2CC7\u2CC6\x03\x02\x02" +
		"\x02\u2CC7\u2CC8\x03\x02\x02\x02\u2CC8\u2CC9\x03\x02\x02\x02\u2CC9\u2CCA" +
		"\x07\u0201\x02\x02\u2CCA\u2CCB\x05\u05B4\u02DB\x02\u2CCB\u2CCC\x05\u0668" +
		"\u0335\x02\u2CCC\u2CCD\x07\t\x02\x02\u2CCD\u2CD7\x03\x02\x02\x02\u2CCE" +
		"\u2CD0\x07\u0200\x02\x02\u2CCF\u2CD1\x05\u0664\u0333\x02\u2CD0\u2CCF\x03" +
		"\x02\x02\x02\u2CD0\u2CD1\x03\x02\x02\x02\u2CD1\u2CD2\x03\x02\x02\x02\u2CD2" +
		"\u2CD3\x05\u0668\u0335\x02\u2CD3\u2CD4\x07\t\x02\x02\u2CD4\u2CD7\x03\x02" +
		"\x02\x02\u2CD5\u2CD7\x07\u0200\x02\x02\u2CD6\u2CB4\x03\x02\x02\x02\u2CD6" +
		"\u2CBD\x03\x02\x02\x02\u2CD6\u2CC5\x03\x02\x02\x02\u2CD6\u2CCE\x03\x02" +
		"\x02\x02\u2CD6\u2CD5\x03\x02\x02\x02\u2CD7\u0663\x03\x02\x02\x02\u2CD8" +
		"\u2CD9\tP\x02\x02\u2CD9\u0665\x03\x02\x02\x02\u2CDA\u2CE2\x03\x02\x02" +
		"\x02\u2CDB\u2CDC\x07\b\x02\x02\u2CDC\u2CDE\x05\u04BE\u0260\x02\u2CDD\u2CDB" +
		"\x03\x02\x02\x02\u2CDE\u2CDF\x03\x02\x02\x02\u2CDF\u2CDD\x03\x02\x02\x02" +
		"\u2CDF\u2CE0\x03\x02\x02\x02\u2CE0\u2CE2\x03\x02\x02\x02\u2CE1\u2CDA\x03" +
		"\x02\x02\x02\u2CE1\u2CDD\x03\x02\x02\x02\u2CE2\u0667\x03\x02\x02\x02\u2CE3" +
		"\u2CE7\x03\x02\x02\x02\u2CE4\u2CE5\x07f\x02\x02\u2CE5\u2CE7\x05\u066C" +
		"\u0337\x02\u2CE6\u2CE3\x03\x02\x02\x02\u2CE6\u2CE4\x03\x02\x02\x02\u2CE7" +
		"\u0669\x03\x02\x02\x02\u2CE8\u2CE9\x05\u05D6\u02EC\x02\u2CE9\u2CEA\x07" +
		"\f\x02\x02\u2CEA\u2CEB\x05\u04BE\u0260\x02\u2CEB\u066B\x03\x02\x02\x02" +
		"\u2CEC\u2CF1\x05\u066A\u0336\x02\u2CED\u2CEE\x07\b\x02\x02\u2CEE\u2CF0" +
		"\x05\u066A\u0336\x02\u2CEF\u2CED\x03\x02\x02\x02\u2CF0\u2CF3\x03\x02\x02" +
		"\x02\u2CF1\u2CEF\x03\x02\x02\x02\u2CF1\u2CF2\x03\x02\x02\x02\u2CF2\u066D" +
		"\x03\x02\x02\x02\u2CF3\u2CF1\x03\x02\x02\x02\u2CF4\u2CF5\x07\u0208\x02" +
		"\x02\u2CF5\u2CF6\x05\u06CA\u0366\x02\u2CF6\u2CF7\x05\u0670\u0339\x02\u2CF7" +
		"\u2CF8\x07\t\x02\x02\u2CF8\u066F\x03\x02\x02\x02\u2CF9\u2CFD\x03\x02\x02" +
		"\x02\u2CFA\u2CFB\x07\b\x02\x02\u2CFB\u2CFD\x05\u06CA\u0366\x02\u2CFC\u2CF9" +
		"\x03\x02\x02\x02\u2CFC\u2CFA\x03\x02\x02\x02\u2CFD\u0671\x03\x02\x02\x02" +
		"\u2CFE\u2CFF\x07\u0209\x02\x02\u2CFF\u2D00\x05\u061A\u030E\x02\u2D00\u2D01" +
		"\x07\u01C8\x02\x02\u2D01\u2D02\x07\u0209\x02\x02\u2D02\u2D03\x05\u06C2" +
		"\u0362\x02\u2D03\u2D04\x07\t\x02\x02\u2D04\u0673\x03\x02\x02\x02\u2D05" +
		"\u2D06\x05\u06D4\u036B\x02\u2D06\u2D07\x07\t\x02\x02\u2D07\u0675\x03\x02" +
		"\x02\x02\u2D08\u2D09\x07\xCC\x02\x02\u2D09\u2D11\x05\u04BE\u0260\x02\u2D0A" +
		"\u2D0B\x05\u067C\u033F\x02\u2D0B\u2D0C\x05\u0678\u033D\x02\u2D0C\u2D12" +
		"\x03\x02\x02\x02\u2D0D\u2D0E\x05\u0678\u033D\x02\u2D0E\u2D0F\x05\u067C" +
		"\u033F\x02\u2D0F\u2D12\x03\x02\x02\x02\u2D10\u2D12\x03\x02\x02\x02\u2D11" +
		"\u2D0A\x03\x02\x02\x02\u2D11\u2D0D\x03\x02\x02\x02\u2D11\u2D10\x03\x02" +
		"\x02\x02\u2D12\u2D13\x03\x02\x02\x02\u2D13\u2D14\x07\t\x02\x02\u2D14\u0677" +
		"\x03\x02\x02\x02\u2D15\u2D19\x03\x02\x02\x02\u2D16\u2D17\x07f\x02\x02" +
		"\u2D17\u2D19\x05\u067A\u033E\x02\u2D18\u2D15\x03\x02\x02\x02\u2D18\u2D16" +
		"\x03\x02\x02\x02\u2D19\u0679\x03\x02\x02\x02\u2D1A\u2D1F\x05\u04BE\u0260" +
		"\x02\u2D1B\u2D1C\x07\b\x02\x02\u2D1C\u2D1E\x05\u04BE\u0260\x02\u2D1D\u2D1B" +
		"\x03\x02\x02\x02\u2D1E\u2D21\x03\x02\x02\x02\u2D1F\u2D1D\x03\x02\x02\x02" +
		"\u2D1F\u2D20\x03\x02\x02\x02\u2D20\u067B\x03\x02\x02\x02\u2D21\u2D1F\x03" +
		"\x02\x02\x02\u2D22\u2D29\x03\x02\x02\x02\u2D23\u2D25\x07I\x02\x02\u2D24" +
		"\u2D26\x07\u015C\x02\x02\u2D25\u2D24\x03\x02\x02\x02\u2D25\u2D26\x03\x02" +
		"\x02\x02\u2D26\u2D27\x03\x02\x02\x02\u2D27\u2D29\x05\u068C\u0347\x02\u2D28" +
		"\u2D22\x03\x02\x02\x02\u2D28\u2D23\x03\x02\x02\x02\u2D29\u067D\x03\x02" +
		"\x02\x02\u2D2A\u2D3C\x07\u020A\x02\x02\u2D2B\u2D2C\x05\u06B2\u035A\x02" +
		"\u2D2C\u2D2D\x05\u0686\u0344\x02\u2D2D\u2D33\x07@\x02\x02\u2D2E\u2D34" +
		"\x05\u03EC\u01F7\x02\u2D2F\u2D30\x07\xCC\x02\x02\u2D30\u2D31\x05\u06CA" +
		"\u0366\x02\u2D31\u2D32\x05\u0684\u0343\x02\u2D32\u2D34\x03\x02\x02\x02" +
		"\u2D33\u2D2E\x03\x02\x02\x02\u2D33\u2D2F\x03\x02\x02\x02\u2D34\u2D3D\x03" +
		"\x02\x02\x02\u2D35\u2D3A\x05\u05C4\u02E3\x02\u2D36\u2D37\x07\x04\x02\x02" +
		"\u2D37\u2D38\x05\u0682\u0342\x02\u2D38\u2D39\x07\x05\x02\x02\u2D39\u2D3B" +
		"\x03\x02\x02\x02\u2D3A\u2D36\x03\x02\x02\x02\u2D3A\u2D3B\x03\x02\x02\x02" +
		"\u2D3B\u2D3D\x03\x02\x02\x02\u2D3C\u2D2B\x03\x02\x02\x02\u2D3C\u2D35\x03" +
		"\x02\x02\x02\u2D3D\u2D3E\x03\x02\x02\x02\u2D3E\u2D3F\x07\t\x02\x02\u2D3F" +
		"\u067F\x03\x02\x02\x02\u2D40\u2D41\x05\u05C4\u02E3\x02\u2D41\u2D42\x07" +
		"\x16\x02\x02\u2D42\u2D43\x05\u04BE\u0260\x02\u2D43\u2D46\x03\x02\x02\x02" +
		"\u2D44\u2D46\x05\u04BE\u0260\x02\u2D45\u2D40\x03\x02\x02\x02\u2D45\u2D44" +
		"\x03\x02\x02\x02\u2D46\u0681\x03\x02\x02\x02\u2D47\u2D4C\x05\u0680\u0341" +
		"\x02\u2D48\u2D49\x07\b\x02\x02\u2D49\u2D4B\x05\u0680\u0341\x02\u2D4A\u2D48" +
		"\x03\x02\x02\x02\u2D4B\u2D4E\x03\x02\x02\x02\u2D4C\u2D4A\x03\x02\x02\x02" +
		"\u2D4C\u2D4D\x03\x02\x02\x02\u2D4D\u0683\x03\x02\x02\x02\u2D4E\u2D4C\x03" +
		"\x02\x02\x02\u2D4F\u2D53\x03\x02\x02\x02\u2D50\u2D51\x07f\x02\x02\u2D51" +
		"\u2D53\x05\u0532\u029A\x02\u2D52\u2D4F\x03\x02\x02\x02\u2D52\u2D50\x03" +
		"\x02\x02\x02\u2D53\u0685\x03\x02\x02\x02\u2D54\u2D59\x03\x02\x02\x02\u2D55" +
		"\u2D56\x05\u0688\u0345\x02\u2D56\u2D57\x07\u0146\x02\x02\u2D57\u2D59\x03" +
		"\x02\x02\x02\u2D58\u2D54\x03\x02\x02\x02\u2D58\u2D55\x03\x02\x02\x02\u2D59" +
		"\u0687\x03\x02\x02\x02\u2D5A\u2D5D\x03\x02\x02\x02\u2D5B\u2D5D\x07\u010F" +
		"\x02\x02\u2D5C\u2D5A\x03\x02\x02\x02\u2D5C\u2D5B\x03\x02\x02\x02\u2D5D" +
		"\u0689\x03\x02\x02\x02";
	private static readonly _serializedATNSegment21: string =
		"\u2D5E\u2D60\x07?\x02\x02\u2D5F\u2D61\x05\u0690\u0349\x02\u2D60\u2D5F" +
		"\x03\x02\x02\x02\u2D60\u2D61\x03\x02\x02\x02\u2D61\u2D62\x03\x02\x02\x02" +
		"\u2D62\u2D63\x05\u068E\u0348\x02\u2D63\u2D64\x05\u06B2\u035A\x02\u2D64" +
		"\u2D65\x07I\x02\x02\u2D65\u2D66\x05\u068C\u0347\x02\u2D66\u2D67\x07\t" +
		"\x02\x02\u2D67\u068B\x03\x02\x02\x02\u2D68\u2D69\x05\u0532\u029A\x02\u2D69" +
		"\u068D\x03\x02\x02\x02\u2D6A\u2D6E\x03\x02\x02\x02\u2D6B\u2D6E\x07B\x02" +
		"\x02\u2D6C\u2D6E\x07F\x02\x02\u2D6D\u2D6A\x03\x02\x02\x02\u2D6D\u2D6B" +
		"\x03\x02\x02\x02\u2D6D\u2D6C\x03\x02\x02\x02\u2D6E\u068F\x03\x02\x02\x02" +
		"\u2D6F\u2D7F\x07\u010E\x02\x02\u2D70\u2D7F\x07\u0127\x02\x02\u2D71\u2D7F" +
		"\x07\xD1\x02\x02\u2D72\u2D7F\x07\xFB\x02\x02\u2D73\u2D74\x07\x84\x02\x02" +
		"\u2D74\u2D7F\x05\u04BE\u0260\x02\u2D75\u2D76\x07\u0135\x02\x02\u2D76\u2D7F" +
		"\x05\u04BE\u0260\x02\u2D77\u2D7F\x05\u04BE\u0260\x02\u2D78\u2D7F\x07 " +
		"\x02\x02\u2D79\u2D7C\tQ\x02\x02\u2D7A\u2D7D\x05\u04BE\u0260\x02\u2D7B" +
		"\u2D7D\x07 \x02\x02\u2D7C\u2D7A\x03\x02\x02\x02\u2D7C\u2D7B\x03\x02\x02" +
		"\x02\u2D7C\u2D7D\x03\x02\x02\x02\u2D7D\u2D7F\x03\x02\x02\x02\u2D7E\u2D6F" +
		"\x03\x02\x02\x02\u2D7E\u2D70\x03\x02\x02\x02\u2D7E\u2D71\x03\x02\x02\x02" +
		"\u2D7E\u2D72\x03\x02\x02\x02\u2D7E\u2D73\x03\x02\x02\x02\u2D7E\u2D75\x03" +
		"\x02\x02\x02\u2D7E\u2D77\x03\x02\x02\x02\u2D7E\u2D78\x03\x02\x02\x02\u2D7E" +
		"\u2D79\x03\x02\x02\x02\u2D7F\u0691\x03\x02\x02\x02\u2D80\u2D82\x07\u010B" +
		"\x02\x02\u2D81\u2D83\x05\u0690\u0349\x02\u2D82\u2D81\x03\x02\x02\x02\u2D82" +
		"\u2D83\x03\x02\x02\x02\u2D83\u2D84\x03\x02\x02\x02\u2D84\u2D85\x05\u06B2" +
		"\u035A\x02\u2D85\u2D86\x07\t\x02\x02\u2D86\u0693\x03\x02\x02\x02\u2D87" +
		"\u2D89\x05\u03FA\u01FE\x02\u2D88\u2D87\x03\x02\x02\x02\u2D88\u2D89\x03" +
		"\x02\x02\x02\u2D89\u2D8A\x03\x02\x02\x02\u2D8A\u2D8B\x07\u020F\x02\x02" +
		"\u2D8B\u2D8D\x07I\x02\x02\u2D8C\u2D8E\x07S\x02\x02\u2D8D\u2D8C\x03\x02" +
		"\x02\x02\u2D8D\u2D8E\x03\x02\x02\x02\u2D8E\u2D8F\x03\x02\x02\x02\u2D8F" +
		"\u2D91\x05\u0580\u02C1\x02\u2D90\u2D92\x07\v\x02\x02\u2D91\u2D90\x03\x02" +
		"\x02\x02\u2D91\u2D92\x03\x02\x02\x02\u2D92\u2D97\x03\x02\x02\x02\u2D93" +
		"\u2D95\x07&\x02\x02\u2D94\u2D93\x03\x02\x02\x02\u2D94\u2D95\x03\x02\x02" +
		"\x02\u2D95\u2D96\x03\x02\x02\x02\u2D96\u2D98\x05\u05C4\u02E3\x02\u2D97" +
		"\u2D94\x03\x02\x02\x02\u2D97\u2D98\x03\x02\x02\x02\u2D98\u2D99\x03\x02" +
		"\x02\x02\u2D99\u2D9A\x07f\x02\x02\u2D9A\u2D9B\x05\u0696\u034C\x02\u2D9B" +
		"\u2D9C\x07R\x02\x02\u2D9C\u2D9E\x05\u0698\u034D\x02\u2D9D\u2D9F\x05\u069A" +
		"\u034E\x02\u2D9E\u2D9D\x03\x02\x02\x02\u2D9F\u2DA0\x03\x02\x02\x02\u2DA0" +
		"\u2D9E\x03\x02\x02\x02\u2DA0\u2DA1\x03\x02\x02\x02\u2DA1\u0695\x03\x02" +
		"\x02\x02\u2DA2\u2DA4\x07S\x02\x02\u2DA3\u2DA2\x03\x02\x02\x02\u2DA3\u2DA4" +
		"\x03\x02\x02\x02\u2DA4\u2DA5\x03\x02\x02\x02\u2DA5\u2DA7\x05\u0580\u02C1" +
		"\x02\u2DA6\u2DA8\x07\v\x02\x02\u2DA7\u2DA6\x03\x02\x02\x02\u2DA7\u2DA8" +
		"\x03\x02\x02\x02\u2DA8\u2DAE\x03\x02\x02\x02\u2DA9\u2DAC\x05\u03F0\u01F9" +
		"\x02\u2DAA\u2DAC\x05\u0450\u0229\x02\u2DAB\u2DA9\x03\x02\x02\x02\u2DAB" +
		"\u2DAA\x03\x02\x02\x02\u2DAC\u2DAE\x03\x02\x02\x02\u2DAD\u2DA3\x03\x02" +
		"\x02\x02\u2DAD\u2DAB\x03\x02\x02\x02\u2DAE\u2DB3\x03\x02\x02\x02\u2DAF" +
		"\u2DB1\x07&\x02\x02\u2DB0\u2DAF\x03\x02\x02\x02\u2DB0\u2DB1\x03\x02\x02" +
		"\x02\u2DB1\u2DB2\x03\x02\x02\x02\u2DB2\u2DB4\x05\u05C4\u02E3\x02\u2DB3" +
		"\u2DB0\x03\x02\x02\x02\u2DB3\u2DB4\x03\x02\x02\x02\u2DB4\u0697\x03\x02" +
		"\x02\x02\u2DB5\u2DB6\x05\u04BE\u0260\x02\u2DB6\u0699\x03\x02\x02\x02\u2DB7" +
		"\u2DB8\x07h\x02\x02\u2DB8\u2DBB\x07\u0210\x02\x02\u2DB9\u2DBA\x07#\x02" +
		"\x02\u2DBA\u2DBC\x05\u04BE\u0260\x02\u2DBB\u2DB9\x03\x02\x02\x02\u2DBB" +
		"\u2DBC\x03\x02\x02\x02\u2DBC\u2DBD\x03\x02\x02\x02\u2DBD\u2DC2\x07_\x02" +
		"\x02\u2DBE\u2DC3\x05\u069E\u0350\x02\u2DBF\u2DC3\x07\xB8\x02\x02\u2DC0" +
		"\u2DC1\x07;\x02\x02\u2DC1\u2DC3\x07\u0110\x02\x02\u2DC2\u2DBE\x03\x02" +
		"\x02\x02\u2DC2\u2DBF\x03\x02\x02\x02\u2DC2\u2DC0\x03\x02\x02\x02\u2DC3" +
		"\u2DD2\x03\x02\x02\x02\u2DC4\u2DC5\x07h\x02\x02\u2DC5\u2DC6\x07O\x02\x02" +
		"\u2DC6\u2DC9\x07\u0210\x02\x02\u2DC7\u2DC8\x07#\x02\x02\u2DC8\u2DCA\x05" +
		"\u04BE\u0260\x02\u2DC9\u2DC7\x03\x02\x02\x02\u2DC9\u2DCA\x03\x02\x02\x02" +
		"\u2DCA\u2DCB\x03\x02\x02\x02\u2DCB\u2DCF\x07_\x02\x02\u2DCC\u2DD0\x05" +
		"\u069C\u034F\x02\u2DCD\u2DCE\x07;\x02\x02\u2DCE\u2DD0\x07\u0110\x02\x02" +
		"\u2DCF\u2DCC\x03\x02\x02\x02\u2DCF\u2DCD\x03\x02\x02\x02\u2DD0\u2DD2\x03" +
		"\x02\x02\x02\u2DD1\u2DB7\x03\x02\x02\x02\u2DD1\u2DC4\x03\x02\x02\x02\u2DD2" +
		"\u069B\x03\x02\x02\x02\u2DD3\u2DD8\x07\xF3\x02\x02\u2DD4\u2DD5\x07\x04" +
		"\x02\x02\u2DD5\u2DD6\x05\xF6|\x02\u2DD6\u2DD7\x07\x05\x02\x02\u2DD7\u2DD9" +
		"\x03\x02\x02\x02\u2DD8\u2DD4\x03\x02\x02\x02\u2DD8\u2DD9\x03\x02\x02\x02" +
		"\u2DD9\u2DDD\x03\x02\x02\x02\u2DDA\u2DDB\x07\u01D1\x02\x02\u2DDB\u2DDC" +
		"\t1\x02\x02\u2DDC\u2DDE\x07\u01C4\x02\x02\u2DDD\u2DDA\x03\x02\x02\x02" +
		"\u2DDD\u2DDE\x03\x02\x02\x02\u2DDE\u2DDF\x03\x02\x02\x02\u2DDF\u2DE0\x05" +
		"\u06A0\u0351\x02\u2DE0\u069D\x03\x02\x02\x02\u2DE1\u2DE2\x07\u0173\x02" +
		"\x02\u2DE2\u2DEF\x07\u014F\x02\x02\u2DE3\u2DE4\x05\u059A\u02CE\x02\u2DE4" +
		"\u2DE5\x07\f\x02\x02\u2DE5\u2DE6\x05\u06A4\u0353\x02\u2DE6\u2DF0\x03\x02" +
		"\x02\x02\u2DE7\u2DE8\x07\x04\x02\x02\u2DE8\u2DE9\x05\xF6|\x02\u2DE9\u2DEA" +
		"\x07\x05\x02\x02\u2DEA\u2DEB\x07\f\x02\x02\u2DEB\u2DEC\x07\x04\x02\x02" +
		"\u2DEC\u2DED\x05\u06A2\u0352\x02\u2DED\u2DEE\x07\x05\x02\x02\u2DEE\u2DF0" +
		"\x03\x02\x02\x02\u2DEF\u2DE3\x03\x02\x02\x02\u2DEF\u2DE7\x03\x02\x02\x02" +
		"\u2DF0\u2DF1\x03\x02\x02\x02\u2DF1\u2DEF\x03\x02\x02\x02\u2DF1\u2DF2\x03" +
		"\x02\x02\x02\u2DF2\u069F\x03\x02\x02\x02\u2DF3\u2DF4\x07\u01A8\x02\x02" +
		"\u2DF4\u2DF8\x05\u06A2\u0352\x02\u2DF5\u2DF6\x077\x02\x02\u2DF6\u2DF8" +
		"\x07\u01A8\x02\x02\u2DF7\u2DF3\x03\x02\x02\x02\u2DF7\u2DF5\x03\x02\x02" +
		"\x02\u2DF8\u06A1\x03\x02\x02\x02\u2DF9\u2DFA\x07\x04\x02\x02\u2DFA\u2DFF" +
		"\x05\u06A4\u0353\x02\u2DFB\u2DFC\x07\b\x02\x02\u2DFC\u2DFE\x05\u06A4\u0353" +
		"\x02\u2DFD\u2DFB\x03\x02\x02\x02\u2DFE\u2E01\x03\x02\x02\x02\u2DFF\u2DFD" +
		"\x03\x02\x02\x02\u2DFF\u2E00\x03\x02\x02\x02\u2E00\u2E02\x03\x02\x02\x02" +
		"\u2E01\u2DFF\x03\x02\x02\x02\u2E02\u2E03\x07\x05\x02\x02\u2E03\u06A3\x03" +
		"\x02\x02\x02\u2E04\u2E07\x05\u041C\u020F\x02\u2E05\u2E07\x077\x02\x02" +
		"\u2E06\u2E04\x03\x02\x02\x02\u2E06\u2E05\x03\x02\x02\x02\u2E07\u06A5\x03" +
		"\x02\x02\x02\u2E08\u2E09\x07\x9F\x02\x02\u2E09\u2E0A\x05\u06B2\u035A\x02" +
		"\u2E0A\u2E0B\x07\t\x02\x02\u2E0B\u06A7\x03\x02\x02\x02\u2E0C\u2E0D\x07" +
		"P\x02\x02\u2E0D\u2E0E\x07\t\x02\x02\u2E0E\u06A9\x03\x02\x02\x02\u2E0F" +
		"\u2E11\x07\xA3\x02\x02\u2E10\u2E12\x05\u06AE\u0358\x02\u2E11\u2E10\x03" +
		"\x02\x02\x02\u2E11\u2E12\x03\x02\x02\x02\u2E12\u2E13\x03\x02\x02\x02\u2E13" +
		"\u2E14\x07\t\x02\x02\u2E14\u06AB\x03\x02\x02\x02\u2E15\u2E17\x07\u0141" +
		"\x02\x02\u2E16\u2E18\x05\u06AE\u0358\x02\u2E17\u2E16\x03\x02\x02\x02\u2E17" +
		"\u2E18\x03\x02\x02\x02\u2E18\u2E19\x03\x02\x02\x02\u2E19\u2E1A\x07\t\x02" +
		"\x02\u2E1A\u06AD\x03\x02\x02\x02\u2E1B\u2E1D\x07#\x02\x02\u2E1C\u2E1E" +
		"\x07\u010F\x02\x02\u2E1D\u2E1C\x03\x02\x02\x02\u2E1D\u2E1E\x03\x02\x02" +
		"\x02\u2E1E\u2E1F\x03\x02\x02\x02\u2E1F\u2E20\x07\x9B\x02\x02\u2E20\u06AF" +
		"\x03\x02\x02\x02\u2E21\u2E22\x07\u014F\x02\x02\u2E22\u2E23\x05\u0230\u0119" +
		"\x02\u2E23\u2E24\x07`\x02\x02\u2E24\u2E25\x077\x02\x02\u2E25\u2E26\x07" +
		"\t\x02\x02\u2E26\u2E2E\x03\x02\x02\x02\u2E27\u2E2A\x07\u013B\x02\x02\u2E28" +
		"\u2E2B\x05\u0230\u0119\x02\u2E29\u2E2B\x07 \x02\x02\u2E2A\u2E28\x03\x02" +
		"\x02\x02\u2E2A\u2E29\x03\x02\x02\x02\u2E2B\u2E2C\x03\x02\x02\x02\u2E2C" +
		"\u2E2E\x07\t\x02\x02\u2E2D\u2E21\x03\x02\x02\x02\u2E2D\u2E27\x03\x02\x02" +
		"\x02\u2E2E\u06B1\x03\x02\x02\x02\u2E2F\u2E32\x05\u05C4\u02E3\x02\u2E30" +
		"\u2E32\x07\x1E\x02\x02\u2E31\u2E2F\x03\x02\x02\x02\u2E31\u2E30\x03\x02" +
		"\x02\x02\u2E32\u06B3\x03\x02\x02\x02\u2E33\u2E37\x03\x02\x02\x02\u2E34" +
		"\u2E35\x07\u0207\x02\x02\u2E35\u2E37\x05\u06B6\u035C\x02\u2E36\u2E33\x03" +
		"\x02\x02\x02\u2E36\u2E34\x03\x02\x02\x02\u2E37\u06B5\x03\x02\x02\x02\u2E38" +
		"\u2E3A\x05\u06B8\u035D\x02\u2E39\u2E38\x03\x02\x02\x02\u2E3A\u2E3B\x03" +
		"\x02\x02\x02\u2E3B\u2E39\x03\x02\x02\x02\u2E3B\u2E3C\x03\x02\x02\x02\u2E3C" +
		"\u06B7\x03\x02\x02\x02\u2E3D\u2E3E\x07h\x02\x02\u2E3E\u2E3F\x05\u06BA" +
		"\u035E\x02\u2E3F\u2E40\x07_\x02\x02\u2E40\u2E41\x05\u061A\u030E\x02\u2E41" +
		"\u06B9\x03\x02\x02\x02\u2E42\u2E47\x05\u06BC\u035F\x02\u2E43\u2E44\x07" +
		"T\x02\x02\u2E44\u2E46\x05\u06BC\u035F\x02\u2E45\u2E43\x03\x02\x02\x02" +
		"\u2E46\u2E49\x03\x02\x02\x02\u2E47\u2E45\x03\x02\x02\x02\u2E47\u2E48\x03" +
		"\x02\x02\x02\u2E48\u06BB\x03\x02\x02\x02\u2E49\u2E47\x03\x02\x02\x02\u2E4A" +
		"\u2E4E\x05\u06C6\u0364\x02\u2E4B\u2E4C\x07\u0201\x02\x02\u2E4C\u2E4E\x05" +
		"\u05B4\u02DB\x02\u2E4D\u2E4A\x03\x02\x02\x02\u2E4D\u2E4B\x03\x02\x02\x02" +
		"\u2E4E\u06BD\x03\x02\x02\x02\u2E4F\u2E52\x03\x02\x02\x02\u2E50\u2E52\x05" +
		"\u05F6\u02FC\x02\u2E51\u2E4F\x03\x02\x02\x02\u2E51\u2E50\x03\x02\x02\x02" +
		"\u2E52\u06BF\x03\x02\x02\x02\u2E53\u2E56\x03\x02\x02\x02\u2E54\u2E56\x05" +
		"\u05F6\u02FC\x02\u2E55\u2E53\x03\x02\x02\x02\u2E55\u2E54\x03\x02\x02\x02" +
		"\u2E56\u06C1\x03\x02\x02\x02\u2E57\u2E5A\x03\x02\x02\x02\u2E58\u2E5A\x05" +
		"\u06C6\u0364\x02\u2E59\u2E57\x03\x02\x02\x02\u2E59\u2E58\x03\x02\x02\x02" +
		"\u2E5A\u06C3\x03\x02\x02\x02\u2E5B\u2E5C\x07h\x02\x02\u2E5C\u2E5D\x05" +
		"\u06CE\u0368\x02\u2E5D\u06C5\x03\x02\x02\x02\u2E5E\u2E61\x05\u05C4\u02E3" +
		"\x02\u2E5F\u2E61\x05\u06C8\u0365\x02\u2E60\u2E5E\x03\x02\x02\x02\u2E60" +
		"\u2E5F\x03\x02\x02\x02\u2E61\u06C7\x03\x02\x02\x02\u2E62\u2E63\tR\x02" +
		"\x02\u2E63\u06C9\x03\x02\x02\x02\u2E64\u2E66\x05\u056A\u02B6\x02\u2E65" +
		"\u2E64\x03\x02\x02\x02\u2E65\u2E66\x03\x02\x02\x02\u2E66\u2E68\x03\x02" +
		"\x02\x02\u2E67\u2E69\x05\u0408\u0205\x02\u2E68\u2E67\x03\x02\x02\x02\u2E68" +
		"\u2E69\x03\x02\x02\x02\u2E69\u2E6B\x03\x02\x02\x02\u2E6A\u2E6C\x05\u0452" +
		"\u022A\x02\u2E6B\u2E6A\x03\x02\x02\x02\u2E6B\u2E6C\x03\x02\x02\x02\u2E6C" +
		"\u2E6E\x03\x02\x02\x02\u2E6D\u2E6F\x05\u047A\u023E\x02\u2E6E\u2E6D\x03" +
		"\x02\x02\x02\u2E6E\u2E6F\x03\x02\x02\x02\u2E6F\u2E71\x03\x02\x02\x02\u2E70" +
		"\u2E72\x05\u0434\u021B\x02\u2E71\u2E70\x03\x02\x02\x02\u2E71\u2E72\x03" +
		"\x02\x02\x02\u2E72\u2E74\x03\x02\x02\x02\u2E73\u2E75\x05\u0442\u0222\x02" +
		"\u2E74\u2E73\x03\x02\x02\x02\u2E74\u2E75\x03\x02\x02\x02\u2E75\u2E77\x03" +
		"\x02\x02\x02\u2E76\u2E78\x05\u050A\u0286\x02\u2E77\u2E76\x03\x02\x02\x02" +
		"\u2E77\u2E78\x03\x02\x02\x02\u2E78\u06CB\x03\x02\x02\x02\u2E79\u2E7A\x05" +
		"\u06CA\u0366\x02\u2E7A\u06CD\x03\x02\x02\x02\u2E7B\u2E7C\x05\u06CA\u0366" +
		"\x02\u2E7C\u06CF\x03\x02\x02\x02\u2E7D\u2E7E\x05\u04BE\u0260\x02\u2E7E" +
		"\u06D1\x03\x02\x02\x02\u2E7F\u2E80\x05\u04BE\u0260\x02\u2E80\u06D3\x03" +
		"\x02\x02\x02\u2E81\u2E83\x05\b\x05\x02\u2E82\u2E84\x05\u06D6\u036C\x02" +
		"\u2E83\u2E82\x03\x02\x02\x02\u2E83\u2E84\x03\x02\x02\x02\u2E84\u06D5\x03" +
		"\x02\x02\x02\u2E85\u2E86\x07I\x02\x02\u2E86\u2E87\x05\u040A\u0206\x02" +
		"\u2E87\u2E88\x05\u068C\u0347\x02\u2E88\u06D7\x03\x02\x02\x02\u04FD\u06DB" +
		"\u06E4\u075B\u075F\u0768\u0771\u0777\u077D\u079D\u07A9\u07AF\u07B7\u07BF" +
		"\u07C5\u07CE\u07D4\u07E0\u07E6\u07EC\u07F3\u07F7\u07FC\u0800\u080D\u0818" +
		"\u081E\u082E\u0831\u0836\u083C\u0841\u084A\u084E\u085A\u085E\u0861\u0865" +
		"\u0875\u0882\u0889\u0891\u0896\u089D\u08A3\u08A9\u08B0\u08BB\u08BF\u08C3" +
		"\u08C7\u08D4\u08D8\u08DD\u08E2\u08EE\u08F7\u0903\u0908\u0913\u0919\u091E" +
		"\u0928\u092D\u0934\u0939\u093E\u0949\u094F\u0954\u095C\u0965\u0974\u097A" +
		"\u0980\u0985\u098C\u0998\u09A0\u09A8\u09BA\u09C2\u09C5\u09CA\u09D1\u09DA" +
		"\u09E3\u09E9\u09ED\u09F6\u09FF\u0A07\u0A0F\u0A18\u0A21\u0A25\u0A2C\u0A32" +
		"\u0A36\u0A39\u0A3D\u0A41\u0A45\u0A4A\u0A4D\u0A51\u0A63\u0A67\u0AC6\u0ACD" +
		"\u0ADD\u0AEB\u0AF5\u0AF7\u0AFC\u0B00\u0B03\u0B09\u0B0B\u0B27\u0B31\u0B3E" +
		"\u0B45\u0B4A\u0B4E\u0B54\u0B59\u0B5C\u0B5E\u0B63\u0B67\u0B6B\u0B6F\u0B73" +
		"\u0B76\u0B7A\u0B82\u0B86\u0B8A\u0B93\u0B9A\u0B9F\u0BA6\u0BAB\u0BB2\u0BB7" +
		"\u0BC9\u0BCE\u0BDA\u0BDF\u0BE8\u0BEF\u0BF6\u0BFA\u0BFF\u0C03\u0C06\u0C09" +
		"\u0C0C\u0C0F\u0C12\u0C17\u0C1A\u0C1D\u0C20\u0C23\u0C26\u0C2C\u0C30\u0C33" +
		"\u0C36\u0C39\u0C3C\u0C3E\u0C47\u0C56\u0C5E\u0C64\u0C68\u0C6D\u0C70\u0C73" +
		"\u0C77\u0C7B\u0C82\u0C85\u0C88\u0C8C\u0C90\u0C9E\u0CA3\u0CAA\u0CAF\u0CB3" +
		"\u0CB6\u0CBA\u0CBD\u0CBF\u0CC6\u0CC9\u0CCD\u0CD3\u0CD6\u0CDD\u0CE6\u0CED" +
		"\u0CF2\u0CF5\u0CF8\u0CFB\u0CFF\u0D06\u0D0B\u0D18\u0D22\u0D2F\u0D32\u0D35" +
		"\u0D3C\u0D44\u0D47\u0D4A\u0D51\u0D55\u0D5B\u0D5E\u0D61\u0D64\u0D70\u0D73" +
		"\u0D76\u0D7A\u0D88\u0D98\u0DA3\u0DB2\u0DC3\u0DC5\u0DDA\u0DDF\u0DE2\u0DE6" +
		"\u0DE9\u0DEF\u0DF2\u0DF4\u0DFF\u0E08\u0E0E\u0E11\u0E14\u0E22\u0E25\u0E28" +
		"\u0E2D\u0E35\u0E3E\u0E42\u0E48\u0E4C\u0E4F\u0E52\u0E55\u0E58\u0E5E\u0E62" +
		"\u0E67\u0E6D\u0E71\u0E74\u0E77\u0E7A\u0E82\u0E86\u0E8A\u0E8E\u0E92\u0E97" +
		"\u0EA5\u0EAE\u0EBF\u0EC4\u0EC7\u0EC9\u0ED3\u0EDA\u0EDF\u0EE2\u0EE5\u0EEC" +
		"\u0EEF\u0EF1\u0EF7\u0F00\u0F0A\u0F0F\u0F17\u0F1B\u0F22\u0F2C\u0F37\u0FA3" +
		"\u0FAB\u0FAE\u0FB8\u0FBD\u0FC7\u0FD2\u0FDE\u0FEB\u0FF5\u1001\u1005\u1008" +
		"\u100F\u1017\u1021\u1023\u1029\u102E\u1032\u1037\u103D\u1044\u104A\u104C" +
		"\u1053\u105B\u1060\u106B\u1072\u1076\u1087\u108A\u108D\u1090\u1093\u109B" +
		"\u109E\u10A1\u10A7\u10AF\u10B3\u10BF\u10C5\u10C8\u10CD\u10D1\u10D8\u10E3" +
		"\u10FA\u110E\u1117\u111A\u111D\u1127\u112A\u1133\u1137\u113A\u1142\u1148" +
		"\u114C\u1157\u1161\u1169\u116E\u117A\u118B\u118F\u1195\u119C\u11A4\u11B2" +
		"\u11CC\u11D3\u11E1\u11F0\u11FD\u1206\u121F\u122A\u1254\u125C\u1262\u126D" +
		"\u1273\u127B\u1286\u1294\u129D\u12A7\u12B3\u12C2\u12CD\u12D5\u12DF\u12E6" +
		"\u12E9\u12EF\u12F2\u1301\u130E\u132B\u1332\u1341\u134D\u1351\u1356\u135A" +
		"\u135F\u1363\u1369\u136D\u1372\u1376\u137C\u1380\u1385\u1389\u138E\u1392" +
		"\u1397\u139B\u13A2\u13A6\u13AD\u13B1\u13B8\u13BC\u13C3\u13C7\u13CD\u13D1" +
		"\u13D7\u13DB\u13E0\u13E4\u13EB\u13EF\u13F3\u13F7\u13FB\u1400\u1404\u1409" +
		"\u140D\u1412\u1416\u141B\u1421\u1426\u142C\u1431\u1437\u143C\u1440\u1445" +
		"\u1449\u144F\u1453\u1458\u1460\u1466\u146C\u1472\u1478\u147F\u1484\u1488" +
		"\u148D\u1491\u1496\u149C\u14A3\u14A8\u14AF\u14B9\u14BD\u14C3\u14C5\u14CC" +
		"\u14F3\u1502\u1514\u151D\u152A\u152E\u1534\u153B\u1540\u1544\u1547\u154D" +
		"\u1594\u15F4\u15F8\u15FD\u1607\u1612\u161C\u1627\u1632\u163D\u1648\u1654" +
		"\u165F\u1667\u166E\u1674\u167C\u1681\u1686\u168B\u1691\u1698\u169E\u16A4" +
		"\u16A9\u16AF\u16B6\u16BB\u16C1\u16C8\u16CB\u16D8\u16E1\u16ED\u16EF\u1701" +
		"\u1708\u1712\u1717\u171B\u171F\u1723\u1725\u1761\u1768\u176E\u1779\u177C" +
		"\u1783\u1786\u1790\u1793\u1795\u17A8\u17B4\u17BD\u17C6\u17D2\u17D4\u17DA" +
		"\u17DE\u17E1\u17E4\u17E9\u17EF\u17F2\u17F5\u17F8\u17FB\u180B\u180F\u1812" +
		"\u1815\u1818\u181B\u1820\u1823\u1825\u1832\u183E\u184C\u1850\u1856\u1860" +
		"\u1862\u1867\u186F\u1879\u1882\u188A\u1893\u1895\u189C\u18A5\u18A7\u18AE" +
		"\u18B7\u18B9\u18BD\u18C6\u18CB\u18D1\u18D6\u18DA\u18DF\u18F1\u18F6\u1905" +
		"\u190E\u1919\u191F\u1944\u1958\u195F\u196A\u1978\u197F\u1987\u198C\u1993" +
		"\u1997\u199C\u19A0\u19A5\u19A9\u19AB\u19B0\u19B4\u19B9\u19BD\u19D5\u19DC" +
		"\u19E6\u19F2\u19F7\u1A04\u1A10\u1A1C\u1A1E\u1A24\u1A2B\u1A58\u1A6A\u1A6E" +
		"\u1A73\u1A76\u1A7A\u1A7F\u1A84\u1A87\u1A8E\u1A9F\u1AE6\u1B05\u1B3B\u1B45" +
		"\u1B4F\u1B5A\u1B64\u1B6F\u1B79\u1B7E\u1B87\u1B8C\u1B96\u1B9B\u1BA4\u1BB1" +
		"\u1BB6\u1C26\u1C28\u1C33\u1C3E\u1C49\u1C56\u1C62\u1C6D\u1C74\u1CCE\u1D03" +
		"\u1D0D\u1D18\u1D23\u1D31\u1D40\u1D4B\u1D52\u1D88\u1E15\u1E1B\u1E1E\u1E28" +
		"\u1E50\u1E5A\u1E61\u1E78\u1E81\u1E8A\u1E93\u1EB4\u1EB8\u1EC2\u1EC6\u1ED0" +
		"\u1ED3\u1ED7\u1EDB\u1EE3\u1EEE\u1EFA\u1EFE\u1F01\u1F05\u1F08\u1F0D\u1F11" +
		"\u1F14\u1F18\u1F1B\u1F1F\u1F22\u1F2D\u1F34\u1F41\u1F4F\u1F53\u1F58\u1F5F" +
		"\u1F66\u1F69\u1F6E\u1F71\u1F7A\u1F7C\u1F81\u1F85\u1F91\u1F94\u1F9B\u1F9F" +
		"\u1FA4\u1FAE\u1FB6\u1FB9\u1FBC\u1FC1\u1FC3\u1FC9\u1FD0\u1FE4\u1FF8\u1FFC" +
		"\u2001\u2046\u204B\u2051\u205E\u2062\u2066\u206C\u206E\u2076\u2080\u2083" +
		"\u2086\u2089\u208C\u2093\u2096\u2098\u209C\u209F\u20A6\u20A8\u20AF\u20B6" +
		"\u20BA\u20BE\u20C7\u20CD\u20D1\u20D5\u20DA\u20E6\u20ED\u20F7\u2104\u210F" +
		"\u2116\u211B\u211F\u2123\u2128\u2135\u213A\u213E\u2142\u2149\u214C\u214E" +
		"\u215E\u2161\u2168\u216B\u2170\u2176\u217C\u2180\u2189\u2192\u2199\u219C" +
		"\u21A2\u21A7\u21AD\u21B3\u21B6\u21B9\u21C0\u21C4\u21C7\u21D6\u21D9\u21E0" +
		"\u21E3\u21EA\u21ED\u21F0\u21F7\u2203\u220A\u220C\u2216\u2228\u222A\u2232" +
		"\u2236\u2240\u2244\u2248\u224C\u224E\u2253\u2257\u225B\u225D\u225F\u2263" +
		"\u2267\u226A\u226D\u2270\u2273\u2275\u2278\u227B\u227E\u2281\u2284\u2287" +
		"\u2290\u2292\u2297\u229B\u22A1\u22A5\u22A9\u22B2\u22B7\u22BB\u22C1\u22C4" +
		"\u22D7\u22DF\u22E8\u22EC\u22EF\u22F3\u22F8\u22FE\u230A\u2319\u2320\u2323" +
		"\u2327\u232B\u232F\u2331\u2339\u2342\u2348\u234A\u2351\u2355\u235E\u2362" +
		"\u236B\u2374\u2380\u239C\u23A3\u23A7\u23AA\u23AF\u23B3\u23B6\u23C6\u23D1" +
		"\u23D6\u23D9\u23DD\u23E1\u23E5\u23EA\u23EE\u23F2\u23F4\u23FD\u2402\u2408" +
		"\u240C\u240E\u2415\u241A\u2420\u2422\u2426\u242D\u2434\u2437\u243D\u2441" +
		"\u244A\u244D\u2451\u2454\u2457\u245F\u2465\u2467\u246B\u246F\u2475\u2478" +
		"\u2481\u2488\u248A\u2491\u2499\u249E\u24A1\u24A9\u24B2\u24BA\u24BC\u24C0" +
		"\u24C7\u24DA\u24E3\u24E9\u24FC\u2505\u250B\u250F\u2514\u251E\u2525\u252E" +
		"\u2531\u253A\u253C\u2542\u2546\u254B\u2555\u255B\u255D\u2563\u2567\u256A" +
		"\u2577\u257D\u2581\u2585\u2588\u2590\u2594\u2598\u25A0\u25A7\u25AE\u25B2" +
		"\u25B8\u25BA\u25C3\u25C6\u25D0\u25E0\u25E6\u25EB\u25F2\u25FB\u2602\u260A" +
		"\u2612\u2617\u261B\u261E\u2624\u2629\u2639\u263C\u263E\u264A\u264C\u2650" +
		"\u2658\u265A\u265E\u2660\u2668\u266C\u2675\u267D\u2683\u2686\u268F\u2694" +
		"\u269B\u26A5\u26BF\u26CA\u26CC\u26CE\u26D6\u26ED\u26F5\u26FF\u2702\u2707" +
		"\u270C\u2710\u2713\u2717\u271A\u271D\u2720\u2724\u2732\u2739\u2740\u2747" +
		"\u2759\u2761\u276D\u2773\u2780\u27A7\u27A9\u27BD\u27C7\u27D2\u27DE\u27E5" +
		"\u27F1\u27FD\u2803\u280B\u281C\u2835\u283F\u2843\u2846\u2849\u284C\u2859" +
		"\u285E\u2863\u2865\u286D\u2876\u287F\u2884\u288D\u2892\u28A0\u28AA\u28B2" +
		"\u28C0\u28C7\u28CF\u28D7\u28DF\u28E3\u28EA\u28F2\u28F9\u28FF\u2908\u2917" +
		"\u2922\u2943\u294C\u2953\u2957\u295B\u2962\u2970\u2975\u297A\u297E\u2980" +
		"\u2983\u298A\u298F\u2999\u29A1\u29A4\u29AB\u29B3\u29BB\u29C3\u29CB\u29D0" +
		"\u29D4\u29D8\u29DC\u29E0\u29E4\u29E8\u29EF\u29F7\u29FC\u2A00\u2A04\u2A0E" +
		"\u2A14\u2A24\u2A2A\u2A30\u2A3C\u2A41\u2A49\u2A50\u2A55\u2A61\u2A69\u2A6E" +
		"\u2A78\u2A83\u2A8A\u2A91\u2A9C\u2A9F\u2AA1\u2AA5\u2AA8\u2AAE\u2AB4\u2AB8" +
		"\u2ABE\u2AC6\u2ACA\u2AD2\u2B0B\u2B18\u2B2F\u2B37\u2B3B\u2B47\u2B49\u2B50" +
		"\u2B59\u2B6B\u2B73\u2B7C\u2B83\u2B8D\u2B93\u2B9A\u2B9F\u2BA5\u2BA9\u2BB0" +
		"\u2BCE\u2BDB\u2BE4\u2BE8\u2BF8\u2BFF\u2C0C\u2C14\u2C28\u2C2E\u2C3A\u2C3F" +
		"\u2C49\u2C69\u2C6E\u2C77\u2C7C\u2C80\u2C85\u2C95\u2C9A\u2CA9\u2CAC\u2CB2" +
		"\u2CB6\u2CBF\u2CC7\u2CD0\u2CD6\u2CDF\u2CE1\u2CE6\u2CF1\u2CFC\u2D11\u2D18" +
		"\u2D1F\u2D25\u2D28\u2D33\u2D3A\u2D3C\u2D45\u2D4C\u2D52\u2D58\u2D5C\u2D60" +
		"\u2D6D\u2D7C\u2D7E\u2D82\u2D88\u2D8D\u2D91\u2D94\u2D97\u2DA0\u2DA3\u2DA7" +
		"\u2DAB\u2DAD\u2DB0\u2DB3\u2DBB\u2DC2\u2DC9\u2DCF\u2DD1\u2DD8\u2DDD\u2DEF" +
		"\u2DF1\u2DF7\u2DFF\u2E06\u2E11\u2E17\u2E1D\u2E2A\u2E2D\u2E31\u2E36\u2E3B" +
		"\u2E47\u2E4D\u2E51\u2E55\u2E59\u2E60\u2E65\u2E68\u2E6B\u2E6E\u2E71\u2E74" +
		"\u2E77\u2E83";
	public static readonly _serializedATN: string = Utils.join(
		[
			PostgreSQLParser._serializedATNSegment0,
			PostgreSQLParser._serializedATNSegment1,
			PostgreSQLParser._serializedATNSegment2,
			PostgreSQLParser._serializedATNSegment3,
			PostgreSQLParser._serializedATNSegment4,
			PostgreSQLParser._serializedATNSegment5,
			PostgreSQLParser._serializedATNSegment6,
			PostgreSQLParser._serializedATNSegment7,
			PostgreSQLParser._serializedATNSegment8,
			PostgreSQLParser._serializedATNSegment9,
			PostgreSQLParser._serializedATNSegment10,
			PostgreSQLParser._serializedATNSegment11,
			PostgreSQLParser._serializedATNSegment12,
			PostgreSQLParser._serializedATNSegment13,
			PostgreSQLParser._serializedATNSegment14,
			PostgreSQLParser._serializedATNSegment15,
			PostgreSQLParser._serializedATNSegment16,
			PostgreSQLParser._serializedATNSegment17,
			PostgreSQLParser._serializedATNSegment18,
			PostgreSQLParser._serializedATNSegment19,
			PostgreSQLParser._serializedATNSegment20,
			PostgreSQLParser._serializedATNSegment21,
		],
		"",
	);
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!PostgreSQLParser.__ATN) {
			PostgreSQLParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(PostgreSQLParser._serializedATN));
		}

		return PostgreSQLParser.__ATN;
	}

}

export class ProgramContext extends ParserRuleContext {
	public EOF(): TerminalNode { return this.getToken(PostgreSQLParser.EOF, 0); }
	public singleStmt(): SingleStmtContext[];
	public singleStmt(i: number): SingleStmtContext;
	public singleStmt(i?: number): SingleStmtContext | SingleStmtContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SingleStmtContext);
		} else {
			return this.getRuleContext(i, SingleStmtContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_program; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProgram) {
			listener.enterProgram(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProgram) {
			listener.exitProgram(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProgram) {
			return visitor.visitProgram(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PlsqlrootContext extends ParserRuleContext {
	public pl_function(): Pl_functionContext {
		return this.getRuleContext(0, Pl_functionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsqlroot; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsqlroot) {
			listener.enterPlsqlroot(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsqlroot) {
			listener.exitPlsqlroot(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsqlroot) {
			return visitor.visitPlsqlroot(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleStmtContext extends ParserRuleContext {
	public stmt(): StmtContext {
		return this.getRuleContext(0, StmtContext);
	}
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_singleStmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSingleStmt) {
			listener.enterSingleStmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSingleStmt) {
			listener.exitSingleStmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSingleStmt) {
			return visitor.visitSingleStmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StmtContext extends ParserRuleContext {
	public altereventtrigstmt(): AltereventtrigstmtContext | undefined {
		return this.tryGetRuleContext(0, AltereventtrigstmtContext);
	}
	public altercollationstmt(): AltercollationstmtContext | undefined {
		return this.tryGetRuleContext(0, AltercollationstmtContext);
	}
	public alterdatabasestmt(): AlterdatabasestmtContext | undefined {
		return this.tryGetRuleContext(0, AlterdatabasestmtContext);
	}
	public alterdatabasesetstmt(): AlterdatabasesetstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterdatabasesetstmtContext);
	}
	public alterdefaultprivilegesstmt(): AlterdefaultprivilegesstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterdefaultprivilegesstmtContext);
	}
	public alterdomainstmt(): AlterdomainstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterdomainstmtContext);
	}
	public alterenumstmt(): AlterenumstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterenumstmtContext);
	}
	public alterextensionstmt(): AlterextensionstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterextensionstmtContext);
	}
	public alterextensioncontentsstmt(): AlterextensioncontentsstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterextensioncontentsstmtContext);
	}
	public alterfdwstmt(): AlterfdwstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterfdwstmtContext);
	}
	public alterforeignserverstmt(): AlterforeignserverstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterforeignserverstmtContext);
	}
	public alterfunctionstmt(): AlterfunctionstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterfunctionstmtContext);
	}
	public altergroupstmt(): AltergroupstmtContext | undefined {
		return this.tryGetRuleContext(0, AltergroupstmtContext);
	}
	public alterobjectdependsstmt(): AlterobjectdependsstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterobjectdependsstmtContext);
	}
	public alterobjectschemastmt(): AlterobjectschemastmtContext | undefined {
		return this.tryGetRuleContext(0, AlterobjectschemastmtContext);
	}
	public alterownerstmt(): AlterownerstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterownerstmtContext);
	}
	public alteroperatorstmt(): AlteroperatorstmtContext | undefined {
		return this.tryGetRuleContext(0, AlteroperatorstmtContext);
	}
	public altertypestmt(): AltertypestmtContext | undefined {
		return this.tryGetRuleContext(0, AltertypestmtContext);
	}
	public alterpolicystmt(): AlterpolicystmtContext | undefined {
		return this.tryGetRuleContext(0, AlterpolicystmtContext);
	}
	public alterprocedurestmt(): AlterprocedurestmtContext | undefined {
		return this.tryGetRuleContext(0, AlterprocedurestmtContext);
	}
	public alterseqstmt(): AlterseqstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterseqstmtContext);
	}
	public altersystemstmt(): AltersystemstmtContext | undefined {
		return this.tryGetRuleContext(0, AltersystemstmtContext);
	}
	public altertablestmt(): AltertablestmtContext | undefined {
		return this.tryGetRuleContext(0, AltertablestmtContext);
	}
	public altertblspcstmt(): AltertblspcstmtContext | undefined {
		return this.tryGetRuleContext(0, AltertblspcstmtContext);
	}
	public altercompositetypestmt(): AltercompositetypestmtContext | undefined {
		return this.tryGetRuleContext(0, AltercompositetypestmtContext);
	}
	public alterpublicationstmt(): AlterpublicationstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterpublicationstmtContext);
	}
	public alterrolesetstmt(): AlterrolesetstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterrolesetstmtContext);
	}
	public alterroutinestmt(): AlterroutinestmtContext | undefined {
		return this.tryGetRuleContext(0, AlterroutinestmtContext);
	}
	public alterrolestmt(): AlterrolestmtContext | undefined {
		return this.tryGetRuleContext(0, AlterrolestmtContext);
	}
	public altersubscriptionstmt(): AltersubscriptionstmtContext | undefined {
		return this.tryGetRuleContext(0, AltersubscriptionstmtContext);
	}
	public alterstatsstmt(): AlterstatsstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterstatsstmtContext);
	}
	public altertsconfigurationstmt(): AltertsconfigurationstmtContext | undefined {
		return this.tryGetRuleContext(0, AltertsconfigurationstmtContext);
	}
	public altertsdictionarystmt(): AltertsdictionarystmtContext | undefined {
		return this.tryGetRuleContext(0, AltertsdictionarystmtContext);
	}
	public alterusermappingstmt(): AlterusermappingstmtContext | undefined {
		return this.tryGetRuleContext(0, AlterusermappingstmtContext);
	}
	public analyzestmt(): AnalyzestmtContext | undefined {
		return this.tryGetRuleContext(0, AnalyzestmtContext);
	}
	public callstmt(): CallstmtContext | undefined {
		return this.tryGetRuleContext(0, CallstmtContext);
	}
	public checkpointstmt(): CheckpointstmtContext | undefined {
		return this.tryGetRuleContext(0, CheckpointstmtContext);
	}
	public closeportalstmt(): CloseportalstmtContext | undefined {
		return this.tryGetRuleContext(0, CloseportalstmtContext);
	}
	public clusterstmt(): ClusterstmtContext | undefined {
		return this.tryGetRuleContext(0, ClusterstmtContext);
	}
	public commentstmt(): CommentstmtContext | undefined {
		return this.tryGetRuleContext(0, CommentstmtContext);
	}
	public constraintssetstmt(): ConstraintssetstmtContext | undefined {
		return this.tryGetRuleContext(0, ConstraintssetstmtContext);
	}
	public copystmt(): CopystmtContext | undefined {
		return this.tryGetRuleContext(0, CopystmtContext);
	}
	public createamstmt(): CreateamstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateamstmtContext);
	}
	public createasstmt(): CreateasstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateasstmtContext);
	}
	public createassertionstmt(): CreateassertionstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateassertionstmtContext);
	}
	public createcaststmt(): CreatecaststmtContext | undefined {
		return this.tryGetRuleContext(0, CreatecaststmtContext);
	}
	public createconversionstmt(): CreateconversionstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateconversionstmtContext);
	}
	public createdomainstmt(): CreatedomainstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatedomainstmtContext);
	}
	public createextensionstmt(): CreateextensionstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateextensionstmtContext);
	}
	public createfdwstmt(): CreatefdwstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatefdwstmtContext);
	}
	public createforeignserverstmt(): CreateforeignserverstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateforeignserverstmtContext);
	}
	public createforeigntablestmt(): CreateforeigntablestmtContext | undefined {
		return this.tryGetRuleContext(0, CreateforeigntablestmtContext);
	}
	public createfunctionstmt(): CreatefunctionstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatefunctionstmtContext);
	}
	public creategroupstmt(): CreategroupstmtContext | undefined {
		return this.tryGetRuleContext(0, CreategroupstmtContext);
	}
	public creatematviewstmt(): CreatematviewstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatematviewstmtContext);
	}
	public createopclassstmt(): CreateopclassstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateopclassstmtContext);
	}
	public createopfamilystmt(): CreateopfamilystmtContext | undefined {
		return this.tryGetRuleContext(0, CreateopfamilystmtContext);
	}
	public createpublicationstmt(): CreatepublicationstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatepublicationstmtContext);
	}
	public alteropfamilystmt(): AlteropfamilystmtContext | undefined {
		return this.tryGetRuleContext(0, AlteropfamilystmtContext);
	}
	public createpolicystmt(): CreatepolicystmtContext | undefined {
		return this.tryGetRuleContext(0, CreatepolicystmtContext);
	}
	public createplangstmt(): CreateplangstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateplangstmtContext);
	}
	public createschemastmt(): CreateschemastmtContext | undefined {
		return this.tryGetRuleContext(0, CreateschemastmtContext);
	}
	public createseqstmt(): CreateseqstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateseqstmtContext);
	}
	public createstmt(): CreatestmtContext | undefined {
		return this.tryGetRuleContext(0, CreatestmtContext);
	}
	public createsubscriptionstmt(): CreatesubscriptionstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatesubscriptionstmtContext);
	}
	public createstatsstmt(): CreatestatsstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatestatsstmtContext);
	}
	public createtablespacestmt(): CreatetablespacestmtContext | undefined {
		return this.tryGetRuleContext(0, CreatetablespacestmtContext);
	}
	public createtransformstmt(): CreatetransformstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatetransformstmtContext);
	}
	public createtrigstmt(): CreatetrigstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatetrigstmtContext);
	}
	public createeventtrigstmt(): CreateeventtrigstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateeventtrigstmtContext);
	}
	public createrolestmt(): CreaterolestmtContext | undefined {
		return this.tryGetRuleContext(0, CreaterolestmtContext);
	}
	public createuserstmt(): CreateuserstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateuserstmtContext);
	}
	public createusermappingstmt(): CreateusermappingstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateusermappingstmtContext);
	}
	public createdbstmt(): CreatedbstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatedbstmtContext);
	}
	public deallocatestmt(): DeallocatestmtContext | undefined {
		return this.tryGetRuleContext(0, DeallocatestmtContext);
	}
	public declarecursorstmt(): DeclarecursorstmtContext | undefined {
		return this.tryGetRuleContext(0, DeclarecursorstmtContext);
	}
	public definestmt(): DefinestmtContext | undefined {
		return this.tryGetRuleContext(0, DefinestmtContext);
	}
	public deletestmt(): DeletestmtContext | undefined {
		return this.tryGetRuleContext(0, DeletestmtContext);
	}
	public discardstmt(): DiscardstmtContext | undefined {
		return this.tryGetRuleContext(0, DiscardstmtContext);
	}
	public dostmt(): DostmtContext | undefined {
		return this.tryGetRuleContext(0, DostmtContext);
	}
	public dropstmt(): DropstmtContext | undefined {
		return this.tryGetRuleContext(0, DropstmtContext);
	}
	public executestmt(): ExecutestmtContext | undefined {
		return this.tryGetRuleContext(0, ExecutestmtContext);
	}
	public explainstmt(): ExplainstmtContext | undefined {
		return this.tryGetRuleContext(0, ExplainstmtContext);
	}
	public fetchstmt(): FetchstmtContext | undefined {
		return this.tryGetRuleContext(0, FetchstmtContext);
	}
	public grantstmt(): GrantstmtContext | undefined {
		return this.tryGetRuleContext(0, GrantstmtContext);
	}
	public grantrolestmt(): GrantrolestmtContext | undefined {
		return this.tryGetRuleContext(0, GrantrolestmtContext);
	}
	public mergestmt(): MergestmtContext | undefined {
		return this.tryGetRuleContext(0, MergestmtContext);
	}
	public importforeignschemastmt(): ImportforeignschemastmtContext | undefined {
		return this.tryGetRuleContext(0, ImportforeignschemastmtContext);
	}
	public indexstmt(): IndexstmtContext | undefined {
		return this.tryGetRuleContext(0, IndexstmtContext);
	}
	public insertstmt(): InsertstmtContext | undefined {
		return this.tryGetRuleContext(0, InsertstmtContext);
	}
	public listenstmt(): ListenstmtContext | undefined {
		return this.tryGetRuleContext(0, ListenstmtContext);
	}
	public refreshmatviewstmt(): RefreshmatviewstmtContext | undefined {
		return this.tryGetRuleContext(0, RefreshmatviewstmtContext);
	}
	public loadstmt(): LoadstmtContext | undefined {
		return this.tryGetRuleContext(0, LoadstmtContext);
	}
	public lockstmt(): LockstmtContext | undefined {
		return this.tryGetRuleContext(0, LockstmtContext);
	}
	public notifystmt(): NotifystmtContext | undefined {
		return this.tryGetRuleContext(0, NotifystmtContext);
	}
	public preparestmt(): PreparestmtContext | undefined {
		return this.tryGetRuleContext(0, PreparestmtContext);
	}
	public reassignownedstmt(): ReassignownedstmtContext | undefined {
		return this.tryGetRuleContext(0, ReassignownedstmtContext);
	}
	public reindexstmt(): ReindexstmtContext | undefined {
		return this.tryGetRuleContext(0, ReindexstmtContext);
	}
	public removeaggrstmt(): RemoveaggrstmtContext | undefined {
		return this.tryGetRuleContext(0, RemoveaggrstmtContext);
	}
	public removefuncstmt(): RemovefuncstmtContext | undefined {
		return this.tryGetRuleContext(0, RemovefuncstmtContext);
	}
	public removeoperstmt(): RemoveoperstmtContext | undefined {
		return this.tryGetRuleContext(0, RemoveoperstmtContext);
	}
	public renamestmt(): RenamestmtContext | undefined {
		return this.tryGetRuleContext(0, RenamestmtContext);
	}
	public revokestmt(): RevokestmtContext | undefined {
		return this.tryGetRuleContext(0, RevokestmtContext);
	}
	public revokerolestmt(): RevokerolestmtContext | undefined {
		return this.tryGetRuleContext(0, RevokerolestmtContext);
	}
	public rulestmt(): RulestmtContext | undefined {
		return this.tryGetRuleContext(0, RulestmtContext);
	}
	public seclabelstmt(): SeclabelstmtContext | undefined {
		return this.tryGetRuleContext(0, SeclabelstmtContext);
	}
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public transactionstmt(): TransactionstmtContext | undefined {
		return this.tryGetRuleContext(0, TransactionstmtContext);
	}
	public truncatestmt(): TruncatestmtContext | undefined {
		return this.tryGetRuleContext(0, TruncatestmtContext);
	}
	public unlistenstmt(): UnlistenstmtContext | undefined {
		return this.tryGetRuleContext(0, UnlistenstmtContext);
	}
	public updatestmt(): UpdatestmtContext | undefined {
		return this.tryGetRuleContext(0, UpdatestmtContext);
	}
	public vacuumstmt(): VacuumstmtContext | undefined {
		return this.tryGetRuleContext(0, VacuumstmtContext);
	}
	public variableresetstmt(): VariableresetstmtContext | undefined {
		return this.tryGetRuleContext(0, VariableresetstmtContext);
	}
	public variablesetstmt(): VariablesetstmtContext | undefined {
		return this.tryGetRuleContext(0, VariablesetstmtContext);
	}
	public variableshowstmt(): VariableshowstmtContext | undefined {
		return this.tryGetRuleContext(0, VariableshowstmtContext);
	}
	public viewstmt(): ViewstmtContext | undefined {
		return this.tryGetRuleContext(0, ViewstmtContext);
	}
	public plsqlconsolecommand(): PlsqlconsolecommandContext | undefined {
		return this.tryGetRuleContext(0, PlsqlconsolecommandContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt) {
			listener.enterStmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt) {
			listener.exitStmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt) {
			return visitor.visitStmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PlsqlconsolecommandContext extends ParserRuleContext {
	public MetaCommand(): TerminalNode { return this.getToken(PostgreSQLParser.MetaCommand, 0); }
	public EndMetaCommand(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EndMetaCommand, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsqlconsolecommand; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsqlconsolecommand) {
			listener.enterPlsqlconsolecommand(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsqlconsolecommand) {
			listener.exitPlsqlconsolecommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsqlconsolecommand) {
			return visitor.visitPlsqlconsolecommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CallstmtContext extends ParserRuleContext {
	public KW_CALL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CALL, 0); }
	public func_application(): Func_applicationContext {
		return this.getRuleContext(0, Func_applicationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_callstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCallstmt) {
			listener.enterCallstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCallstmt) {
			listener.exitCallstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCallstmt) {
			return visitor.visitCallstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreaterolestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_ROLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ROLE, 0); }
	public roleid(): RoleidContext {
		return this.getRuleContext(0, RoleidContext);
	}
	public optrolelist(): OptrolelistContext {
		return this.getRuleContext(0, OptrolelistContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createrolestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreaterolestmt) {
			listener.enterCreaterolestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreaterolestmt) {
			listener.exitCreaterolestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreaterolestmt) {
			return visitor.visitCreaterolestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_withContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_with; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_with) {
			listener.enterOpt_with(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_with) {
			listener.exitOpt_with(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_with) {
			return visitor.visitOpt_with(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptrolelistContext extends ParserRuleContext {
	public createoptroleelem(): CreateoptroleelemContext[];
	public createoptroleelem(i: number): CreateoptroleelemContext;
	public createoptroleelem(i?: number): CreateoptroleelemContext | CreateoptroleelemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CreateoptroleelemContext);
		} else {
			return this.getRuleContext(i, CreateoptroleelemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optrolelist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptrolelist) {
			listener.enterOptrolelist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptrolelist) {
			listener.exitOptrolelist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptrolelist) {
			return visitor.visitOptrolelist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlteroptrolelistContext extends ParserRuleContext {
	public alteroptroleelem(): AlteroptroleelemContext[];
	public alteroptroleelem(i: number): AlteroptroleelemContext;
	public alteroptroleelem(i?: number): AlteroptroleelemContext | AlteroptroleelemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(AlteroptroleelemContext);
		} else {
			return this.getRuleContext(i, AlteroptroleelemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alteroptrolelist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlteroptrolelist) {
			listener.enterAlteroptrolelist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlteroptrolelist) {
			listener.exitAlteroptrolelist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlteroptrolelist) {
			return visitor.visitAlteroptrolelist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlteroptroleelemContext extends ParserRuleContext {
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PASSWORD, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_ENCRYPTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENCRYPTED, 0); }
	public KW_UNENCRYPTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNENCRYPTED, 0); }
	public KW_INHERIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INHERIT, 0); }
	public KW_NOINHERIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOINHERIT, 0); }
	public KW_CREATEUSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATEUSER, 0); }
	public KW_NOCREATEUSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOCREATEUSER, 0); }
	public KW_CREATEROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATEROLE, 0); }
	public KW_NOCREATEROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOCREATEROLE, 0); }
	public KW_CREATEDB(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATEDB, 0); }
	public KW_NOCREATEDB(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOCREATEDB, 0); }
	public KW_SUPERUSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUPERUSER, 0); }
	public KW_NOSUPERUSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOSUPERUSER, 0); }
	public KW_LOGIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOGIN, 0); }
	public KW_NOLOGIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOLOGIN, 0); }
	public KW_REPLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLICATION, 0); }
	public KW_NOREPLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOREPLICATION, 0); }
	public KW_BYPASSRLS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BYPASSRLS, 0); }
	public KW_NOBYPASSRLS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOBYPASSRLS, 0); }
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONNECTION, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIMIT, 0); }
	public signediconst(): SignediconstContext | undefined {
		return this.tryGetRuleContext(0, SignediconstContext);
	}
	public KW_VALID(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALID, 0); }
	public KW_UNTIL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNTIL, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public name_list(): Name_listContext | undefined {
		return this.tryGetRuleContext(0, Name_listContext);
	}
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	public role_list(): Role_listContext | undefined {
		return this.tryGetRuleContext(0, Role_listContext);
	}
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADMIN, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alteroptroleelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlteroptroleelem) {
			listener.enterAlteroptroleelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlteroptroleelem) {
			listener.exitAlteroptroleelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlteroptroleelem) {
			return visitor.visitAlteroptroleelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateoptroleelemContext extends ParserRuleContext {
	public alteroptroleelem(): AlteroptroleelemContext | undefined {
		return this.tryGetRuleContext(0, AlteroptroleelemContext);
	}
	public KW_SYSID(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSID, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADMIN, 0); }
	public role_list(): Role_listContext | undefined {
		return this.tryGetRuleContext(0, Role_listContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createoptroleelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateoptroleelem) {
			listener.enterCreateoptroleelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateoptroleelem) {
			listener.exitCreateoptroleelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateoptroleelem) {
			return visitor.visitCreateoptroleelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateuserstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_USER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USER, 0); }
	public roleid(): RoleidContext {
		return this.getRuleContext(0, RoleidContext);
	}
	public optrolelist(): OptrolelistContext {
		return this.getRuleContext(0, OptrolelistContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createuserstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateuserstmt) {
			listener.enterCreateuserstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateuserstmt) {
			listener.exitCreateuserstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateuserstmt) {
			return visitor.visitCreateuserstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterrolestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	public alteroptrolelist(): AlteroptrolelistContext {
		return this.getRuleContext(0, AlteroptrolelistContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterrolestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterrolestmt) {
			listener.enterAlterrolestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterrolestmt) {
			listener.exitAlterrolestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterrolestmt) {
			return visitor.visitAlterrolestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_in_databaseContext extends ParserRuleContext {
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_in_database; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_in_database) {
			listener.enterOpt_in_database(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_in_database) {
			listener.exitOpt_in_database(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_in_database) {
			return visitor.visitOpt_in_database(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterrolesetstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public opt_in_database(): Opt_in_databaseContext {
		return this.getRuleContext(0, Opt_in_databaseContext);
	}
	public setresetclause(): SetresetclauseContext {
		return this.getRuleContext(0, SetresetclauseContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterrolesetstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterrolesetstmt) {
			listener.enterAlterrolesetstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterrolesetstmt) {
			listener.exitAlterrolesetstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterrolesetstmt) {
			return visitor.visitAlterrolesetstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterroutinestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_ROUTINE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_name(): Routine_nameContext {
		return this.getRuleContext(0, Routine_nameContext);
	}
	public alter_routine_cluase(): Alter_routine_cluaseContext {
		return this.getRuleContext(0, Alter_routine_cluaseContext);
	}
	public func_args(): Func_argsContext | undefined {
		return this.tryGetRuleContext(0, Func_argsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterroutinestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterroutinestmt) {
			listener.enterAlterroutinestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterroutinestmt) {
			listener.exitAlterroutinestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterroutinestmt) {
			return visitor.visitAlterroutinestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_routine_cluaseContext extends ParserRuleContext {
	public routine_action_list(): Routine_action_listContext | undefined {
		return this.tryGetRuleContext(0, Routine_action_listContext);
	}
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICT, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public routine_name_create(): Routine_name_createContext | undefined {
		return this.tryGetRuleContext(0, Routine_name_createContext);
	}
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_create(): Schema_name_createContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_createContext);
	}
	public KW_DEPENDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEPENDS, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_routine_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_routine_cluase) {
			listener.enterAlter_routine_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_routine_cluase) {
			listener.exitAlter_routine_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_routine_cluase) {
			return visitor.visitAlter_routine_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_action_listContext extends ParserRuleContext {
	public routine_action(): Routine_actionContext[];
	public routine_action(i: number): Routine_actionContext;
	public routine_action(i?: number): Routine_actionContext | Routine_actionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Routine_actionContext);
		} else {
			return this.getRuleContext(i, Routine_actionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_action_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_action_list) {
			listener.enterRoutine_action_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_action_list) {
			listener.exitRoutine_action_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_action_list) {
			return visitor.visitRoutine_action_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_actionContext extends ParserRuleContext {
	public KW_IMMUTABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMUTABLE, 0); }
	public KW_STABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STABLE, 0); }
	public KW_VOLATILE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VOLATILE, 0); }
	public KW_LEAKPROOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEAKPROOF, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INVOKER, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFINER, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTERNAL, 0); }
	public KW_PARALLEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARALLEL, 0); }
	public KW_UNSAFE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNSAFE, 0); }
	public KW_RESTRICTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICTED, 0); }
	public KW_SAFE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SAFE, 0); }
	public KW_COST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COST, 0); }
	public attr_name(): Attr_nameContext | undefined {
		return this.tryGetRuleContext(0, Attr_nameContext);
	}
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_action; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_action) {
			listener.enterRoutine_action(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_action) {
			listener.exitRoutine_action(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_action) {
			return visitor.visitRoutine_action(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreategroupstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GROUP, 0); }
	public groupname(): GroupnameContext {
		return this.getRuleContext(0, GroupnameContext);
	}
	public optrolelist(): OptrolelistContext {
		return this.getRuleContext(0, OptrolelistContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_creategroupstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreategroupstmt) {
			listener.enterCreategroupstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreategroupstmt) {
			listener.exitCreategroupstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreategroupstmt) {
			return visitor.visitCreategroupstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltergroupstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GROUP, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	public add_drop(): Add_dropContext {
		return this.getRuleContext(0, Add_dropContext);
	}
	public KW_USER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USER, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altergroupstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltergroupstmt) {
			listener.enterAltergroupstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltergroupstmt) {
			listener.exitAltergroupstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltergroupstmt) {
			return visitor.visitAltergroupstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Add_dropContext extends ParserRuleContext {
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_add_drop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAdd_drop) {
			listener.enterAdd_drop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAdd_drop) {
			listener.exitAdd_drop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAdd_drop) {
			return visitor.visitAdd_drop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateschemastmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_SCHEMA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public optschemaeltlist(): OptschemaeltlistContext {
		return this.getRuleContext(0, OptschemaeltlistContext);
	}
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AUTHORIZATION, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public schema_name_create(): Schema_name_createContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_createContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createschemastmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateschemastmt) {
			listener.enterCreateschemastmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateschemastmt) {
			listener.exitCreateschemastmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateschemastmt) {
			return visitor.visitCreateschemastmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Schema_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_schema_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSchema_name_create) {
			listener.enterSchema_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSchema_name_create) {
			listener.exitSchema_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSchema_name_create) {
			return visitor.visitSchema_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptschemaeltlistContext extends ParserRuleContext {
	public schema_stmt(): Schema_stmtContext[];
	public schema_stmt(i: number): Schema_stmtContext;
	public schema_stmt(i?: number): Schema_stmtContext | Schema_stmtContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Schema_stmtContext);
		} else {
			return this.getRuleContext(i, Schema_stmtContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optschemaeltlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptschemaeltlist) {
			listener.enterOptschemaeltlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptschemaeltlist) {
			listener.exitOptschemaeltlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptschemaeltlist) {
			return visitor.visitOptschemaeltlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Schema_stmtContext extends ParserRuleContext {
	public createstmt(): CreatestmtContext | undefined {
		return this.tryGetRuleContext(0, CreatestmtContext);
	}
	public indexstmt(): IndexstmtContext | undefined {
		return this.tryGetRuleContext(0, IndexstmtContext);
	}
	public createseqstmt(): CreateseqstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateseqstmtContext);
	}
	public createtrigstmt(): CreatetrigstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatetrigstmtContext);
	}
	public grantstmt(): GrantstmtContext | undefined {
		return this.tryGetRuleContext(0, GrantstmtContext);
	}
	public viewstmt(): ViewstmtContext | undefined {
		return this.tryGetRuleContext(0, ViewstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_schema_stmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSchema_stmt) {
			listener.enterSchema_stmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSchema_stmt) {
			listener.exitSchema_stmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSchema_stmt) {
			return visitor.visitSchema_stmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariablesetstmtContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public set_rest(): Set_restContext {
		return this.getRuleContext(0, Set_restContext);
	}
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_variablesetstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVariablesetstmt) {
			listener.enterVariablesetstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVariablesetstmt) {
			listener.exitVariablesetstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVariablesetstmt) {
			return visitor.visitVariablesetstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_restContext extends ParserRuleContext {
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public transaction_mode_list(): Transaction_mode_listContext | undefined {
		return this.tryGetRuleContext(0, Transaction_mode_listContext);
	}
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	public KW_CHARACTERISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHARACTERISTICS, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public set_rest_more(): Set_rest_moreContext | undefined {
		return this.tryGetRuleContext(0, Set_rest_moreContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_rest; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_rest) {
			listener.enterSet_rest(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_rest) {
			listener.exitSet_rest(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_rest) {
			return visitor.visitSet_rest(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_setContext extends ParserRuleContext {
	public var_name(): Var_nameContext | undefined {
		return this.tryGetRuleContext(0, Var_nameContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public var_list(): Var_listContext | undefined {
		return this.tryGetRuleContext(0, Var_listContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_set; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_set) {
			listener.enterGeneric_set(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_set) {
			listener.exitGeneric_set(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_set) {
			return visitor.visitGeneric_set(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_rest_moreContext extends ParserRuleContext {
	public generic_set(): Generic_setContext | undefined {
		return this.tryGetRuleContext(0, Generic_setContext);
	}
	public var_name(): Var_nameContext | undefined {
		return this.tryGetRuleContext(0, Var_nameContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ZONE, 0); }
	public zone_value(): Zone_valueContext | undefined {
		return this.tryGetRuleContext(0, Zone_valueContext);
	}
	public KW_CATALOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CATALOG, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_NAMES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NAMES, 0); }
	public opt_encoding(): Opt_encodingContext | undefined {
		return this.tryGetRuleContext(0, Opt_encodingContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconstContext);
	}
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AUTHORIZATION, 0); }
	public KW_XML(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XML, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public document_or_content(): Document_or_contentContext | undefined {
		return this.tryGetRuleContext(0, Document_or_contentContext);
	}
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public KW_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SNAPSHOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_rest_more; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_rest_more) {
			listener.enterSet_rest_more(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_rest_more) {
			listener.exitSet_rest_more(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_rest_more) {
			return visitor.visitSet_rest_more(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Var_nameContext extends ParserRuleContext {
	public colid(): ColidContext[];
	public colid(i: number): ColidContext;
	public colid(i?: number): ColidContext | ColidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColidContext);
		} else {
			return this.getRuleContext(i, ColidContext);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.DOT);
		} else {
			return this.getToken(PostgreSQLParser.DOT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_var_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVar_name) {
			listener.enterVar_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVar_name) {
			listener.exitVar_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVar_name) {
			return visitor.visitVar_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Var_listContext extends ParserRuleContext {
	public var_value(): Var_valueContext[];
	public var_value(i: number): Var_valueContext;
	public var_value(i?: number): Var_valueContext | Var_valueContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Var_valueContext);
		} else {
			return this.getRuleContext(i, Var_valueContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_var_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVar_list) {
			listener.enterVar_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVar_list) {
			listener.exitVar_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVar_list) {
			return visitor.visitVar_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Var_valueContext extends ParserRuleContext {
	public opt_boolean_or_string(): Opt_boolean_or_stringContext | undefined {
		return this.tryGetRuleContext(0, Opt_boolean_or_stringContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_var_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVar_value) {
			listener.enterVar_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVar_value) {
			listener.exitVar_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVar_value) {
			return visitor.visitVar_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Iso_levelContext extends ParserRuleContext {
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_READ, 0); }
	public KW_UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNCOMMITTED, 0); }
	public KW_COMMITTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMITTED, 0); }
	public KW_REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPEATABLE, 0); }
	public KW_SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERIALIZABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_iso_level; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIso_level) {
			listener.enterIso_level(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIso_level) {
			listener.exitIso_level(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIso_level) {
			return visitor.visitIso_level(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_boolean_or_string_columnContext extends ParserRuleContext {
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public nonreservedword_or_sconst_column(): Nonreservedword_or_sconst_columnContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconst_columnContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_boolean_or_string_column; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_boolean_or_string_column) {
			listener.enterOpt_boolean_or_string_column(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_boolean_or_string_column) {
			listener.exitOpt_boolean_or_string_column(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_boolean_or_string_column) {
			return visitor.visitOpt_boolean_or_string_column(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_boolean_or_stringContext extends ParserRuleContext {
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_boolean_or_string; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_boolean_or_string) {
			listener.enterOpt_boolean_or_string(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_boolean_or_string) {
			listener.exitOpt_boolean_or_string(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_boolean_or_string) {
			return visitor.visitOpt_boolean_or_string(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Zone_valueContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public constinterval(): ConstintervalContext | undefined {
		return this.tryGetRuleContext(0, ConstintervalContext);
	}
	public opt_interval(): Opt_intervalContext | undefined {
		return this.tryGetRuleContext(0, Opt_intervalContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_zone_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterZone_value) {
			listener.enterZone_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitZone_value) {
			listener.exitZone_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitZone_value) {
			return visitor.visitZone_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_encodingContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_encoding; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_encoding) {
			listener.enterOpt_encoding(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_encoding) {
			listener.exitOpt_encoding(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_encoding) {
			return visitor.visitOpt_encoding(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Nonreservedword_or_sconst_columnContext extends ParserRuleContext {
	public nonreservedword_column(): Nonreservedword_columnContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_columnContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_nonreservedword_or_sconst_column; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNonreservedword_or_sconst_column) {
			listener.enterNonreservedword_or_sconst_column(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNonreservedword_or_sconst_column) {
			listener.exitNonreservedword_or_sconst_column(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNonreservedword_or_sconst_column) {
			return visitor.visitNonreservedword_or_sconst_column(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Nonreservedword_or_sconstContext extends ParserRuleContext {
	public nonreservedword(): NonreservedwordContext | undefined {
		return this.tryGetRuleContext(0, NonreservedwordContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_nonreservedword_or_sconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNonreservedword_or_sconst) {
			listener.enterNonreservedword_or_sconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNonreservedword_or_sconst) {
			listener.exitNonreservedword_or_sconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNonreservedword_or_sconst) {
			return visitor.visitNonreservedword_or_sconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableresetstmtContext extends ParserRuleContext {
	public KW_RESET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RESET, 0); }
	public reset_rest(): Reset_restContext {
		return this.getRuleContext(0, Reset_restContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_variableresetstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVariableresetstmt) {
			listener.enterVariableresetstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVariableresetstmt) {
			listener.exitVariableresetstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVariableresetstmt) {
			return visitor.visitVariableresetstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reset_restContext extends ParserRuleContext {
	public generic_reset(): Generic_resetContext | undefined {
		return this.tryGetRuleContext(0, Generic_resetContext);
	}
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ZONE, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISOLATION, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEVEL, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AUTHORIZATION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reset_rest; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReset_rest) {
			listener.enterReset_rest(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReset_rest) {
			listener.exitReset_rest(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReset_rest) {
			return visitor.visitReset_rest(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_resetContext extends ParserRuleContext {
	public var_name(): Var_nameContext | undefined {
		return this.tryGetRuleContext(0, Var_nameContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_reset; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_reset) {
			listener.enterGeneric_reset(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_reset) {
			listener.exitGeneric_reset(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_reset) {
			return visitor.visitGeneric_reset(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetresetclauseContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public set_rest(): Set_restContext | undefined {
		return this.tryGetRuleContext(0, Set_restContext);
	}
	public variableresetstmt(): VariableresetstmtContext | undefined {
		return this.tryGetRuleContext(0, VariableresetstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_setresetclause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSetresetclause) {
			listener.enterSetresetclause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSetresetclause) {
			listener.exitSetresetclause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSetresetclause) {
			return visitor.visitSetresetclause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionsetresetclauseContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public set_rest_more(): Set_rest_moreContext | undefined {
		return this.tryGetRuleContext(0, Set_rest_moreContext);
	}
	public variableresetstmt(): VariableresetstmtContext | undefined {
		return this.tryGetRuleContext(0, VariableresetstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_functionsetresetclause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunctionsetresetclause) {
			listener.enterFunctionsetresetclause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunctionsetresetclause) {
			listener.exitFunctionsetresetclause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunctionsetresetclause) {
			return visitor.visitFunctionsetresetclause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableshowstmtContext extends ParserRuleContext {
	public KW_SHOW(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SHOW, 0); }
	public var_name(): Var_nameContext | undefined {
		return this.tryGetRuleContext(0, Var_nameContext);
	}
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ZONE, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISOLATION, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEVEL, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AUTHORIZATION, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_variableshowstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVariableshowstmt) {
			listener.enterVariableshowstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVariableshowstmt) {
			listener.exitVariableshowstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVariableshowstmt) {
			return visitor.visitVariableshowstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintssetstmtContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public KW_CONSTRAINTS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONSTRAINTS, 0); }
	public constraints_set_list(): Constraints_set_listContext {
		return this.getRuleContext(0, Constraints_set_listContext);
	}
	public constraints_set_mode(): Constraints_set_modeContext {
		return this.getRuleContext(0, Constraints_set_modeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraintssetstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraintssetstmt) {
			listener.enterConstraintssetstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraintssetstmt) {
			listener.exitConstraintssetstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraintssetstmt) {
			return visitor.visitConstraintssetstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Constraints_set_listContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public qualified_name_list(): Qualified_name_listContext | undefined {
		return this.tryGetRuleContext(0, Qualified_name_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraints_set_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraints_set_list) {
			listener.enterConstraints_set_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraints_set_list) {
			listener.exitConstraints_set_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraints_set_list) {
			return visitor.visitConstraints_set_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Constraints_set_modeContext extends ParserRuleContext {
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRED, 0); }
	public KW_IMMEDIATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMEDIATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraints_set_mode; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraints_set_mode) {
			listener.enterConstraints_set_mode(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraints_set_mode) {
			listener.exitConstraints_set_mode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraints_set_mode) {
			return visitor.visitConstraints_set_mode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CheckpointstmtContext extends ParserRuleContext {
	public KW_CHECKPOINT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHECKPOINT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_checkpointstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCheckpointstmt) {
			listener.enterCheckpointstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCheckpointstmt) {
			listener.exitCheckpointstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCheckpointstmt) {
			return visitor.visitCheckpointstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DiscardstmtContext extends ParserRuleContext {
	public KW_DISCARD(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DISCARD, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_TEMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMP, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPORARY, 0); }
	public KW_PLANS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PLANS, 0); }
	public KW_SEQUENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_discardstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDiscardstmt) {
			listener.enterDiscardstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDiscardstmt) {
			listener.exitDiscardstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDiscardstmt) {
			return visitor.visitDiscardstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltertablestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public relation_expr(): Relation_exprContext | undefined {
		return this.tryGetRuleContext(0, Relation_exprContext);
	}
	public alter_table_cmds(): Alter_table_cmdsContext | undefined {
		return this.tryGetRuleContext(0, Alter_table_cmdsContext);
	}
	public partition_cmd(): Partition_cmdContext | undefined {
		return this.tryGetRuleContext(0, Partition_cmdContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_TABLESPACE(): TerminalNode[];
	public KW_TABLESPACE(i: number): TerminalNode;
	public KW_TABLESPACE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_TABLESPACE);
		} else {
			return this.getToken(PostgreSQLParser.KW_TABLESPACE, i);
		}
	}
	public tablespace_name(): Tablespace_nameContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_nameContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public tablespace_name_create(): Tablespace_name_createContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_name_createContext);
	}
	public KW_OWNED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public role_list(): Role_listContext | undefined {
		return this.tryGetRuleContext(0, Role_listContext);
	}
	public opt_nowait(): Opt_nowaitContext | undefined {
		return this.tryGetRuleContext(0, Opt_nowaitContext);
	}
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public KW_ATTACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ATTACH, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTITION, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_VALUES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUES, 0); }
	public partition_bound_spec(): Partition_bound_specContext | undefined {
		return this.tryGetRuleContext(0, Partition_bound_specContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_DETACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DETACH, 0); }
	public KW_CONCURRENTLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONCURRENTLY, 0); }
	public KW_FINALIZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FINALIZE, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public index_partition_cmd(): Index_partition_cmdContext | undefined {
		return this.tryGetRuleContext(0, Index_partition_cmdContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext | undefined {
		return this.tryGetRuleContext(0, View_nameContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altertablestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltertablestmt) {
			listener.enterAltertablestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltertablestmt) {
			listener.exitAltertablestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltertablestmt) {
			return visitor.visitAltertablestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_table_cmdsContext extends ParserRuleContext {
	public alter_table_cmd(): Alter_table_cmdContext[];
	public alter_table_cmd(i: number): Alter_table_cmdContext;
	public alter_table_cmd(i?: number): Alter_table_cmdContext | Alter_table_cmdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Alter_table_cmdContext);
		} else {
			return this.getRuleContext(i, Alter_table_cmdContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_table_cmds; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_table_cmds) {
			listener.enterAlter_table_cmds(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_table_cmds) {
			listener.exitAlter_table_cmds(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_table_cmds) {
			return visitor.visitAlter_table_cmds(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Partition_bound_specContext extends ParserRuleContext {
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public opt_type_modifiers(): Opt_type_modifiersContext | undefined {
		return this.tryGetRuleContext(0, Opt_type_modifiersContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public partition_bound_cluase(): Partition_bound_cluaseContext[];
	public partition_bound_cluase(i: number): Partition_bound_cluaseContext;
	public partition_bound_cluase(i?: number): Partition_bound_cluaseContext | Partition_bound_cluaseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Partition_bound_cluaseContext);
		} else {
			return this.getRuleContext(i, Partition_bound_cluaseContext);
		}
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public partition_with_cluase(): Partition_with_cluaseContext | undefined {
		return this.tryGetRuleContext(0, Partition_with_cluaseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partition_bound_spec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartition_bound_spec) {
			listener.enterPartition_bound_spec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartition_bound_spec) {
			listener.exitPartition_bound_spec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartition_bound_spec) {
			return visitor.visitPartition_bound_spec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Partition_bound_cluaseContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public partition_bound_choose(): Partition_bound_chooseContext[];
	public partition_bound_choose(i: number): Partition_bound_chooseContext;
	public partition_bound_choose(i?: number): Partition_bound_chooseContext | Partition_bound_chooseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Partition_bound_chooseContext);
		} else {
			return this.getRuleContext(i, Partition_bound_chooseContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partition_bound_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartition_bound_cluase) {
			listener.enterPartition_bound_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartition_bound_cluase) {
			listener.exitPartition_bound_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartition_bound_cluase) {
			return visitor.visitPartition_bound_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Partition_bound_chooseContext extends ParserRuleContext {
	public opt_type_modifiers(): Opt_type_modifiersContext | undefined {
		return this.tryGetRuleContext(0, Opt_type_modifiersContext);
	}
	public KW_MINVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINVALUE, 0); }
	public KW_MAXVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAXVALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partition_bound_choose; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartition_bound_choose) {
			listener.enterPartition_bound_choose(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartition_bound_choose) {
			listener.exitPartition_bound_choose(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartition_bound_choose) {
			return visitor.visitPartition_bound_choose(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Partition_with_cluaseContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public KW_MODULUS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MODULUS, 0); }
	public numericonly(): NumericonlyContext[];
	public numericonly(i: number): NumericonlyContext;
	public numericonly(i?: number): NumericonlyContext | NumericonlyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NumericonlyContext);
		} else {
			return this.getRuleContext(i, NumericonlyContext);
		}
	}
	public COMMA(): TerminalNode { return this.getToken(PostgreSQLParser.COMMA, 0); }
	public KW_REMAINDER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REMAINDER, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partition_with_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartition_with_cluase) {
			listener.enterPartition_with_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartition_with_cluase) {
			listener.exitPartition_with_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartition_with_cluase) {
			return visitor.visitPartition_with_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Partition_cmdContext extends ParserRuleContext {
	public KW_ATTACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ATTACH, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PARTITION, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public partitionboundspec(): PartitionboundspecContext | undefined {
		return this.tryGetRuleContext(0, PartitionboundspecContext);
	}
	public KW_DETACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DETACH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partition_cmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartition_cmd) {
			listener.enterPartition_cmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartition_cmd) {
			listener.exitPartition_cmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartition_cmd) {
			return visitor.visitPartition_cmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_partition_cmdContext extends ParserRuleContext {
	public KW_ATTACH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ATTACH, 0); }
	public KW_PARTITION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PARTITION, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_partition_cmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_partition_cmd) {
			listener.enterIndex_partition_cmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_partition_cmd) {
			listener.exitIndex_partition_cmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_partition_cmd) {
			return visitor.visitIndex_partition_cmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_table_cmdContext extends ParserRuleContext {
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public columnDefCluase(): ColumnDefCluaseContext | undefined {
		return this.tryGetRuleContext(0, ColumnDefCluaseContext);
	}
	public opt_column(): Opt_columnContext | undefined {
		return this.tryGetRuleContext(0, Opt_columnContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public KW_ALTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALTER, 0); }
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public alter_column_default(): Alter_column_defaultContext | undefined {
		return this.tryGetRuleContext(0, Alter_column_defaultContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_EXPRESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXPRESSION, 0); }
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public signediconst(): SignediconstContext | undefined {
		return this.tryGetRuleContext(0, SignediconstContext);
	}
	public reloptions(): ReloptionsContext | undefined {
		return this.tryGetRuleContext(0, ReloptionsContext);
	}
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORAGE, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GENERATED, 0); }
	public generated_when(): Generated_whenContext | undefined {
		return this.tryGetRuleContext(0, Generated_whenContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public KW_IDENTITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IDENTITY, 0); }
	public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext | undefined {
		return this.tryGetRuleContext(0, OptparenthesizedseqoptlistContext);
	}
	public alter_identity_column_option_list(): Alter_identity_column_option_listContext | undefined {
		return this.tryGetRuleContext(0, Alter_identity_column_option_listContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public opt_set_data(): Opt_set_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_set_dataContext);
	}
	public opt_collate_clause(): Opt_collate_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_collate_clauseContext);
	}
	public alter_using(): Alter_usingContext | undefined {
		return this.tryGetRuleContext(0, Alter_usingContext);
	}
	public alter_generic_options(): Alter_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Alter_generic_optionsContext);
	}
	public tableconstraint(): TableconstraintContext | undefined {
		return this.tryGetRuleContext(0, TableconstraintContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public constraintattributespec(): ConstraintattributespecContext | undefined {
		return this.tryGetRuleContext(0, ConstraintattributespecContext);
	}
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALIDATE, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	public KW_OIDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OIDS, 0); }
	public KW_CLUSTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLUSTER, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_LOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOGGED, 0); }
	public KW_UNLOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNLOGGED, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENABLE, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_ALWAYS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALWAYS, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLICA, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISABLE, 0); }
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_INHERIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INHERIT, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name_create(): Tablespace_name_createContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_name_createContext);
	}
	public replica_identity(): Replica_identityContext | undefined {
		return this.tryGetRuleContext(0, Replica_identityContext);
	}
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEVEL, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORCE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_table_cmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_table_cmd) {
			listener.enterAlter_table_cmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_table_cmd) {
			listener.exitAlter_table_cmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_table_cmd) {
			return visitor.visitAlter_table_cmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_column_defaultContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_DEFAULT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_column_default; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_column_default) {
			listener.enterAlter_column_default(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_column_default) {
			listener.exitAlter_column_default(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_column_default) {
			return visitor.visitAlter_column_default(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_drop_behaviorContext extends ParserRuleContext {
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADE, 0); }
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_drop_behavior; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_drop_behavior) {
			listener.enterOpt_drop_behavior(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_drop_behavior) {
			listener.exitOpt_drop_behavior(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_drop_behavior) {
			return visitor.visitOpt_drop_behavior(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_collate_clauseContext extends ParserRuleContext {
	public KW_COLLATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_collate_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_collate_clause) {
			listener.enterOpt_collate_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_collate_clause) {
			listener.exitOpt_collate_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_collate_clause) {
			return visitor.visitOpt_collate_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_usingContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_using; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_using) {
			listener.enterAlter_using(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_using) {
			listener.exitAlter_using(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_using) {
			return visitor.visitAlter_using(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Replica_identityContext extends ParserRuleContext {
	public KW_NOTHING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTHING, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FULL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_replica_identity; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReplica_identity) {
			listener.enterReplica_identity(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReplica_identity) {
			listener.exitReplica_identity(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReplica_identity) {
			return visitor.visitReplica_identity(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReloptionsContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public reloption_list(): Reloption_listContext {
		return this.getRuleContext(0, Reloption_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reloptions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReloptions) {
			listener.enterReloptions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReloptions) {
			listener.exitReloptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReloptions) {
			return visitor.visitReloptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_reloptionsContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public reloptions(): ReloptionsContext {
		return this.getRuleContext(0, ReloptionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_reloptions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_reloptions) {
			listener.enterOpt_reloptions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_reloptions) {
			listener.exitOpt_reloptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_reloptions) {
			return visitor.visitOpt_reloptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reloption_listContext extends ParserRuleContext {
	public reloption_elem(): Reloption_elemContext[];
	public reloption_elem(i: number): Reloption_elemContext;
	public reloption_elem(i?: number): Reloption_elemContext | Reloption_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Reloption_elemContext);
		} else {
			return this.getRuleContext(i, Reloption_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reloption_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReloption_list) {
			listener.enterReloption_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReloption_list) {
			listener.exitReloption_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReloption_list) {
			return visitor.visitReloption_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reloption_elemContext extends ParserRuleContext {
	public collabel(): CollabelContext[];
	public collabel(i: number): CollabelContext;
	public collabel(i?: number): CollabelContext | CollabelContext[] {
		if (i === undefined) {
			return this.getRuleContexts(CollabelContext);
		} else {
			return this.getRuleContext(i, CollabelContext);
		}
	}
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public def_arg(): Def_argContext | undefined {
		return this.tryGetRuleContext(0, Def_argContext);
	}
	public DOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.DOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reloption_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReloption_elem) {
			listener.enterReloption_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReloption_elem) {
			listener.exitReloption_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReloption_elem) {
			return visitor.visitReloption_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_identity_column_option_listContext extends ParserRuleContext {
	public alter_identity_column_option(): Alter_identity_column_optionContext[];
	public alter_identity_column_option(i: number): Alter_identity_column_optionContext;
	public alter_identity_column_option(i?: number): Alter_identity_column_optionContext | Alter_identity_column_optionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Alter_identity_column_optionContext);
		} else {
			return this.getRuleContext(i, Alter_identity_column_optionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_identity_column_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_identity_column_option_list) {
			listener.enterAlter_identity_column_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_identity_column_option_list) {
			listener.exitAlter_identity_column_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_identity_column_option_list) {
			return visitor.visitAlter_identity_column_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_identity_column_optionContext extends ParserRuleContext {
	public KW_RESTART(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTART, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public seqoptelem(): SeqoptelemContext | undefined {
		return this.tryGetRuleContext(0, SeqoptelemContext);
	}
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GENERATED, 0); }
	public generated_when(): Generated_whenContext | undefined {
		return this.tryGetRuleContext(0, Generated_whenContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_identity_column_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_identity_column_option) {
			listener.enterAlter_identity_column_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_identity_column_option) {
			listener.exitAlter_identity_column_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_identity_column_option) {
			return visitor.visitAlter_identity_column_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionboundspecContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_VALUES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUES, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public OPEN_PAREN(): TerminalNode[];
	public OPEN_PAREN(i: number): TerminalNode;
	public OPEN_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_PAREN, i);
		}
	}
	public hash_partbound(): Hash_partboundContext | undefined {
		return this.tryGetRuleContext(0, Hash_partboundContext);
	}
	public CLOSE_PAREN(): TerminalNode[];
	public CLOSE_PAREN(i: number): TerminalNode;
	public CLOSE_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_PAREN, i);
		}
	}
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public expr_list(): Expr_listContext[];
	public expr_list(i: number): Expr_listContext;
	public expr_list(i?: number): Expr_listContext | Expr_listContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Expr_listContext);
		} else {
			return this.getRuleContext(i, Expr_listContext);
		}
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partitionboundspec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartitionboundspec) {
			listener.enterPartitionboundspec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartitionboundspec) {
			listener.exitPartitionboundspec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartitionboundspec) {
			return visitor.visitPartitionboundspec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Hash_partbound_elemContext extends ParserRuleContext {
	public nonreservedword(): NonreservedwordContext {
		return this.getRuleContext(0, NonreservedwordContext);
	}
	public iconst(): IconstContext {
		return this.getRuleContext(0, IconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_hash_partbound_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterHash_partbound_elem) {
			listener.enterHash_partbound_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitHash_partbound_elem) {
			listener.exitHash_partbound_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitHash_partbound_elem) {
			return visitor.visitHash_partbound_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Hash_partboundContext extends ParserRuleContext {
	public hash_partbound_elem(): Hash_partbound_elemContext[];
	public hash_partbound_elem(i: number): Hash_partbound_elemContext;
	public hash_partbound_elem(i?: number): Hash_partbound_elemContext | Hash_partbound_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Hash_partbound_elemContext);
		} else {
			return this.getRuleContext(i, Hash_partbound_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_hash_partbound; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterHash_partbound) {
			listener.enterHash_partbound(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitHash_partbound) {
			listener.exitHash_partbound(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitHash_partbound) {
			return visitor.visitHash_partbound(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltercompositetypestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public alter_type_cmds(): Alter_type_cmdsContext {
		return this.getRuleContext(0, Alter_type_cmdsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altercompositetypestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltercompositetypestmt) {
			listener.enterAltercompositetypestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltercompositetypestmt) {
			listener.exitAltercompositetypestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltercompositetypestmt) {
			return visitor.visitAltercompositetypestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_type_cmdsContext extends ParserRuleContext {
	public alter_type_cmd(): Alter_type_cmdContext[];
	public alter_type_cmd(i: number): Alter_type_cmdContext;
	public alter_type_cmd(i?: number): Alter_type_cmdContext | Alter_type_cmdContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Alter_type_cmdContext);
		} else {
			return this.getRuleContext(i, Alter_type_cmdContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_type_cmds; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_type_cmds) {
			listener.enterAlter_type_cmds(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_type_cmds) {
			listener.exitAlter_type_cmds(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_type_cmds) {
			return visitor.visitAlter_type_cmds(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_type_cmdContext extends ParserRuleContext {
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_ATTRIBUTE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ATTRIBUTE, 0); }
	public tablefuncelement(): TablefuncelementContext | undefined {
		return this.tryGetRuleContext(0, TablefuncelementContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public KW_ALTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public opt_set_data(): Opt_set_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_set_dataContext);
	}
	public opt_collate_clause(): Opt_collate_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_collate_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_type_cmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_type_cmd) {
			listener.enterAlter_type_cmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_type_cmd) {
			listener.exitAlter_type_cmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_type_cmd) {
			return visitor.visitAlter_type_cmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CloseportalstmtContext extends ParserRuleContext {
	public KW_CLOSE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CLOSE, 0); }
	public cursor_name(): Cursor_nameContext | undefined {
		return this.tryGetRuleContext(0, Cursor_nameContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_closeportalstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCloseportalstmt) {
			listener.enterCloseportalstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCloseportalstmt) {
			listener.exitCloseportalstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCloseportalstmt) {
			return visitor.visitCloseportalstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CopystmtContext extends ParserRuleContext {
	public KW_COPY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COPY, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public copy_from(): Copy_fromContext | undefined {
		return this.tryGetRuleContext(0, Copy_fromContext);
	}
	public copy_file_name(): Copy_file_nameContext {
		return this.getRuleContext(0, Copy_file_nameContext);
	}
	public copy_options(): Copy_optionsContext {
		return this.getRuleContext(0, Copy_optionsContext);
	}
	public opt_binary(): Opt_binaryContext | undefined {
		return this.tryGetRuleContext(0, Opt_binaryContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public opt_program(): Opt_programContext | undefined {
		return this.tryGetRuleContext(0, Opt_programContext);
	}
	public copy_delimiter(): Copy_delimiterContext | undefined {
		return this.tryGetRuleContext(0, Copy_delimiterContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public preparablestmt(): PreparablestmtContext | undefined {
		return this.tryGetRuleContext(0, PreparablestmtContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopystmt) {
			listener.enterCopystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopystmt) {
			listener.exitCopystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopystmt) {
			return visitor.visitCopystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_fromContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_from; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_from) {
			listener.enterCopy_from(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_from) {
			listener.exitCopy_from(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_from) {
			return visitor.visitCopy_from(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_programContext extends ParserRuleContext {
	public KW_PROGRAM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PROGRAM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_program; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_program) {
			listener.enterOpt_program(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_program) {
			listener.exitOpt_program(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_program) {
			return visitor.visitOpt_program(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_file_nameContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_STDIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STDIN, 0); }
	public KW_STDOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STDOUT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_file_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_file_name) {
			listener.enterCopy_file_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_file_name) {
			listener.exitCopy_file_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_file_name) {
			return visitor.visitCopy_file_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_optionsContext extends ParserRuleContext {
	public copy_opt_list(): Copy_opt_listContext | undefined {
		return this.tryGetRuleContext(0, Copy_opt_listContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public copy_generic_opt_list(): Copy_generic_opt_listContext | undefined {
		return this.tryGetRuleContext(0, Copy_generic_opt_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_options) {
			listener.enterCopy_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_options) {
			listener.exitCopy_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_options) {
			return visitor.visitCopy_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_opt_listContext extends ParserRuleContext {
	public copy_opt_item(): Copy_opt_itemContext[];
	public copy_opt_item(i: number): Copy_opt_itemContext;
	public copy_opt_item(i?: number): Copy_opt_itemContext | Copy_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Copy_opt_itemContext);
		} else {
			return this.getRuleContext(i, Copy_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_opt_list) {
			listener.enterCopy_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_opt_list) {
			listener.exitCopy_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_opt_list) {
			return visitor.visitCopy_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_opt_itemContext extends ParserRuleContext {
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BINARY, 0); }
	public KW_FREEZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FREEZE, 0); }
	public KW_DELIMITER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELIMITER, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public opt_as(): Opt_asContext | undefined {
		return this.tryGetRuleContext(0, Opt_asContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_CSV(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CSV, 0); }
	public KW_HEADER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HEADER, 0); }
	public KW_QUOTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_QUOTE, 0); }
	public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ESCAPE, 0); }
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORCE, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_ENCODING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENCODING, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_opt_item) {
			listener.enterCopy_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_opt_item) {
			listener.exitCopy_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_opt_item) {
			return visitor.visitCopy_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_binaryContext extends ParserRuleContext {
	public KW_BINARY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BINARY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_binary; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_binary) {
			listener.enterOpt_binary(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_binary) {
			listener.exitOpt_binary(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_binary) {
			return visitor.visitOpt_binary(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_delimiterContext extends ParserRuleContext {
	public KW_DELIMITERS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DELIMITERS, 0); }
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	public opt_using(): Opt_usingContext | undefined {
		return this.tryGetRuleContext(0, Opt_usingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_delimiter; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_delimiter) {
			listener.enterCopy_delimiter(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_delimiter) {
			listener.exitCopy_delimiter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_delimiter) {
			return visitor.visitCopy_delimiter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_usingContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_using; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_using) {
			listener.enterOpt_using(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_using) {
			listener.exitOpt_using(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_using) {
			return visitor.visitOpt_using(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_generic_opt_listContext extends ParserRuleContext {
	public copy_generic_opt_elem(): Copy_generic_opt_elemContext[];
	public copy_generic_opt_elem(i: number): Copy_generic_opt_elemContext;
	public copy_generic_opt_elem(i?: number): Copy_generic_opt_elemContext | Copy_generic_opt_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Copy_generic_opt_elemContext);
		} else {
			return this.getRuleContext(i, Copy_generic_opt_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_generic_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_generic_opt_list) {
			listener.enterCopy_generic_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_generic_opt_list) {
			listener.exitCopy_generic_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_generic_opt_list) {
			return visitor.visitCopy_generic_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_generic_opt_elemContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	public copy_generic_opt_arg(): Copy_generic_opt_argContext | undefined {
		return this.tryGetRuleContext(0, Copy_generic_opt_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_generic_opt_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_generic_opt_elem) {
			listener.enterCopy_generic_opt_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_generic_opt_elem) {
			listener.exitCopy_generic_opt_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_generic_opt_elem) {
			return visitor.visitCopy_generic_opt_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_generic_opt_argContext extends ParserRuleContext {
	public opt_boolean_or_string(): Opt_boolean_or_stringContext | undefined {
		return this.tryGetRuleContext(0, Opt_boolean_or_stringContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public copy_generic_opt_arg_list(): Copy_generic_opt_arg_listContext | undefined {
		return this.tryGetRuleContext(0, Copy_generic_opt_arg_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_generic_opt_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_generic_opt_arg) {
			listener.enterCopy_generic_opt_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_generic_opt_arg) {
			listener.exitCopy_generic_opt_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_generic_opt_arg) {
			return visitor.visitCopy_generic_opt_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_generic_opt_arg_listContext extends ParserRuleContext {
	public copy_generic_opt_arg_list_item(): Copy_generic_opt_arg_list_itemContext[];
	public copy_generic_opt_arg_list_item(i: number): Copy_generic_opt_arg_list_itemContext;
	public copy_generic_opt_arg_list_item(i?: number): Copy_generic_opt_arg_list_itemContext | Copy_generic_opt_arg_list_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Copy_generic_opt_arg_list_itemContext);
		} else {
			return this.getRuleContext(i, Copy_generic_opt_arg_list_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_generic_opt_arg_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_generic_opt_arg_list) {
			listener.enterCopy_generic_opt_arg_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_generic_opt_arg_list) {
			listener.exitCopy_generic_opt_arg_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_generic_opt_arg_list) {
			return visitor.visitCopy_generic_opt_arg_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Copy_generic_opt_arg_list_itemContext extends ParserRuleContext {
	public opt_boolean_or_string_column(): Opt_boolean_or_string_columnContext {
		return this.getRuleContext(0, Opt_boolean_or_string_columnContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_copy_generic_opt_arg_list_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCopy_generic_opt_arg_list_item) {
			listener.enterCopy_generic_opt_arg_list_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCopy_generic_opt_arg_list_item) {
			listener.exitCopy_generic_opt_arg_list_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCopy_generic_opt_arg_list_item) {
			return visitor.visitCopy_generic_opt_arg_list_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name_create(): Table_name_createContext {
		return this.getRuleContext(0, Table_name_createContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTITION, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public partitionboundspec(): PartitionboundspecContext | undefined {
		return this.tryGetRuleContext(0, PartitionboundspecContext);
	}
	public opttemp(): OpttempContext | undefined {
		return this.tryGetRuleContext(0, OpttempContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public table_column_list(): Table_column_listContext | undefined {
		return this.tryGetRuleContext(0, Table_column_listContext);
	}
	public optinherit(): OptinheritContext | undefined {
		return this.tryGetRuleContext(0, OptinheritContext);
	}
	public optpartitionspec(): OptpartitionspecContext | undefined {
		return this.tryGetRuleContext(0, OptpartitionspecContext);
	}
	public table_access_method_clause(): Table_access_method_clauseContext | undefined {
		return this.tryGetRuleContext(0, Table_access_method_clauseContext);
	}
	public optwith(): OptwithContext | undefined {
		return this.tryGetRuleContext(0, OptwithContext);
	}
	public oncommitoption(): OncommitoptionContext | undefined {
		return this.tryGetRuleContext(0, OncommitoptionContext);
	}
	public opttablespace(): OpttablespaceContext | undefined {
		return this.tryGetRuleContext(0, OpttablespaceContext);
	}
	public opttypedtableelementlist(): OpttypedtableelementlistContext | undefined {
		return this.tryGetRuleContext(0, OpttypedtableelementlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatestmt) {
			listener.enterCreatestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatestmt) {
			listener.exitCreatestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatestmt) {
			return visitor.visitCreatestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttempContext extends ParserRuleContext {
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPORARY, 0); }
	public KW_TEMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMP, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GLOBAL, 0); }
	public KW_UNLOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNLOGGED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttemp; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttemp) {
			listener.enterOpttemp(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttemp) {
			listener.exitOpttemp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttemp) {
			return visitor.visitOpttemp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_column_listContext extends ParserRuleContext {
	public tableelementlist(): TableelementlistContext {
		return this.getRuleContext(0, TableelementlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_column_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_column_list) {
			listener.enterTable_column_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_column_list) {
			listener.exitTable_column_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_column_list) {
			return visitor.visitTable_column_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttableelementlistContext extends ParserRuleContext {
	public tableelementlist(): TableelementlistContext {
		return this.getRuleContext(0, TableelementlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttableelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttableelementlist) {
			listener.enterOpttableelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttableelementlist) {
			listener.exitOpttableelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttableelementlist) {
			return visitor.visitOpttableelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttypedtableelementlistContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public typedtableelementlist(): TypedtableelementlistContext {
		return this.getRuleContext(0, TypedtableelementlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttypedtableelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttypedtableelementlist) {
			listener.enterOpttypedtableelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttypedtableelementlist) {
			listener.exitOpttypedtableelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttypedtableelementlist) {
			return visitor.visitOpttypedtableelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableelementlistContext extends ParserRuleContext {
	public tableelement(): TableelementContext[];
	public tableelement(i: number): TableelementContext;
	public tableelement(i?: number): TableelementContext | TableelementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TableelementContext);
		} else {
			return this.getRuleContext(i, TableelementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tableelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTableelementlist) {
			listener.enterTableelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTableelementlist) {
			listener.exitTableelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTableelementlist) {
			return visitor.visitTableelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypedtableelementlistContext extends ParserRuleContext {
	public typedtableelement(): TypedtableelementContext[];
	public typedtableelement(i: number): TypedtableelementContext;
	public typedtableelement(i?: number): TypedtableelementContext | TypedtableelementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypedtableelementContext);
		} else {
			return this.getRuleContext(i, TypedtableelementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_typedtableelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTypedtableelementlist) {
			listener.enterTypedtableelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTypedtableelementlist) {
			listener.exitTypedtableelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTypedtableelementlist) {
			return visitor.visitTypedtableelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableelementContext extends ParserRuleContext {
	public columnDef(): ColumnDefContext | undefined {
		return this.tryGetRuleContext(0, ColumnDefContext);
	}
	public tablelikeclause(): TablelikeclauseContext | undefined {
		return this.tryGetRuleContext(0, TablelikeclauseContext);
	}
	public tableconstraint(): TableconstraintContext | undefined {
		return this.tryGetRuleContext(0, TableconstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tableelement; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTableelement) {
			listener.enterTableelement(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTableelement) {
			listener.exitTableelement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTableelement) {
			return visitor.visitTableelement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypedtableelementContext extends ParserRuleContext {
	public columnOptions(): ColumnOptionsContext | undefined {
		return this.tryGetRuleContext(0, ColumnOptionsContext);
	}
	public tableconstraint(): TableconstraintContext | undefined {
		return this.tryGetRuleContext(0, TableconstraintContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_typedtableelement; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTypedtableelement) {
			listener.enterTypedtableelement(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTypedtableelement) {
			listener.exitTypedtableelement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTypedtableelement) {
			return visitor.visitTypedtableelement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnDefCluaseContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public colquallist(): ColquallistContext {
		return this.getRuleContext(0, ColquallistContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	public storageCluase(): StorageCluaseContext | undefined {
		return this.tryGetRuleContext(0, StorageCluaseContext);
	}
	public compressionCluase(): CompressionCluaseContext | undefined {
		return this.tryGetRuleContext(0, CompressionCluaseContext);
	}
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_OPTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTIONS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_columnDefCluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumnDefCluase) {
			listener.enterColumnDefCluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumnDefCluase) {
			listener.exitColumnDefCluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumnDefCluase) {
			return visitor.visitColumnDefCluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnDefContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public colquallist(): ColquallistContext {
		return this.getRuleContext(0, ColquallistContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	public storageCluase(): StorageCluaseContext | undefined {
		return this.tryGetRuleContext(0, StorageCluaseContext);
	}
	public compressionCluase(): CompressionCluaseContext | undefined {
		return this.tryGetRuleContext(0, CompressionCluaseContext);
	}
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_OPTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTIONS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_columnDef; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumnDef) {
			listener.enterColumnDef(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumnDef) {
			listener.exitColumnDef(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumnDef) {
			return visitor.visitColumnDef(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CompressionCluaseContext extends ParserRuleContext {
	public KW_COMPRESSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COMPRESSION, 0); }
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_compressionCluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCompressionCluase) {
			listener.enterCompressionCluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCompressionCluase) {
			listener.exitCompressionCluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCompressionCluase) {
			return visitor.visitCompressionCluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StorageCluaseContext extends ParserRuleContext {
	public KW_STORAGE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_STORAGE, 0); }
	public KW_PLAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PLAIN, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTERNAL, 0); }
	public KW_EXTENDED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENDED, 0); }
	public KW_MAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAIN, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_storageCluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStorageCluase) {
			listener.enterStorageCluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStorageCluase) {
			listener.exitStorageCluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStorageCluase) {
			return visitor.visitStorageCluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnOptionsContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public colquallist(): ColquallistContext {
		return this.getRuleContext(0, ColquallistContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_OPTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTIONS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_columnOptions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumnOptions) {
			listener.enterColumnOptions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumnOptions) {
			listener.exitColumnOptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumnOptions) {
			return visitor.visitColumnOptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColquallistContext extends ParserRuleContext {
	public colconstraint(): ColconstraintContext[];
	public colconstraint(i: number): ColconstraintContext;
	public colconstraint(i?: number): ColconstraintContext | ColconstraintContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColconstraintContext);
		} else {
			return this.getRuleContext(i, ColconstraintContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_colquallist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColquallist) {
			listener.enterColquallist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColquallist) {
			listener.exitColquallist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColquallist) {
			return visitor.visitColquallist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColconstraintContext extends ParserRuleContext {
	public colconstraintelem(): ColconstraintelemContext {
		return this.getRuleContext(0, ColconstraintelemContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public deferrable_trigger(): Deferrable_triggerContext | undefined {
		return this.tryGetRuleContext(0, Deferrable_triggerContext);
	}
	public initially_trigger(): Initially_triggerContext | undefined {
		return this.tryGetRuleContext(0, Initially_triggerContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_colconstraint; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColconstraint) {
			listener.enterColconstraint(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColconstraint) {
			listener.exitColconstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColconstraint) {
			return visitor.visitColconstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColconstraintelemContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNIQUE, 0); }
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	public optconstablespace(): OptconstablespaceContext | undefined {
		return this.tryGetRuleContext(0, OptconstablespaceContext);
	}
	public index_paramenters_create(): Index_paramenters_createContext | undefined {
		return this.tryGetRuleContext(0, Index_paramenters_createContext);
	}
	public nulls_distinct(): Nulls_distinctContext | undefined {
		return this.tryGetRuleContext(0, Nulls_distinctContext);
	}
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIMARY, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_KEY, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHECK, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_no_inherit(): Opt_no_inheritContext | undefined {
		return this.tryGetRuleContext(0, Opt_no_inheritContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public b_expr(): B_exprContext | undefined {
		return this.tryGetRuleContext(0, B_exprContext);
	}
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GENERATED, 0); }
	public generated_when(): Generated_whenContext | undefined {
		return this.tryGetRuleContext(0, Generated_whenContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public KW_IDENTITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IDENTITY, 0); }
	public KW_STORED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORED, 0); }
	public optparenthesizedseqoptlist(): OptparenthesizedseqoptlistContext | undefined {
		return this.tryGetRuleContext(0, OptparenthesizedseqoptlistContext);
	}
	public KW_REFERENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFERENCES, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public key_match(): Key_matchContext | undefined {
		return this.tryGetRuleContext(0, Key_matchContext);
	}
	public key_actions(): Key_actionsContext | undefined {
		return this.tryGetRuleContext(0, Key_actionsContext);
	}
	public opt_collate(): Opt_collateContext | undefined {
		return this.tryGetRuleContext(0, Opt_collateContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_colconstraintelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColconstraintelem) {
			listener.enterColconstraintelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColconstraintelem) {
			listener.exitColconstraintelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColconstraintelem) {
			return visitor.visitColconstraintelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Nulls_distinctContext extends ParserRuleContext {
	public KW_NULLS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NULLS, 0); }
	public KW_DISTINCT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_nulls_distinct; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNulls_distinct) {
			listener.enterNulls_distinct(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNulls_distinct) {
			listener.exitNulls_distinct(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNulls_distinct) {
			return visitor.visitNulls_distinct(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generated_whenContext extends ParserRuleContext {
	public KW_ALWAYS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALWAYS, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generated_when; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGenerated_when) {
			listener.enterGenerated_when(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGenerated_when) {
			listener.exitGenerated_when(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGenerated_when) {
			return visitor.visitGenerated_when(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Deferrable_triggerContext extends ParserRuleContext {
	public KW_DEFERRABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEFERRABLE, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_deferrable_trigger; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDeferrable_trigger) {
			listener.enterDeferrable_trigger(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDeferrable_trigger) {
			listener.exitDeferrable_trigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDeferrable_trigger) {
			return visitor.visitDeferrable_trigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Initially_triggerContext extends ParserRuleContext {
	public KW_INITIALLY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INITIALLY, 0); }
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRED, 0); }
	public KW_IMMEDIATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMEDIATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_initially_trigger; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInitially_trigger) {
			listener.enterInitially_trigger(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInitially_trigger) {
			listener.exitInitially_trigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInitially_trigger) {
			return visitor.visitInitially_trigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablelikeclauseContext extends ParserRuleContext {
	public KW_LIKE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LIKE, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public tablelikeoptionlist(): TablelikeoptionlistContext {
		return this.getRuleContext(0, TablelikeoptionlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablelikeclause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablelikeclause) {
			listener.enterTablelikeclause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablelikeclause) {
			listener.exitTablelikeclause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablelikeclause) {
			return visitor.visitTablelikeclause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablelikeoptionlistContext extends ParserRuleContext {
	public tablelikeoption(): TablelikeoptionContext[];
	public tablelikeoption(i: number): TablelikeoptionContext;
	public tablelikeoption(i?: number): TablelikeoptionContext | TablelikeoptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TablelikeoptionContext);
		} else {
			return this.getRuleContext(i, TablelikeoptionContext);
		}
	}
	public KW_INCLUDING(): TerminalNode[];
	public KW_INCLUDING(i: number): TerminalNode;
	public KW_INCLUDING(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_INCLUDING);
		} else {
			return this.getToken(PostgreSQLParser.KW_INCLUDING, i);
		}
	}
	public KW_EXCLUDING(): TerminalNode[];
	public KW_EXCLUDING(i: number): TerminalNode;
	public KW_EXCLUDING(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_EXCLUDING);
		} else {
			return this.getToken(PostgreSQLParser.KW_EXCLUDING, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablelikeoptionlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablelikeoptionlist) {
			listener.enterTablelikeoptionlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablelikeoptionlist) {
			listener.exitTablelikeoptionlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablelikeoptionlist) {
			return visitor.visitTablelikeoptionlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablelikeoptionContext extends ParserRuleContext {
	public KW_COMMENTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMENTS, 0); }
	public KW_CONSTRAINTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINTS, 0); }
	public KW_DEFAULTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULTS, 0); }
	public KW_IDENTITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IDENTITY, 0); }
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GENERATED, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEXES, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORAGE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablelikeoption; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablelikeoption) {
			listener.enterTablelikeoption(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablelikeoption) {
			listener.exitTablelikeoption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablelikeoption) {
			return visitor.visitTablelikeoption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TableconstraintContext extends ParserRuleContext {
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public constraintelem(): ConstraintelemContext {
		return this.getRuleContext(0, ConstraintelemContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tableconstraint; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTableconstraint) {
			listener.enterTableconstraint(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTableconstraint) {
			listener.exitTableconstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTableconstraint) {
			return visitor.visitTableconstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintelemContext extends ParserRuleContext {
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHECK, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public constraintattributespec(): ConstraintattributespecContext | undefined {
		return this.tryGetRuleContext(0, ConstraintattributespecContext);
	}
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNIQUE, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public existingindex(): ExistingindexContext | undefined {
		return this.tryGetRuleContext(0, ExistingindexContext);
	}
	public opt_c_include(): Opt_c_includeContext | undefined {
		return this.tryGetRuleContext(0, Opt_c_includeContext);
	}
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	public optconstablespace(): OptconstablespaceContext | undefined {
		return this.tryGetRuleContext(0, OptconstablespaceContext);
	}
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIMARY, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_KEY, 0); }
	public KW_EXCLUDE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCLUDE, 0); }
	public exclusionconstraintlist(): ExclusionconstraintlistContext | undefined {
		return this.tryGetRuleContext(0, ExclusionconstraintlistContext);
	}
	public access_method_clause(): Access_method_clauseContext | undefined {
		return this.tryGetRuleContext(0, Access_method_clauseContext);
	}
	public exclusionwhereclause(): ExclusionwhereclauseContext | undefined {
		return this.tryGetRuleContext(0, ExclusionwhereclauseContext);
	}
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_REFERENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFERENCES, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public key_match(): Key_matchContext | undefined {
		return this.tryGetRuleContext(0, Key_matchContext);
	}
	public key_actions(): Key_actionsContext | undefined {
		return this.tryGetRuleContext(0, Key_actionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraintelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraintelem) {
			listener.enterConstraintelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraintelem) {
			listener.exitConstraintelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraintelem) {
			return visitor.visitConstraintelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_no_inheritContext extends ParserRuleContext {
	public KW_NO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NO, 0); }
	public KW_INHERIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INHERIT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_no_inherit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_no_inherit) {
			listener.enterOpt_no_inherit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_no_inherit) {
			listener.exitOpt_no_inherit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_no_inherit) {
			return visitor.visitOpt_no_inherit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_column_listContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext {
		return this.getRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_column_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_column_list) {
			listener.enterOpt_column_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_column_list) {
			listener.exitOpt_column_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_column_list) {
			return visitor.visitOpt_column_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnlistContext extends ParserRuleContext {
	public column_name(): Column_nameContext[];
	public column_name(i: number): Column_nameContext;
	public column_name(i?: number): Column_nameContext | Column_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Column_nameContext);
		} else {
			return this.getRuleContext(i, Column_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_columnlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumnlist) {
			listener.enterColumnlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumnlist) {
			listener.exitColumnlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumnlist) {
			return visitor.visitColumnlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_c_includeContext extends ParserRuleContext {
	public KW_INCLUDE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INCLUDE, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext {
		return this.getRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_c_include; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_c_include) {
			listener.enterOpt_c_include(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_c_include) {
			listener.exitOpt_c_include(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_c_include) {
			return visitor.visitOpt_c_include(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Key_matchContext extends ParserRuleContext {
	public KW_MATCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MATCH, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FULL, 0); }
	public KW_PARTIAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTIAL, 0); }
	public KW_SIMPLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SIMPLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_key_match; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterKey_match) {
			listener.enterKey_match(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitKey_match) {
			listener.exitKey_match(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitKey_match) {
			return visitor.visitKey_match(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExclusionconstraintlistContext extends ParserRuleContext {
	public exclusionconstraintelem(): ExclusionconstraintelemContext[];
	public exclusionconstraintelem(i: number): ExclusionconstraintelemContext;
	public exclusionconstraintelem(i?: number): ExclusionconstraintelemContext | ExclusionconstraintelemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExclusionconstraintelemContext);
		} else {
			return this.getRuleContext(i, ExclusionconstraintelemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exclusionconstraintlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExclusionconstraintlist) {
			listener.enterExclusionconstraintlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExclusionconstraintlist) {
			listener.exitExclusionconstraintlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExclusionconstraintlist) {
			return visitor.visitExclusionconstraintlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExclusionconstraintelemContext extends ParserRuleContext {
	public index_elem(): Index_elemContext {
		return this.getRuleContext(0, Index_elemContext);
	}
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exclusionconstraintelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExclusionconstraintelem) {
			listener.enterExclusionconstraintelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExclusionconstraintelem) {
			listener.exitExclusionconstraintelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExclusionconstraintelem) {
			return visitor.visitExclusionconstraintelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExclusionwhereclauseContext extends ParserRuleContext {
	public KW_WHERE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHERE, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exclusionwhereclause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExclusionwhereclause) {
			listener.enterExclusionwhereclause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExclusionwhereclause) {
			listener.exitExclusionwhereclause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExclusionwhereclause) {
			return visitor.visitExclusionwhereclause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Key_actionsContext extends ParserRuleContext {
	public key_update(): Key_updateContext | undefined {
		return this.tryGetRuleContext(0, Key_updateContext);
	}
	public key_delete(): Key_deleteContext | undefined {
		return this.tryGetRuleContext(0, Key_deleteContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_key_actions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterKey_actions) {
			listener.enterKey_actions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitKey_actions) {
			listener.exitKey_actions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitKey_actions) {
			return visitor.visitKey_actions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Key_updateContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public KW_UPDATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UPDATE, 0); }
	public key_action(): Key_actionContext {
		return this.getRuleContext(0, Key_actionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_key_update; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterKey_update) {
			listener.enterKey_update(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitKey_update) {
			listener.exitKey_update(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitKey_update) {
			return visitor.visitKey_update(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Key_deleteContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public KW_DELETE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DELETE, 0); }
	public key_action(): Key_actionContext {
		return this.getRuleContext(0, Key_actionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_key_delete; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterKey_delete) {
			listener.enterKey_delete(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitKey_delete) {
			listener.exitKey_delete(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitKey_delete) {
			return visitor.visitKey_delete(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Key_actionContext extends ParserRuleContext {
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_ACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACTION, 0); }
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICT, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADE, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_key_action; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterKey_action) {
			listener.enterKey_action(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitKey_action) {
			listener.exitKey_action(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitKey_action) {
			return visitor.visitKey_action(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptinheritContext extends ParserRuleContext {
	public KW_INHERITS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INHERITS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public qualified_name_list(): Qualified_name_listContext {
		return this.getRuleContext(0, Qualified_name_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optinherit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptinherit) {
			listener.enterOptinherit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptinherit) {
			listener.exitOptinherit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptinherit) {
			return visitor.visitOptinherit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptpartitionspecContext extends ParserRuleContext {
	public partitionspec(): PartitionspecContext {
		return this.getRuleContext(0, PartitionspecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optpartitionspec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptpartitionspec) {
			listener.enterOptpartitionspec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptpartitionspec) {
			listener.exitOptpartitionspec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptpartitionspec) {
			return visitor.visitOptpartitionspec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PartitionspecContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PARTITION, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public part_params(): Part_paramsContext {
		return this.getRuleContext(0, Part_paramsContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_partitionspec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPartitionspec) {
			listener.enterPartitionspec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPartitionspec) {
			listener.exitPartitionspec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPartitionspec) {
			return visitor.visitPartitionspec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Part_paramsContext extends ParserRuleContext {
	public part_elem(): Part_elemContext[];
	public part_elem(i: number): Part_elemContext;
	public part_elem(i?: number): Part_elemContext | Part_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Part_elemContext);
		} else {
			return this.getRuleContext(i, Part_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_part_params; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPart_params) {
			listener.enterPart_params(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPart_params) {
			listener.exitPart_params(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPart_params) {
			return visitor.visitPart_params(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Part_elemContext extends ParserRuleContext {
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public opt_collate(): Opt_collateContext | undefined {
		return this.tryGetRuleContext(0, Opt_collateContext);
	}
	public opt_class(): Opt_classContext | undefined {
		return this.tryGetRuleContext(0, Opt_classContext);
	}
	public func_expr_windowless(): Func_expr_windowlessContext | undefined {
		return this.tryGetRuleContext(0, Func_expr_windowlessContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_part_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPart_elem) {
			listener.enterPart_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPart_elem) {
			listener.exitPart_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPart_elem) {
			return visitor.visitPart_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_access_method_clauseContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_access_method_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_access_method_clause) {
			listener.enterTable_access_method_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_access_method_clause) {
			listener.exitTable_access_method_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_access_method_clause) {
			return visitor.visitTable_access_method_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptwithContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public reloptions(): ReloptionsContext | undefined {
		return this.tryGetRuleContext(0, ReloptionsContext);
	}
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	public KW_OIDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OIDS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optwith; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptwith) {
			listener.enterOptwith(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptwith) {
			listener.exitOptwith(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptwith) {
			return visitor.visitOptwith(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OncommitoptionContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public KW_COMMIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COMMIT, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRESERVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_oncommitoption; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOncommitoption) {
			listener.enterOncommitoption(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOncommitoption) {
			listener.exitOncommitoption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOncommitoption) {
			return visitor.visitOncommitoption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttablespaceContext extends ParserRuleContext {
	public KW_TABLESPACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext {
		return this.getRuleContext(0, Tablespace_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttablespace; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttablespace) {
			listener.enterOpttablespace(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttablespace) {
			listener.exitOpttablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttablespace) {
			return visitor.visitOpttablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_paramenters_createContext extends ParserRuleContext {
	public opt_include(): Opt_includeContext | undefined {
		return this.tryGetRuleContext(0, Opt_includeContext);
	}
	public with_clause(): With_clauseContext | undefined {
		return this.tryGetRuleContext(0, With_clauseContext);
	}
	public optconstablespace(): OptconstablespaceContext | undefined {
		return this.tryGetRuleContext(0, OptconstablespaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_paramenters_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_paramenters_create) {
			listener.enterIndex_paramenters_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_paramenters_create) {
			listener.exitIndex_paramenters_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_paramenters_create) {
			return visitor.visitIndex_paramenters_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptconstablespaceContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext {
		return this.getRuleContext(0, Tablespace_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optconstablespace; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptconstablespace) {
			listener.enterOptconstablespace(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptconstablespace) {
			listener.exitOptconstablespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptconstablespace) {
			return visitor.visitOptconstablespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExistingindexContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INDEX, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_existingindex; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExistingindex) {
			listener.enterExistingindex(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExistingindex) {
			listener.exitExistingindex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExistingindex) {
			return visitor.visitExistingindex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatestatsstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_STATISTICS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public from_list(): From_listContext {
		return this.getRuleContext(0, From_listContext);
	}
	public column_expr_list(): Column_expr_listContext | undefined {
		return this.tryGetRuleContext(0, Column_expr_listContext);
	}
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public opt_name_list(): Opt_name_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_name_listContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createstatsstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatestatsstmt) {
			listener.enterCreatestatsstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatestatsstmt) {
			listener.exitCreatestatsstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatestatsstmt) {
			return visitor.visitCreatestatsstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterstatsstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_STATISTICS(): TerminalNode[];
	public KW_STATISTICS(i: number): TerminalNode;
	public KW_STATISTICS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_STATISTICS);
		} else {
			return this.getToken(PostgreSQLParser.KW_STATISTICS, i);
		}
	}
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public signediconst(): SignediconstContext {
		return this.getRuleContext(0, SignediconstContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterstatsstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterstatsstmt) {
			listener.enterAlterstatsstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterstatsstmt) {
			listener.exitAlterstatsstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterstatsstmt) {
			return visitor.visitAlterstatsstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateasstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLE, 0); }
	public create_as_target(): Create_as_targetContext {
		return this.getRuleContext(0, Create_as_targetContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public selectstmt(): SelectstmtContext {
		return this.getRuleContext(0, SelectstmtContext);
	}
	public opttemp(): OpttempContext | undefined {
		return this.tryGetRuleContext(0, OpttempContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_with_data(): Opt_with_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_dataContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createasstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateasstmt) {
			listener.enterCreateasstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateasstmt) {
			listener.exitCreateasstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateasstmt) {
			return visitor.visitCreateasstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Create_as_targetContext extends ParserRuleContext {
	public table_name_create(): Table_name_createContext {
		return this.getRuleContext(0, Table_name_createContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public table_access_method_clause(): Table_access_method_clauseContext | undefined {
		return this.tryGetRuleContext(0, Table_access_method_clauseContext);
	}
	public optwith(): OptwithContext | undefined {
		return this.tryGetRuleContext(0, OptwithContext);
	}
	public oncommitoption(): OncommitoptionContext | undefined {
		return this.tryGetRuleContext(0, OncommitoptionContext);
	}
	public opttablespace(): OpttablespaceContext | undefined {
		return this.tryGetRuleContext(0, OpttablespaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_create_as_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreate_as_target) {
			listener.enterCreate_as_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreate_as_target) {
			listener.exitCreate_as_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreate_as_target) {
			return visitor.visitCreate_as_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_with_dataContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_with_data; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_with_data) {
			listener.enterOpt_with_data(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_with_data) {
			listener.exitOpt_with_data(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_with_data) {
			return visitor.visitOpt_with_data(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatematviewstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_MATERIALIZED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VIEW, 0); }
	public create_mv_target(): Create_mv_targetContext {
		return this.getRuleContext(0, Create_mv_targetContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public selectstmt(): SelectstmtContext {
		return this.getRuleContext(0, SelectstmtContext);
	}
	public optnolog(): OptnologContext | undefined {
		return this.tryGetRuleContext(0, OptnologContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_with_data(): Opt_with_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_dataContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_creatematviewstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatematviewstmt) {
			listener.enterCreatematviewstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatematviewstmt) {
			listener.exitCreatematviewstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatematviewstmt) {
			return visitor.visitCreatematviewstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Create_mv_targetContext extends ParserRuleContext {
	public view_name_create(): View_name_createContext {
		return this.getRuleContext(0, View_name_createContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public table_access_method_clause(): Table_access_method_clauseContext | undefined {
		return this.tryGetRuleContext(0, Table_access_method_clauseContext);
	}
	public opt_reloptions(): Opt_reloptionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_reloptionsContext);
	}
	public opttablespace(): OpttablespaceContext | undefined {
		return this.tryGetRuleContext(0, OpttablespaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_create_mv_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreate_mv_target) {
			listener.enterCreate_mv_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreate_mv_target) {
			listener.exitCreate_mv_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreate_mv_target) {
			return visitor.visitCreate_mv_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptnologContext extends ParserRuleContext {
	public KW_UNLOGGED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UNLOGGED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optnolog; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptnolog) {
			listener.enterOptnolog(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptnolog) {
			listener.exitOptnolog(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptnolog) {
			return visitor.visitOptnolog(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RefreshmatviewstmtContext extends ParserRuleContext {
	public KW_REFRESH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REFRESH, 0); }
	public KW_MATERIALIZED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_VIEW(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext {
		return this.getRuleContext(0, View_nameContext);
	}
	public opt_concurrently(): Opt_concurrentlyContext | undefined {
		return this.tryGetRuleContext(0, Opt_concurrentlyContext);
	}
	public opt_with_data(): Opt_with_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_dataContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_refreshmatviewstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRefreshmatviewstmt) {
			listener.enterRefreshmatviewstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRefreshmatviewstmt) {
			listener.exitRefreshmatviewstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRefreshmatviewstmt) {
			return visitor.visitRefreshmatviewstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateseqstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_SEQUENCE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public opttemp(): OpttempContext | undefined {
		return this.tryGetRuleContext(0, OpttempContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public optseqoptlist(): OptseqoptlistContext | undefined {
		return this.tryGetRuleContext(0, OptseqoptlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createseqstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateseqstmt) {
			listener.enterCreateseqstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateseqstmt) {
			listener.exitCreateseqstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateseqstmt) {
			return visitor.visitCreateseqstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterseqstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_SEQUENCE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public seqoptlist(): SeqoptlistContext {
		return this.getRuleContext(0, SeqoptlistContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterseqstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterseqstmt) {
			listener.enterAlterseqstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterseqstmt) {
			listener.exitAlterseqstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterseqstmt) {
			return visitor.visitAlterseqstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptseqoptlistContext extends ParserRuleContext {
	public seqoptlist(): SeqoptlistContext {
		return this.getRuleContext(0, SeqoptlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optseqoptlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptseqoptlist) {
			listener.enterOptseqoptlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptseqoptlist) {
			listener.exitOptseqoptlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptseqoptlist) {
			return visitor.visitOptseqoptlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptparenthesizedseqoptlistContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public seqoptlist(): SeqoptlistContext {
		return this.getRuleContext(0, SeqoptlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optparenthesizedseqoptlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptparenthesizedseqoptlist) {
			listener.enterOptparenthesizedseqoptlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptparenthesizedseqoptlist) {
			listener.exitOptparenthesizedseqoptlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptparenthesizedseqoptlist) {
			return visitor.visitOptparenthesizedseqoptlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SeqoptlistContext extends ParserRuleContext {
	public seqoptelem(): SeqoptelemContext[];
	public seqoptelem(i: number): SeqoptelemContext;
	public seqoptelem(i?: number): SeqoptelemContext | SeqoptelemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SeqoptelemContext);
		} else {
			return this.getRuleContext(i, SeqoptelemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_seqoptlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSeqoptlist) {
			listener.enterSeqoptlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSeqoptlist) {
			listener.exitSeqoptlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSeqoptlist) {
			return visitor.visitSeqoptlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SeqoptelemContext extends ParserRuleContext {
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public simpletypename(): SimpletypenameContext | undefined {
		return this.tryGetRuleContext(0, SimpletypenameContext);
	}
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CACHE, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_CYCLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CYCLE, 0); }
	public KW_INCREMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INCREMENT, 0); }
	public opt_by(): Opt_byContext | undefined {
		return this.tryGetRuleContext(0, Opt_byContext);
	}
	public KW_MAXVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAXVALUE, 0); }
	public KW_MINVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINVALUE, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_OWNED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public table_column_name(): Table_column_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_column_nameContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public KW_NAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NAME, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_START(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_START, 0); }
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	public KW_RESTART(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTART, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_seqoptelem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSeqoptelem) {
			listener.enterSeqoptelem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSeqoptelem) {
			listener.exitSeqoptelem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSeqoptelem) {
			return visitor.visitSeqoptelem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_byContext extends ParserRuleContext {
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_by; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_by) {
			listener.enterOpt_by(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_by) {
			listener.exitOpt_by(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_by) {
			return visitor.visitOpt_by(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NumericonlyContext extends ParserRuleContext {
	public fconst(): FconstContext | undefined {
		return this.tryGetRuleContext(0, FconstContext);
	}
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	public signediconst(): SignediconstContext | undefined {
		return this.tryGetRuleContext(0, SignediconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_numericonly; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNumericonly) {
			listener.enterNumericonly(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNumericonly) {
			listener.exitNumericonly(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNumericonly) {
			return visitor.visitNumericonly(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Numericonly_listContext extends ParserRuleContext {
	public numericonly(): NumericonlyContext[];
	public numericonly(i: number): NumericonlyContext;
	public numericonly(i?: number): NumericonlyContext | NumericonlyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NumericonlyContext);
		} else {
			return this.getRuleContext(i, NumericonlyContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_numericonly_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNumericonly_list) {
			listener.enterNumericonly_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNumericonly_list) {
			listener.exitNumericonly_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNumericonly_list) {
			return visitor.visitNumericonly_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateplangstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_LANGUAGE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	public opt_trusted(): Opt_trustedContext | undefined {
		return this.tryGetRuleContext(0, Opt_trustedContext);
	}
	public opt_procedural(): Opt_proceduralContext | undefined {
		return this.tryGetRuleContext(0, Opt_proceduralContext);
	}
	public KW_HANDLER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HANDLER, 0); }
	public handler_name(): Handler_nameContext | undefined {
		return this.tryGetRuleContext(0, Handler_nameContext);
	}
	public opt_inline_handler(): Opt_inline_handlerContext | undefined {
		return this.tryGetRuleContext(0, Opt_inline_handlerContext);
	}
	public opt_validator(): Opt_validatorContext | undefined {
		return this.tryGetRuleContext(0, Opt_validatorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createplangstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateplangstmt) {
			listener.enterCreateplangstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateplangstmt) {
			listener.exitCreateplangstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateplangstmt) {
			return visitor.visitCreateplangstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_trustedContext extends ParserRuleContext {
	public KW_TRUSTED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRUSTED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_trusted; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_trusted) {
			listener.enterOpt_trusted(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_trusted) {
			listener.exitOpt_trusted(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_trusted) {
			return visitor.visitOpt_trusted(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Handler_nameContext extends ParserRuleContext {
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_handler_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterHandler_name) {
			listener.enterHandler_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitHandler_name) {
			listener.exitHandler_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitHandler_name) {
			return visitor.visitHandler_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_inline_handlerContext extends ParserRuleContext {
	public KW_INLINE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INLINE, 0); }
	public handler_name(): Handler_nameContext {
		return this.getRuleContext(0, Handler_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_inline_handler; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_inline_handler) {
			listener.enterOpt_inline_handler(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_inline_handler) {
			listener.exitOpt_inline_handler(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_inline_handler) {
			return visitor.visitOpt_inline_handler(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Validator_clauseContext extends ParserRuleContext {
	public KW_VALIDATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VALIDATOR, 0); }
	public handler_name(): Handler_nameContext | undefined {
		return this.tryGetRuleContext(0, Handler_nameContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_validator_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterValidator_clause) {
			listener.enterValidator_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitValidator_clause) {
			listener.exitValidator_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitValidator_clause) {
			return visitor.visitValidator_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_validatorContext extends ParserRuleContext {
	public validator_clause(): Validator_clauseContext {
		return this.getRuleContext(0, Validator_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_validator; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_validator) {
			listener.enterOpt_validator(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_validator) {
			listener.exitOpt_validator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_validator) {
			return visitor.visitOpt_validator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_proceduralContext extends ParserRuleContext {
	public KW_PROCEDURAL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PROCEDURAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_procedural; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_procedural) {
			listener.enterOpt_procedural(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_procedural) {
			listener.exitOpt_procedural(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_procedural) {
			return visitor.visitOpt_procedural(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatetablespacestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext {
		return this.getRuleContext(0, Tablespace_nameContext);
	}
	public KW_LOCATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LOCATION, 0); }
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	public opttablespaceowner(): OpttablespaceownerContext | undefined {
		return this.tryGetRuleContext(0, OpttablespaceownerContext);
	}
	public opt_reloptions(): Opt_reloptionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_reloptionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createtablespacestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatetablespacestmt) {
			listener.enterCreatetablespacestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatetablespacestmt) {
			listener.exitCreatetablespacestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatetablespacestmt) {
			return visitor.visitCreatetablespacestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttablespaceownerContext extends ParserRuleContext {
	public KW_OWNER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OWNER, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttablespaceowner; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttablespaceowner) {
			listener.enterOpttablespaceowner(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttablespaceowner) {
			listener.exitOpttablespaceowner(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttablespaceowner) {
			return visitor.visitOpttablespaceowner(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateextensionstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_EXTENSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public create_extension_opt_list(): Create_extension_opt_listContext {
		return this.getRuleContext(0, Create_extension_opt_listContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createextensionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateextensionstmt) {
			listener.enterCreateextensionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateextensionstmt) {
			listener.exitCreateextensionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateextensionstmt) {
			return visitor.visitCreateextensionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Create_extension_opt_listContext extends ParserRuleContext {
	public create_extension_opt_item(): Create_extension_opt_itemContext[];
	public create_extension_opt_item(i: number): Create_extension_opt_itemContext;
	public create_extension_opt_item(i?: number): Create_extension_opt_itemContext | Create_extension_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Create_extension_opt_itemContext);
		} else {
			return this.getRuleContext(i, Create_extension_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_create_extension_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreate_extension_opt_list) {
			listener.enterCreate_extension_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreate_extension_opt_list) {
			listener.exitCreate_extension_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreate_extension_opt_list) {
			return visitor.visitCreate_extension_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Create_extension_opt_itemContext extends ParserRuleContext {
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_VERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VERSION, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconstContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_create_extension_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreate_extension_opt_item) {
			listener.enterCreate_extension_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreate_extension_opt_item) {
			listener.exitCreate_extension_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreate_extension_opt_item) {
			return visitor.visitCreate_extension_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterextensionstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_EXTENSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_UPDATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UPDATE, 0); }
	public alter_extension_opt_list(): Alter_extension_opt_listContext {
		return this.getRuleContext(0, Alter_extension_opt_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterextensionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterextensionstmt) {
			listener.enterAlterextensionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterextensionstmt) {
			listener.exitAlterextensionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterextensionstmt) {
			return visitor.visitAlterextensionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_extension_opt_listContext extends ParserRuleContext {
	public alter_extension_opt_item(): Alter_extension_opt_itemContext[];
	public alter_extension_opt_item(i: number): Alter_extension_opt_itemContext;
	public alter_extension_opt_item(i?: number): Alter_extension_opt_itemContext | Alter_extension_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Alter_extension_opt_itemContext);
		} else {
			return this.getRuleContext(i, Alter_extension_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_extension_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_extension_opt_list) {
			listener.enterAlter_extension_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_extension_opt_list) {
			listener.exitAlter_extension_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_extension_opt_list) {
			return visitor.visitAlter_extension_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_extension_opt_itemContext extends ParserRuleContext {
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext {
		return this.getRuleContext(0, Nonreservedword_or_sconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_extension_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_extension_opt_item) {
			listener.enterAlter_extension_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_extension_opt_item) {
			listener.exitAlter_extension_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_extension_opt_item) {
			return visitor.visitAlter_extension_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterextensioncontentsstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_EXTENSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public add_drop(): Add_dropContext {
		return this.getRuleContext(0, Add_dropContext);
	}
	public object_type_name(): Object_type_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_nameContext);
	}
	public object_type_any_name(): Object_type_any_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_any_nameContext);
	}
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CAST, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes(): Operator_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterextensioncontentsstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterextensioncontentsstmt) {
			listener.enterAlterextensioncontentsstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterextensioncontentsstmt) {
			listener.exitAlterextensioncontentsstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterextensioncontentsstmt) {
			return visitor.visitAlterextensioncontentsstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatefdwstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public opt_fdw_options(): Opt_fdw_optionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_fdw_optionsContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createfdwstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatefdwstmt) {
			listener.enterCreatefdwstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatefdwstmt) {
			listener.exitCreatefdwstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatefdwstmt) {
			return visitor.visitCreatefdwstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Fdw_optionContext extends ParserRuleContext {
	public KW_HANDLER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HANDLER, 0); }
	public handler_name(): Handler_nameContext | undefined {
		return this.tryGetRuleContext(0, Handler_nameContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_VALIDATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALIDATOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fdw_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFdw_option) {
			listener.enterFdw_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFdw_option) {
			listener.exitFdw_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFdw_option) {
			return visitor.visitFdw_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Fdw_optionsContext extends ParserRuleContext {
	public fdw_option(): Fdw_optionContext[];
	public fdw_option(i: number): Fdw_optionContext;
	public fdw_option(i?: number): Fdw_optionContext | Fdw_optionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Fdw_optionContext);
		} else {
			return this.getRuleContext(i, Fdw_optionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fdw_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFdw_options) {
			listener.enterFdw_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFdw_options) {
			listener.exitFdw_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFdw_options) {
			return visitor.visitFdw_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_fdw_optionsContext extends ParserRuleContext {
	public fdw_options(): Fdw_optionsContext {
		return this.getRuleContext(0, Fdw_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_fdw_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_fdw_options) {
			listener.enterOpt_fdw_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_fdw_options) {
			listener.exitOpt_fdw_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_fdw_options) {
			return visitor.visitOpt_fdw_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterfdwstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public alter_generic_options(): Alter_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Alter_generic_optionsContext);
	}
	public opt_fdw_options(): Opt_fdw_optionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_fdw_optionsContext);
	}
	public fdw_options(): Fdw_optionsContext | undefined {
		return this.tryGetRuleContext(0, Fdw_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterfdwstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterfdwstmt) {
			listener.enterAlterfdwstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterfdwstmt) {
			listener.exitAlterfdwstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterfdwstmt) {
			return visitor.visitAlterfdwstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Create_generic_optionsContext extends ParserRuleContext {
	public KW_OPTIONS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPTIONS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public generic_option_list(): Generic_option_listContext {
		return this.getRuleContext(0, Generic_option_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_create_generic_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreate_generic_options) {
			listener.enterCreate_generic_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreate_generic_options) {
			listener.exitCreate_generic_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreate_generic_options) {
			return visitor.visitCreate_generic_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_option_listContext extends ParserRuleContext {
	public generic_option_elem(): Generic_option_elemContext[];
	public generic_option_elem(i: number): Generic_option_elemContext;
	public generic_option_elem(i?: number): Generic_option_elemContext | Generic_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Generic_option_elemContext);
		} else {
			return this.getRuleContext(i, Generic_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_option_list) {
			listener.enterGeneric_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_option_list) {
			listener.exitGeneric_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_option_list) {
			return visitor.visitGeneric_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_generic_optionsContext extends ParserRuleContext {
	public KW_OPTIONS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPTIONS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public alter_generic_option_list(): Alter_generic_option_listContext {
		return this.getRuleContext(0, Alter_generic_option_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_generic_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_generic_options) {
			listener.enterAlter_generic_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_generic_options) {
			listener.exitAlter_generic_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_generic_options) {
			return visitor.visitAlter_generic_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_generic_option_listContext extends ParserRuleContext {
	public alter_generic_option_elem(): Alter_generic_option_elemContext[];
	public alter_generic_option_elem(i: number): Alter_generic_option_elemContext;
	public alter_generic_option_elem(i?: number): Alter_generic_option_elemContext | Alter_generic_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Alter_generic_option_elemContext);
		} else {
			return this.getRuleContext(i, Alter_generic_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_generic_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_generic_option_list) {
			listener.enterAlter_generic_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_generic_option_list) {
			listener.exitAlter_generic_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_generic_option_list) {
			return visitor.visitAlter_generic_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alter_generic_option_elemContext extends ParserRuleContext {
	public generic_option_elem(): Generic_option_elemContext {
		return this.getRuleContext(0, Generic_option_elemContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alter_generic_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlter_generic_option_elem) {
			listener.enterAlter_generic_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlter_generic_option_elem) {
			listener.exitAlter_generic_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlter_generic_option_elem) {
			return visitor.visitAlter_generic_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_option_elemContext extends ParserRuleContext {
	public generic_option_name(): Generic_option_nameContext {
		return this.getRuleContext(0, Generic_option_nameContext);
	}
	public generic_option_arg(): Generic_option_argContext {
		return this.getRuleContext(0, Generic_option_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_option_elem) {
			listener.enterGeneric_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_option_elem) {
			listener.exitGeneric_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_option_elem) {
			return visitor.visitGeneric_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_option_nameContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_option_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_option_name) {
			listener.enterGeneric_option_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_option_name) {
			listener.exitGeneric_option_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_option_name) {
			return visitor.visitGeneric_option_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Generic_option_argContext extends ParserRuleContext {
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generic_option_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGeneric_option_arg) {
			listener.enterGeneric_option_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGeneric_option_arg) {
			listener.exitGeneric_option_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGeneric_option_arg) {
			return visitor.visitGeneric_option_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateforeignserverstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_FOREIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_type(): Opt_typeContext | undefined {
		return this.tryGetRuleContext(0, Opt_typeContext);
	}
	public opt_foreign_server_version(): Opt_foreign_server_versionContext | undefined {
		return this.tryGetRuleContext(0, Opt_foreign_server_versionContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createforeignserverstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateforeignserverstmt) {
			listener.enterCreateforeignserverstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateforeignserverstmt) {
			listener.exitCreateforeignserverstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateforeignserverstmt) {
			return visitor.visitCreateforeignserverstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_typeContext extends ParserRuleContext {
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_type) {
			listener.enterOpt_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_type) {
			listener.exitOpt_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_type) {
			return visitor.visitOpt_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Foreign_server_versionContext extends ParserRuleContext {
	public KW_VERSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VERSION, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_foreign_server_version; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterForeign_server_version) {
			listener.enterForeign_server_version(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitForeign_server_version) {
			listener.exitForeign_server_version(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitForeign_server_version) {
			return visitor.visitForeign_server_version(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_foreign_server_versionContext extends ParserRuleContext {
	public foreign_server_version(): Foreign_server_versionContext {
		return this.getRuleContext(0, Foreign_server_versionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_foreign_server_version; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_foreign_server_version) {
			listener.enterOpt_foreign_server_version(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_foreign_server_version) {
			listener.exitOpt_foreign_server_version(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_foreign_server_version) {
			return visitor.visitOpt_foreign_server_version(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterforeignserverstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public alter_generic_options(): Alter_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Alter_generic_optionsContext);
	}
	public foreign_server_version(): Foreign_server_versionContext | undefined {
		return this.tryGetRuleContext(0, Foreign_server_versionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterforeignserverstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterforeignserverstmt) {
			listener.enterAlterforeignserverstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterforeignserverstmt) {
			listener.exitAlterforeignserverstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterforeignserverstmt) {
			return visitor.visitAlterforeignserverstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateforeigntablestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_TABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name_create(): Table_name_createContext {
		return this.getRuleContext(0, Table_name_createContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opttableelementlist(): OpttableelementlistContext | undefined {
		return this.tryGetRuleContext(0, OpttableelementlistContext);
	}
	public optinherit(): OptinheritContext | undefined {
		return this.tryGetRuleContext(0, OptinheritContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTITION, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public partitionboundspec(): PartitionboundspecContext | undefined {
		return this.tryGetRuleContext(0, PartitionboundspecContext);
	}
	public opttypedtableelementlist(): OpttypedtableelementlistContext | undefined {
		return this.tryGetRuleContext(0, OpttypedtableelementlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createforeigntablestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateforeigntablestmt) {
			listener.enterCreateforeigntablestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateforeigntablestmt) {
			listener.exitCreateforeigntablestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateforeigntablestmt) {
			return visitor.visitCreateforeigntablestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ImportforeignschemastmtContext extends ParserRuleContext {
	public KW_IMPORT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IMPORT, 0); }
	public KW_FOREIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_SCHEMA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext {
		return this.getRuleContext(0, Schema_nameContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public import_qualification(): Import_qualificationContext | undefined {
		return this.tryGetRuleContext(0, Import_qualificationContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_importforeignschemastmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterImportforeignschemastmt) {
			listener.enterImportforeignschemastmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitImportforeignschemastmt) {
			listener.exitImportforeignschemastmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitImportforeignschemastmt) {
			return visitor.visitImportforeignschemastmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Import_qualification_typeContext extends ParserRuleContext {
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIMIT, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCEPT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_import_qualification_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterImport_qualification_type) {
			listener.enterImport_qualification_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitImport_qualification_type) {
			listener.exitImport_qualification_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitImport_qualification_type) {
			return visitor.visitImport_qualification_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Import_qualificationContext extends ParserRuleContext {
	public import_qualification_type(): Import_qualification_typeContext {
		return this.getRuleContext(0, Import_qualification_typeContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public relation_expr_list(): Relation_expr_listContext {
		return this.getRuleContext(0, Relation_expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_import_qualification; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterImport_qualification) {
			listener.enterImport_qualification(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitImport_qualification) {
			listener.exitImport_qualification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitImport_qualification) {
			return visitor.visitImport_qualification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateusermappingstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_USER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USER, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MAPPING, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public auth_ident(): Auth_identContext {
		return this.getRuleContext(0, Auth_identContext);
	}
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public create_generic_options(): Create_generic_optionsContext | undefined {
		return this.tryGetRuleContext(0, Create_generic_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createusermappingstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateusermappingstmt) {
			listener.enterCreateusermappingstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateusermappingstmt) {
			listener.exitCreateusermappingstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateusermappingstmt) {
			return visitor.visitCreateusermappingstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Auth_identContext extends ParserRuleContext {
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_auth_ident; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAuth_ident) {
			listener.enterAuth_ident(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAuth_ident) {
			listener.exitAuth_ident(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAuth_ident) {
			return visitor.visitAuth_ident(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterusermappingstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_USER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USER, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MAPPING, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public auth_ident(): Auth_identContext {
		return this.getRuleContext(0, Auth_identContext);
	}
	public KW_SERVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SERVER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public alter_generic_options(): Alter_generic_optionsContext {
		return this.getRuleContext(0, Alter_generic_optionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterusermappingstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterusermappingstmt) {
			listener.enterAlterusermappingstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterusermappingstmt) {
			listener.exitAlterusermappingstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterusermappingstmt) {
			return visitor.visitAlterusermappingstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatepolicystmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_POLICY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_POLICY, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public rowsecuritydefaultpermissive(): RowsecuritydefaultpermissiveContext | undefined {
		return this.tryGetRuleContext(0, RowsecuritydefaultpermissiveContext);
	}
	public rowsecuritydefaultforcmd(): RowsecuritydefaultforcmdContext | undefined {
		return this.tryGetRuleContext(0, RowsecuritydefaultforcmdContext);
	}
	public rowsecuritydefaulttorole(): RowsecuritydefaulttoroleContext | undefined {
		return this.tryGetRuleContext(0, RowsecuritydefaulttoroleContext);
	}
	public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | undefined {
		return this.tryGetRuleContext(0, RowsecurityoptionalexprContext);
	}
	public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | undefined {
		return this.tryGetRuleContext(0, RowsecurityoptionalwithcheckContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createpolicystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatepolicystmt) {
			listener.enterCreatepolicystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatepolicystmt) {
			listener.exitCreatepolicystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatepolicystmt) {
			return visitor.visitCreatepolicystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterpolicystmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_POLICY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_POLICY, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public rowsecurityoptionaltorole(): RowsecurityoptionaltoroleContext | undefined {
		return this.tryGetRuleContext(0, RowsecurityoptionaltoroleContext);
	}
	public rowsecurityoptionalexpr(): RowsecurityoptionalexprContext | undefined {
		return this.tryGetRuleContext(0, RowsecurityoptionalexprContext);
	}
	public rowsecurityoptionalwithcheck(): RowsecurityoptionalwithcheckContext | undefined {
		return this.tryGetRuleContext(0, RowsecurityoptionalwithcheckContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterpolicystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterpolicystmt) {
			listener.enterAlterpolicystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterpolicystmt) {
			listener.exitAlterpolicystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterpolicystmt) {
			return visitor.visitAlterpolicystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterprocedurestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_PROCEDURE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_name(): Procedure_nameContext {
		return this.getRuleContext(0, Procedure_nameContext);
	}
	public procedure_cluase(): Procedure_cluaseContext {
		return this.getRuleContext(0, Procedure_cluaseContext);
	}
	public func_args(): Func_argsContext | undefined {
		return this.tryGetRuleContext(0, Func_argsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterprocedurestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterprocedurestmt) {
			listener.enterAlterprocedurestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterprocedurestmt) {
			listener.exitAlterprocedurestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterprocedurestmt) {
			return visitor.visitAlterprocedurestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_cluaseContext extends ParserRuleContext {
	public procedure_action(): Procedure_actionContext[];
	public procedure_action(i: number): Procedure_actionContext;
	public procedure_action(i?: number): Procedure_actionContext | Procedure_actionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Procedure_actionContext);
		} else {
			return this.getRuleContext(i, Procedure_actionContext);
		}
	}
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICT, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public procedure_name_create(): Procedure_name_createContext | undefined {
		return this.tryGetRuleContext(0, Procedure_name_createContext);
	}
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_create(): Schema_name_createContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_createContext);
	}
	public KW_DEPENDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEPENDS, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_cluase) {
			listener.enterProcedure_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_cluase) {
			listener.exitProcedure_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_cluase) {
			return visitor.visitProcedure_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_actionContext extends ParserRuleContext {
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INVOKER, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFINER, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTERNAL, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_action; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_action) {
			listener.enterProcedure_action(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_action) {
			listener.exitProcedure_action(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_action) {
			return visitor.visitProcedure_action(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecurityoptionalexprContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecurityoptionalexpr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecurityoptionalexpr) {
			listener.enterRowsecurityoptionalexpr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecurityoptionalexpr) {
			listener.exitRowsecurityoptionalexpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecurityoptionalexpr) {
			return visitor.visitRowsecurityoptionalexpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecurityoptionalwithcheckContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_CHECK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHECK, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecurityoptionalwithcheck; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecurityoptionalwithcheck) {
			listener.enterRowsecurityoptionalwithcheck(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecurityoptionalwithcheck) {
			listener.exitRowsecurityoptionalwithcheck(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecurityoptionalwithcheck) {
			return visitor.visitRowsecurityoptionalwithcheck(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecuritydefaulttoroleContext extends ParserRuleContext {
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecuritydefaulttorole; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecuritydefaulttorole) {
			listener.enterRowsecuritydefaulttorole(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecuritydefaulttorole) {
			listener.exitRowsecuritydefaulttorole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecuritydefaulttorole) {
			return visitor.visitRowsecuritydefaulttorole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecurityoptionaltoroleContext extends ParserRuleContext {
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecurityoptionaltorole; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecurityoptionaltorole) {
			listener.enterRowsecurityoptionaltorole(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecurityoptionaltorole) {
			listener.exitRowsecurityoptionaltorole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecurityoptionaltorole) {
			return visitor.visitRowsecurityoptionaltorole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecuritydefaultpermissiveContext extends ParserRuleContext {
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public KW_PERMISSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PERMISSIVE, 0); }
	public KW_RESTRICTIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICTIVE, 0); }
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecuritydefaultpermissive; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecuritydefaultpermissive) {
			listener.enterRowsecuritydefaultpermissive(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecuritydefaultpermissive) {
			listener.exitRowsecuritydefaultpermissive(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecuritydefaultpermissive) {
			return visitor.visitRowsecuritydefaultpermissive(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowsecuritydefaultforcmdContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public row_security_cmd(): Row_security_cmdContext {
		return this.getRuleContext(0, Row_security_cmdContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsecuritydefaultforcmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsecuritydefaultforcmd) {
			listener.enterRowsecuritydefaultforcmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsecuritydefaultforcmd) {
			listener.exitRowsecuritydefaultforcmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsecuritydefaultforcmd) {
			return visitor.visitRowsecuritydefaultforcmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Row_security_cmdContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_row_security_cmd; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRow_security_cmd) {
			listener.enterRow_security_cmd(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRow_security_cmd) {
			listener.exitRow_security_cmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRow_security_cmd) {
			return visitor.visitRow_security_cmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateamstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_ACCESS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ACCESS, 0); }
	public KW_METHOD(): TerminalNode { return this.getToken(PostgreSQLParser.KW_METHOD, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public am_type(): Am_typeContext {
		return this.getRuleContext(0, Am_typeContext);
	}
	public KW_HANDLER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_HANDLER, 0); }
	public handler_name(): Handler_nameContext {
		return this.getRuleContext(0, Handler_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createamstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateamstmt) {
			listener.enterCreateamstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateamstmt) {
			listener.exitCreateamstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateamstmt) {
			return visitor.visitCreateamstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Am_typeContext extends ParserRuleContext {
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_am_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAm_type) {
			listener.enterAm_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAm_type) {
			listener.exitAm_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAm_type) {
			return visitor.visitAm_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatetrigstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public triggeractiontime(): TriggeractiontimeContext {
		return this.getRuleContext(0, TriggeractiontimeContext);
	}
	public triggerevents(): TriggereventsContext {
		return this.getRuleContext(0, TriggereventsContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public table_name(): Table_nameContext {
		return this.getRuleContext(0, Table_nameContext);
	}
	public KW_EXECUTE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public function_or_procedure(): Function_or_procedureContext {
		return this.getRuleContext(0, Function_or_procedureContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public triggerfuncargs(): TriggerfuncargsContext {
		return this.getRuleContext(0, TriggerfuncargsContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	public triggerreferencing(): TriggerreferencingContext | undefined {
		return this.tryGetRuleContext(0, TriggerreferencingContext);
	}
	public triggerforspec(): TriggerforspecContext | undefined {
		return this.tryGetRuleContext(0, TriggerforspecContext);
	}
	public triggerwhen(): TriggerwhenContext | undefined {
		return this.tryGetRuleContext(0, TriggerwhenContext);
	}
	public constraintattributespec(): ConstraintattributespecContext | undefined {
		return this.tryGetRuleContext(0, ConstraintattributespecContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public optconstrfromtable(): OptconstrfromtableContext | undefined {
		return this.tryGetRuleContext(0, OptconstrfromtableContext);
	}
	public foreachrow(): ForeachrowContext | undefined {
		return this.tryGetRuleContext(0, ForeachrowContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createtrigstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatetrigstmt) {
			listener.enterCreatetrigstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatetrigstmt) {
			listener.exitCreatetrigstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatetrigstmt) {
			return visitor.visitCreatetrigstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggeractiontimeContext extends ParserRuleContext {
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BEFORE, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AFTER, 0); }
	public KW_INSTEAD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSTEAD, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggeractiontime; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggeractiontime) {
			listener.enterTriggeractiontime(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggeractiontime) {
			listener.exitTriggeractiontime(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggeractiontime) {
			return visitor.visitTriggeractiontime(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ForeachrowContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public roworstatment(): RoworstatmentContext {
		return this.getRuleContext(0, RoworstatmentContext);
	}
	public KW_EACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EACH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_foreachrow; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterForeachrow) {
			listener.enterForeachrow(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitForeachrow) {
			listener.exitForeachrow(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitForeachrow) {
			return visitor.visitForeachrow(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoworstatmentContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_STATEMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATEMENT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_roworstatment; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoworstatment) {
			listener.enterRoworstatment(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoworstatment) {
			listener.exitRoworstatment(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoworstatment) {
			return visitor.visitRoworstatment(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggereventsContext extends ParserRuleContext {
	public triggeroneevent(): TriggeroneeventContext[];
	public triggeroneevent(i: number): TriggeroneeventContext;
	public triggeroneevent(i?: number): TriggeroneeventContext | TriggeroneeventContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TriggeroneeventContext);
		} else {
			return this.getRuleContext(i, TriggeroneeventContext);
		}
	}
	public KW_OR(): TerminalNode[];
	public KW_OR(i: number): TerminalNode;
	public KW_OR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_OR);
		} else {
			return this.getToken(PostgreSQLParser.KW_OR, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerevents; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerevents) {
			listener.enterTriggerevents(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerevents) {
			listener.exitTriggerevents(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerevents) {
			return visitor.visitTriggerevents(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggeroneeventContext extends ParserRuleContext {
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUNCATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggeroneevent; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggeroneevent) {
			listener.enterTriggeroneevent(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggeroneevent) {
			listener.exitTriggeroneevent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggeroneevent) {
			return visitor.visitTriggeroneevent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerreferencingContext extends ParserRuleContext {
	public KW_REFERENCING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REFERENCING, 0); }
	public triggertransitions(): TriggertransitionsContext {
		return this.getRuleContext(0, TriggertransitionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerreferencing; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerreferencing) {
			listener.enterTriggerreferencing(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerreferencing) {
			listener.exitTriggerreferencing(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerreferencing) {
			return visitor.visitTriggerreferencing(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggertransitionsContext extends ParserRuleContext {
	public triggertransition(): TriggertransitionContext[];
	public triggertransition(i: number): TriggertransitionContext;
	public triggertransition(i?: number): TriggertransitionContext | TriggertransitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TriggertransitionContext);
		} else {
			return this.getRuleContext(i, TriggertransitionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggertransitions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggertransitions) {
			listener.enterTriggertransitions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggertransitions) {
			listener.exitTriggertransitions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggertransitions) {
			return visitor.visitTriggertransitions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggertransitionContext extends ParserRuleContext {
	public transitionoldornew(): TransitionoldornewContext {
		return this.getRuleContext(0, TransitionoldornewContext);
	}
	public transitionrowortable(): TransitionrowortableContext {
		return this.getRuleContext(0, TransitionrowortableContext);
	}
	public transitionrelname(): TransitionrelnameContext {
		return this.getRuleContext(0, TransitionrelnameContext);
	}
	public opt_as(): Opt_asContext | undefined {
		return this.tryGetRuleContext(0, Opt_asContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggertransition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggertransition) {
			listener.enterTriggertransition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggertransition) {
			listener.exitTriggertransition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggertransition) {
			return visitor.visitTriggertransition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransitionoldornewContext extends ParserRuleContext {
	public KW_NEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEW, 0); }
	public KW_OLD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OLD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transitionoldornew; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransitionoldornew) {
			listener.enterTransitionoldornew(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransitionoldornew) {
			listener.exitTransitionoldornew(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransitionoldornew) {
			return visitor.visitTransitionoldornew(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransitionrowortableContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transitionrowortable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransitionrowortable) {
			listener.enterTransitionrowortable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransitionrowortable) {
			listener.exitTransitionrowortable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransitionrowortable) {
			return visitor.visitTransitionrowortable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransitionrelnameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transitionrelname; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransitionrelname) {
			listener.enterTransitionrelname(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransitionrelname) {
			listener.exitTransitionrelname(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransitionrelname) {
			return visitor.visitTransitionrelname(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerforspecContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public triggerfortype(): TriggerfortypeContext {
		return this.getRuleContext(0, TriggerfortypeContext);
	}
	public triggerforopteach(): TriggerforopteachContext | undefined {
		return this.tryGetRuleContext(0, TriggerforopteachContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerforspec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerforspec) {
			listener.enterTriggerforspec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerforspec) {
			listener.exitTriggerforspec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerforspec) {
			return visitor.visitTriggerforspec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerforopteachContext extends ParserRuleContext {
	public KW_EACH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EACH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerforopteach; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerforopteach) {
			listener.enterTriggerforopteach(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerforopteach) {
			listener.exitTriggerforopteach(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerforopteach) {
			return visitor.visitTriggerforopteach(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerfortypeContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_STATEMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATEMENT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerfortype; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerfortype) {
			listener.enterTriggerfortype(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerfortype) {
			listener.exitTriggerfortype(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerfortype) {
			return visitor.visitTriggerfortype(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerwhenContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerwhen; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerwhen) {
			listener.enterTriggerwhen(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerwhen) {
			listener.exitTriggerwhen(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerwhen) {
			return visitor.visitTriggerwhen(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_or_procedureContext extends ParserRuleContext {
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_name(): Function_nameContext | undefined {
		return this.tryGetRuleContext(0, Function_nameContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_name(): Procedure_nameContext | undefined {
		return this.tryGetRuleContext(0, Procedure_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_function_or_procedure; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunction_or_procedure) {
			listener.enterFunction_or_procedure(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunction_or_procedure) {
			listener.exitFunction_or_procedure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunction_or_procedure) {
			return visitor.visitFunction_or_procedure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerfuncargsContext extends ParserRuleContext {
	public triggerfuncarg(): TriggerfuncargContext[];
	public triggerfuncarg(i: number): TriggerfuncargContext;
	public triggerfuncarg(i?: number): TriggerfuncargContext | TriggerfuncargContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TriggerfuncargContext);
		} else {
			return this.getRuleContext(i, TriggerfuncargContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerfuncargs; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerfuncargs) {
			listener.enterTriggerfuncargs(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerfuncargs) {
			listener.exitTriggerfuncargs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerfuncargs) {
			return visitor.visitTriggerfuncargs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TriggerfuncargContext extends ParserRuleContext {
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public fconst(): FconstContext | undefined {
		return this.tryGetRuleContext(0, FconstContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public collabel(): CollabelContext | undefined {
		return this.tryGetRuleContext(0, CollabelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_triggerfuncarg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTriggerfuncarg) {
			listener.enterTriggerfuncarg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTriggerfuncarg) {
			listener.exitTriggerfuncarg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTriggerfuncarg) {
			return visitor.visitTriggerfuncarg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OptconstrfromtableContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_optconstrfromtable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOptconstrfromtable) {
			listener.enterOptconstrfromtable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOptconstrfromtable) {
			listener.exitOptconstrfromtable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOptconstrfromtable) {
			return visitor.visitOptconstrfromtable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintattributespecContext extends ParserRuleContext {
	public constraintattributeElem(): ConstraintattributeElemContext[];
	public constraintattributeElem(i: number): ConstraintattributeElemContext;
	public constraintattributeElem(i?: number): ConstraintattributeElemContext | ConstraintattributeElemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ConstraintattributeElemContext);
		} else {
			return this.getRuleContext(i, ConstraintattributeElemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraintattributespec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraintattributespec) {
			listener.enterConstraintattributespec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraintattributespec) {
			listener.exitConstraintattributespec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraintattributespec) {
			return visitor.visitConstraintattributespec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintattributeElemContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_DEFERRABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRABLE, 0); }
	public KW_INITIALLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INITIALLY, 0); }
	public KW_IMMEDIATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMEDIATE, 0); }
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRED, 0); }
	public KW_VALID(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALID, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_INHERIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INHERIT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constraintattributeElem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstraintattributeElem) {
			listener.enterConstraintattributeElem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstraintattributeElem) {
			listener.exitConstraintattributeElem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstraintattributeElem) {
			return visitor.visitConstraintattributeElem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateeventtrigstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_EVENT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	public KW_EXECUTE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public function_or_procedure(): Function_or_procedureContext {
		return this.getRuleContext(0, Function_or_procedureContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_WHEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WHEN, 0); }
	public event_trigger_when_list(): Event_trigger_when_listContext | undefined {
		return this.tryGetRuleContext(0, Event_trigger_when_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createeventtrigstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateeventtrigstmt) {
			listener.enterCreateeventtrigstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateeventtrigstmt) {
			listener.exitCreateeventtrigstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateeventtrigstmt) {
			return visitor.visitCreateeventtrigstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Event_trigger_when_listContext extends ParserRuleContext {
	public event_trigger_when_item(): Event_trigger_when_itemContext[];
	public event_trigger_when_item(i: number): Event_trigger_when_itemContext;
	public event_trigger_when_item(i?: number): Event_trigger_when_itemContext | Event_trigger_when_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Event_trigger_when_itemContext);
		} else {
			return this.getRuleContext(i, Event_trigger_when_itemContext);
		}
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_AND);
		} else {
			return this.getToken(PostgreSQLParser.KW_AND, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_event_trigger_when_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEvent_trigger_when_list) {
			listener.enterEvent_trigger_when_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEvent_trigger_when_list) {
			listener.exitEvent_trigger_when_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEvent_trigger_when_list) {
			return visitor.visitEvent_trigger_when_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Event_trigger_when_itemContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public KW_IN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IN, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public event_trigger_value_list(): Event_trigger_value_listContext {
		return this.getRuleContext(0, Event_trigger_value_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_event_trigger_when_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEvent_trigger_when_item) {
			listener.enterEvent_trigger_when_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEvent_trigger_when_item) {
			listener.exitEvent_trigger_when_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEvent_trigger_when_item) {
			return visitor.visitEvent_trigger_when_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Event_trigger_value_listContext extends ParserRuleContext {
	public sconst(): SconstContext[];
	public sconst(i: number): SconstContext;
	public sconst(i?: number): SconstContext | SconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SconstContext);
		} else {
			return this.getRuleContext(i, SconstContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_event_trigger_value_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEvent_trigger_value_list) {
			listener.enterEvent_trigger_value_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEvent_trigger_value_list) {
			listener.exitEvent_trigger_value_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEvent_trigger_value_list) {
			return visitor.visitEvent_trigger_value_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltereventtrigstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_EVENT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_TRIGGER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public enable_trigger(): Enable_triggerContext {
		return this.getRuleContext(0, Enable_triggerContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altereventtrigstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltereventtrigstmt) {
			listener.enterAltereventtrigstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltereventtrigstmt) {
			listener.exitAltereventtrigstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltereventtrigstmt) {
			return visitor.visitAltereventtrigstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Enable_triggerContext extends ParserRuleContext {
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENABLE, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLICA, 0); }
	public KW_ALWAYS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALWAYS, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_enable_trigger; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEnable_trigger) {
			listener.enterEnable_trigger(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEnable_trigger) {
			listener.exitEnable_trigger(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEnable_trigger) {
			return visitor.visitEnable_trigger(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateassertionstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_ASSERTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ASSERTION, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_CHECK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHECK, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public constraintattributespec(): ConstraintattributespecContext {
		return this.getRuleContext(0, ConstraintattributespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createassertionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateassertionstmt) {
			listener.enterCreateassertionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateassertionstmt) {
			listener.exitCreateassertionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateassertionstmt) {
			return visitor.visitCreateassertionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefinestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public function_name(): Function_nameContext | undefined {
		return this.tryGetRuleContext(0, Function_nameContext);
	}
	public aggr_args(): Aggr_argsContext | undefined {
		return this.tryGetRuleContext(0, Aggr_argsContext);
	}
	public definition(): DefinitionContext | undefined {
		return this.tryGetRuleContext(0, DefinitionContext);
	}
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	public old_aggr_definition(): Old_aggr_definitionContext | undefined {
		return this.tryGetRuleContext(0, Old_aggr_definitionContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public any_name(): Any_nameContext[];
	public any_name(i: number): Any_nameContext;
	public any_name(i?: number): Any_nameContext | Any_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Any_nameContext);
		} else {
			return this.getRuleContext(i, Any_nameContext);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opttablefuncelementlist(): OpttablefuncelementlistContext | undefined {
		return this.tryGetRuleContext(0, OpttablefuncelementlistContext);
	}
	public KW_ENUM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENUM, 0); }
	public opt_enum_val_list(): Opt_enum_val_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_enum_val_listContext);
	}
	public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RANGE, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_definestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefinestmt) {
			listener.enterDefinestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefinestmt) {
			listener.exitDefinestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefinestmt) {
			return visitor.visitDefinestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefinitionContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public def_list(): Def_listContext {
		return this.getRuleContext(0, Def_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_definition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefinition) {
			listener.enterDefinition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefinition) {
			listener.exitDefinition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefinition) {
			return visitor.visitDefinition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Def_listContext extends ParserRuleContext {
	public def_elem(): Def_elemContext[];
	public def_elem(i: number): Def_elemContext;
	public def_elem(i?: number): Def_elemContext | Def_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Def_elemContext);
		} else {
			return this.getRuleContext(i, Def_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_def_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDef_list) {
			listener.enterDef_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDef_list) {
			listener.exitDef_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDef_list) {
			return visitor.visitDef_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Def_elemContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public def_arg(): Def_argContext | undefined {
		return this.tryGetRuleContext(0, Def_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_def_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDef_elem) {
			listener.enterDef_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDef_elem) {
			listener.exitDef_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDef_elem) {
			return visitor.visitDef_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Def_argContext extends ParserRuleContext {
	public func_type(): Func_typeContext | undefined {
		return this.tryGetRuleContext(0, Func_typeContext);
	}
	public reserved_keyword(): Reserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Reserved_keywordContext);
	}
	public qual_all_op(): Qual_all_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_all_opContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_def_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDef_arg) {
			listener.enterDef_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDef_arg) {
			listener.exitDef_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDef_arg) {
			return visitor.visitDef_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Old_aggr_definitionContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public old_aggr_list(): Old_aggr_listContext {
		return this.getRuleContext(0, Old_aggr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_old_aggr_definition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOld_aggr_definition) {
			listener.enterOld_aggr_definition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOld_aggr_definition) {
			listener.exitOld_aggr_definition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOld_aggr_definition) {
			return visitor.visitOld_aggr_definition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Old_aggr_listContext extends ParserRuleContext {
	public old_aggr_elem(): Old_aggr_elemContext[];
	public old_aggr_elem(i: number): Old_aggr_elemContext;
	public old_aggr_elem(i?: number): Old_aggr_elemContext | Old_aggr_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Old_aggr_elemContext);
		} else {
			return this.getRuleContext(i, Old_aggr_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_old_aggr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOld_aggr_list) {
			listener.enterOld_aggr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOld_aggr_list) {
			listener.exitOld_aggr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOld_aggr_list) {
			return visitor.visitOld_aggr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Old_aggr_elemContext extends ParserRuleContext {
	public identifier(): IdentifierContext {
		return this.getRuleContext(0, IdentifierContext);
	}
	public EQUAL(): TerminalNode { return this.getToken(PostgreSQLParser.EQUAL, 0); }
	public def_arg(): Def_argContext {
		return this.getRuleContext(0, Def_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_old_aggr_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOld_aggr_elem) {
			listener.enterOld_aggr_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOld_aggr_elem) {
			listener.exitOld_aggr_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOld_aggr_elem) {
			return visitor.visitOld_aggr_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_enum_val_listContext extends ParserRuleContext {
	public enum_val_list(): Enum_val_listContext {
		return this.getRuleContext(0, Enum_val_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_enum_val_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_enum_val_list) {
			listener.enterOpt_enum_val_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_enum_val_list) {
			listener.exitOpt_enum_val_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_enum_val_list) {
			return visitor.visitOpt_enum_val_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Enum_val_listContext extends ParserRuleContext {
	public sconst(): SconstContext[];
	public sconst(i: number): SconstContext;
	public sconst(i?: number): SconstContext | SconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SconstContext);
		} else {
			return this.getRuleContext(i, SconstContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_enum_val_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEnum_val_list) {
			listener.enterEnum_val_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEnum_val_list) {
			listener.exitEnum_val_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEnum_val_list) {
			return visitor.visitEnum_val_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterenumstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_VALUE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VALUE, 0); }
	public sconst(): SconstContext[];
	public sconst(i: number): SconstContext;
	public sconst(i?: number): SconstContext | SconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SconstContext);
		} else {
			return this.getRuleContext(i, SconstContext);
		}
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BEFORE, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AFTER, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterenumstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterenumstmt) {
			listener.enterAlterenumstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterenumstmt) {
			listener.exitAlterenumstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterenumstmt) {
			return visitor.visitAlterenumstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_if_not_existsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IF, 0); }
	public KW_NOT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_if_not_exists; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_if_not_exists) {
			listener.enterOpt_if_not_exists(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_if_not_exists) {
			listener.exitOpt_if_not_exists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_if_not_exists) {
			return visitor.visitOpt_if_not_exists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateopclassstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_OPERATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_CLASS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CLASS, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public opclass_item_list(): Opclass_item_listContext {
		return this.getRuleContext(0, Opclass_item_listContext);
	}
	public opt_default(): Opt_defaultContext | undefined {
		return this.tryGetRuleContext(0, Opt_defaultContext);
	}
	public opt_opfamily(): Opt_opfamilyContext | undefined {
		return this.tryGetRuleContext(0, Opt_opfamilyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createopclassstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateopclassstmt) {
			listener.enterCreateopclassstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateopclassstmt) {
			listener.exitCreateopclassstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateopclassstmt) {
			return visitor.visitCreateopclassstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opclass_item_listContext extends ParserRuleContext {
	public opclass_item(): Opclass_itemContext[];
	public opclass_item(i: number): Opclass_itemContext;
	public opclass_item(i?: number): Opclass_itemContext | Opclass_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opclass_itemContext);
		} else {
			return this.getRuleContext(i, Opclass_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opclass_item_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpclass_item_list) {
			listener.enterOpclass_item_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpclass_item_list) {
			listener.exitOpclass_item_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpclass_item_list) {
			return visitor.visitOpclass_item_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opclass_itemContext extends ParserRuleContext {
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public opclass_purpose(): Opclass_purposeContext | undefined {
		return this.tryGetRuleContext(0, Opclass_purposeContext);
	}
	public opt_recheck(): Opt_recheckContext | undefined {
		return this.tryGetRuleContext(0, Opt_recheckContext);
	}
	public operator_with_argtypes(): Operator_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public type_list(): Type_listContext | undefined {
		return this.tryGetRuleContext(0, Type_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORAGE, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opclass_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpclass_item) {
			listener.enterOpclass_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpclass_item) {
			listener.exitOpclass_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpclass_item) {
			return visitor.visitOpclass_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_defaultContext extends ParserRuleContext {
	public KW_DEFAULT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_default; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_default) {
			listener.enterOpt_default(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_default) {
			listener.exitOpt_default(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_default) {
			return visitor.visitOpt_default(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_opfamilyContext extends ParserRuleContext {
	public KW_FAMILY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FAMILY, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_opfamily; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_opfamily) {
			listener.enterOpt_opfamily(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_opfamily) {
			listener.exitOpt_opfamily(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_opfamily) {
			return visitor.visitOpt_opfamily(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opclass_purposeContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opclass_purpose; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpclass_purpose) {
			listener.enterOpclass_purpose(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpclass_purpose) {
			listener.exitOpclass_purpose(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpclass_purpose) {
			return visitor.visitOpclass_purpose(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_recheckContext extends ParserRuleContext {
	public KW_RECHECK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RECHECK, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_recheck; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_recheck) {
			listener.enterOpt_recheck(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_recheck) {
			listener.exitOpt_recheck(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_recheck) {
			return visitor.visitOpt_recheck(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateopfamilystmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_OPERATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_FAMILY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FAMILY, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createopfamilystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateopfamilystmt) {
			listener.enterCreateopfamilystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateopfamilystmt) {
			listener.exitCreateopfamilystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateopfamilystmt) {
			return visitor.visitCreateopfamilystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlteropfamilystmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_OPERATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_FAMILY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FAMILY, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public opclass_item_list(): Opclass_item_listContext | undefined {
		return this.tryGetRuleContext(0, Opclass_item_listContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public opclass_drop_list(): Opclass_drop_listContext | undefined {
		return this.tryGetRuleContext(0, Opclass_drop_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alteropfamilystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlteropfamilystmt) {
			listener.enterAlteropfamilystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlteropfamilystmt) {
			listener.exitAlteropfamilystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlteropfamilystmt) {
			return visitor.visitAlteropfamilystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opclass_drop_listContext extends ParserRuleContext {
	public opclass_drop(): Opclass_dropContext[];
	public opclass_drop(i: number): Opclass_dropContext;
	public opclass_drop(i?: number): Opclass_dropContext | Opclass_dropContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opclass_dropContext);
		} else {
			return this.getRuleContext(i, Opclass_dropContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opclass_drop_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpclass_drop_list) {
			listener.enterOpclass_drop_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpclass_drop_list) {
			listener.exitOpclass_drop_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpclass_drop_list) {
			return visitor.visitOpclass_drop_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opclass_dropContext extends ParserRuleContext {
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public iconst(): IconstContext {
		return this.getRuleContext(0, IconstContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public type_list(): Type_listContext {
		return this.getRuleContext(0, Type_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opclass_drop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpclass_drop) {
			listener.enterOpclass_drop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpclass_drop) {
			listener.exitOpclass_drop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpclass_drop) {
			return visitor.visitOpclass_drop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReassignownedstmtContext extends ParserRuleContext {
	public KW_REASSIGN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REASSIGN, 0); }
	public KW_OWNED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OWNED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reassignownedstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReassignownedstmt) {
			listener.enterReassignownedstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReassignownedstmt) {
			listener.exitReassignownedstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReassignownedstmt) {
			return visitor.visitReassignownedstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropstmtContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name_list(): Table_name_listContext | undefined {
		return this.tryGetRuleContext(0, Table_name_listContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public name_list(): Name_listContext | undefined {
		return this.tryGetRuleContext(0, Name_listContext);
	}
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_nameList(): View_nameListContext | undefined {
		return this.tryGetRuleContext(0, View_nameListContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_ACCESS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACCESS, 0); }
	public KW_METHOD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_METHOD, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public opt_procedural(): Opt_proceduralContext | undefined {
		return this.tryGetRuleContext(0, Opt_proceduralContext);
	}
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_list(): Schema_name_listContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_listContext);
	}
	public KW_POLICY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POLICY, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public type_name_list(): Type_name_listContext | undefined {
		return this.tryGetRuleContext(0, Type_name_listContext);
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_CONCURRENTLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONCURRENTLY, 0); }
	public any_name_list(): Any_name_listContext | undefined {
		return this.tryGetRuleContext(0, Any_name_listContext);
	}
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CAST, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_OWNED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNED, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public role_list(): Role_listContext | undefined {
		return this.tryGetRuleContext(0, Role_listContext);
	}
	public KW_SUBSCRIPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_nameContext);
	}
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	public KW_MAPPING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAPPING, 0); }
	public auth_ident(): Auth_identContext | undefined {
		return this.tryGetRuleContext(0, Auth_identContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	public drop_option_list(): Drop_option_listContext | undefined {
		return this.tryGetRuleContext(0, Drop_option_listContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_dropstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDropstmt) {
			listener.enterDropstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDropstmt) {
			listener.exitDropstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDropstmt) {
			return visitor.visitDropstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class View_nameListContext extends ParserRuleContext {
	public view_name(): View_nameContext[];
	public view_name(i: number): View_nameContext;
	public view_name(i?: number): View_nameContext | View_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(View_nameContext);
		} else {
			return this.getRuleContext(i, View_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_view_nameList; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterView_nameList) {
			listener.enterView_nameList(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitView_nameList) {
			listener.exitView_nameList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitView_nameList) {
			return visitor.visitView_nameList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Object_type_any_nameContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext | undefined {
		return this.tryGetRuleContext(0, View_nameContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_object_type_any_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterObject_type_any_name) {
			listener.enterObject_type_any_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitObject_type_any_name) {
			listener.exitObject_type_any_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitObject_type_any_name) {
			return visitor.visitObject_type_any_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Object_type_nameContext extends ParserRuleContext {
	public KW_ACCESS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACCESS, 0); }
	public KW_METHOD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_METHOD, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public opt_procedural(): Opt_proceduralContext | undefined {
		return this.tryGetRuleContext(0, Opt_proceduralContext);
	}
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_SUBSCRIPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_object_type_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterObject_type_name) {
			listener.enterObject_type_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitObject_type_name) {
			listener.exitObject_type_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitObject_type_name) {
			return visitor.visitObject_type_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Object_type_name_on_any_nameContext extends ParserRuleContext {
	public KW_POLICY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POLICY, 0); }
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_object_type_name_on_any_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterObject_type_name_on_any_name) {
			listener.enterObject_type_name_on_any_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitObject_type_name_on_any_name) {
			listener.exitObject_type_name_on_any_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitObject_type_name_on_any_name) {
			return visitor.visitObject_type_name_on_any_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Any_name_listContext extends ParserRuleContext {
	public any_name(): Any_nameContext[];
	public any_name(i: number): Any_nameContext;
	public any_name(i?: number): Any_nameContext | Any_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Any_nameContext);
		} else {
			return this.getRuleContext(i, Any_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_any_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAny_name_list) {
			listener.enterAny_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAny_name_list) {
			listener.exitAny_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAny_name_list) {
			return visitor.visitAny_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_column_nameContext extends ParserRuleContext {
	public table_name(): Table_nameContext {
		return this.getRuleContext(0, Table_nameContext);
	}
	public DOT(): TerminalNode { return this.getToken(PostgreSQLParser.DOT, 0); }
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_column_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_column_name) {
			listener.enterTable_column_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_column_name) {
			listener.exitTable_column_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_column_name) {
			return visitor.visitTable_column_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Relation_column_nameContext extends ParserRuleContext {
	public relation_name(): Relation_nameContext {
		return this.getRuleContext(0, Relation_nameContext);
	}
	public DOT(): TerminalNode { return this.getToken(PostgreSQLParser.DOT, 0); }
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_relation_column_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRelation_column_name) {
			listener.enterRelation_column_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRelation_column_name) {
			listener.exitRelation_column_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRelation_column_name) {
			return visitor.visitRelation_column_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Relation_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_relation_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRelation_name) {
			listener.enterRelation_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRelation_name) {
			listener.exitRelation_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRelation_name) {
			return visitor.visitRelation_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Any_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_any_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAny_name) {
			listener.enterAny_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAny_name) {
			listener.exitAny_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAny_name) {
			return visitor.visitAny_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AttrsContext extends ParserRuleContext {
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.DOT);
		} else {
			return this.getToken(PostgreSQLParser.DOT, i);
		}
	}
	public attr_name(): Attr_nameContext[];
	public attr_name(i: number): Attr_nameContext;
	public attr_name(i?: number): Attr_nameContext | Attr_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Attr_nameContext);
		} else {
			return this.getRuleContext(i, Attr_nameContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_attrs; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAttrs) {
			listener.enterAttrs(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAttrs) {
			listener.exitAttrs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAttrs) {
			return visitor.visitAttrs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Type_name_listContext extends ParserRuleContext {
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_type_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterType_name_list) {
			listener.enterType_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitType_name_list) {
			listener.exitType_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitType_name_list) {
			return visitor.visitType_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TruncatestmtContext extends ParserRuleContext {
	public KW_TRUNCATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRUNCATE, 0); }
	public relation_expr_list(): Relation_expr_listContext {
		return this.getRuleContext(0, Relation_expr_listContext);
	}
	public opt_table(): Opt_tableContext | undefined {
		return this.tryGetRuleContext(0, Opt_tableContext);
	}
	public opt_restart_seqs(): Opt_restart_seqsContext | undefined {
		return this.tryGetRuleContext(0, Opt_restart_seqsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_truncatestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTruncatestmt) {
			listener.enterTruncatestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTruncatestmt) {
			listener.exitTruncatestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTruncatestmt) {
			return visitor.visitTruncatestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_restart_seqsContext extends ParserRuleContext {
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTINUE, 0); }
	public KW_IDENTITY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IDENTITY, 0); }
	public KW_RESTART(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTART, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_restart_seqs; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_restart_seqs) {
			listener.enterOpt_restart_seqs(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_restart_seqs) {
			listener.exitOpt_restart_seqs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_restart_seqs) {
			return visitor.visitOpt_restart_seqs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommentstmtContext extends ParserRuleContext {
	public KW_COMMENT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COMMENT, 0); }
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_ON);
		} else {
			return this.getToken(PostgreSQLParser.KW_ON, i);
		}
	}
	public object_type_any_name(): Object_type_any_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_any_nameContext);
	}
	public KW_IS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IS, 0); }
	public comment_text(): Comment_textContext {
		return this.getRuleContext(0, Comment_textContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMN, 0); }
	public relation_column_name(): Relation_column_nameContext | undefined {
		return this.tryGetRuleContext(0, Relation_column_nameContext);
	}
	public object_type_name(): Object_type_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_nameContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes(): Operator_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_POLICY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POLICY, 0); }
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_LARGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LARGE, 0); }
	public KW_OBJECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OBJECT, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CAST, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_commentstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCommentstmt) {
			listener.enterCommentstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCommentstmt) {
			listener.exitCommentstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCommentstmt) {
			return visitor.visitCommentstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Comment_textContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_comment_text; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterComment_text) {
			listener.enterComment_text(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitComment_text) {
			listener.exitComment_text(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitComment_text) {
			return visitor.visitComment_text(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SeclabelstmtContext extends ParserRuleContext {
	public KW_SECURITY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_LABEL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LABEL, 0); }
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public object_type_any_name(): Object_type_any_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_any_nameContext);
	}
	public KW_IS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IS, 0); }
	public security_label(): Security_labelContext {
		return this.getRuleContext(0, Security_labelContext);
	}
	public opt_provider(): Opt_providerContext | undefined {
		return this.tryGetRuleContext(0, Opt_providerContext);
	}
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMN, 0); }
	public table_column_name(): Table_column_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_column_nameContext);
	}
	public object_type_name(): Object_type_nameContext | undefined {
		return this.tryGetRuleContext(0, Object_type_nameContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_LARGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LARGE, 0); }
	public KW_OBJECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OBJECT, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_seclabelstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSeclabelstmt) {
			listener.enterSeclabelstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSeclabelstmt) {
			listener.exitSeclabelstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSeclabelstmt) {
			return visitor.visitSeclabelstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_providerContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext {
		return this.getRuleContext(0, Nonreservedword_or_sconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_provider; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_provider) {
			listener.enterOpt_provider(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_provider) {
			listener.exitOpt_provider(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_provider) {
			return visitor.visitOpt_provider(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Security_labelContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_security_label; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSecurity_label) {
			listener.enterSecurity_label(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSecurity_label) {
			listener.exitSecurity_label(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSecurity_label) {
			return visitor.visitSecurity_label(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FetchstmtContext extends ParserRuleContext {
	public KW_FETCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FETCH, 0); }
	public fetch_args(): Fetch_argsContext {
		return this.getRuleContext(0, Fetch_argsContext);
	}
	public KW_MOVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MOVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fetchstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFetchstmt) {
			listener.enterFetchstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFetchstmt) {
			listener.exitFetchstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFetchstmt) {
			return visitor.visitFetchstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Fetch_argsContext extends ParserRuleContext {
	public cursor_name(): Cursor_nameContext {
		return this.getRuleContext(0, Cursor_nameContext);
	}
	public from_in(): From_inContext | undefined {
		return this.tryGetRuleContext(0, From_inContext);
	}
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	public opt_from_in(): Opt_from_inContext | undefined {
		return this.tryGetRuleContext(0, Opt_from_inContext);
	}
	public KW_PRIOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIOR, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LAST, 0); }
	public KW_ABSOLUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABSOLUTE, 0); }
	public signediconst(): SignediconstContext | undefined {
		return this.tryGetRuleContext(0, SignediconstContext);
	}
	public KW_RELATIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELATIVE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_FORWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORWARD, 0); }
	public KW_BACKWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BACKWARD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fetch_args; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFetch_args) {
			listener.enterFetch_args(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFetch_args) {
			listener.exitFetch_args(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFetch_args) {
			return visitor.visitFetch_args(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class From_inContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_from_in; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFrom_in) {
			listener.enterFrom_in(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFrom_in) {
			listener.exitFrom_in(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFrom_in) {
			return visitor.visitFrom_in(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_from_inContext extends ParserRuleContext {
	public from_in(): From_inContext {
		return this.getRuleContext(0, From_inContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_from_in; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_from_in) {
			listener.enterOpt_from_in(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_from_in) {
			listener.exitOpt_from_in(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_from_in) {
			return visitor.visitOpt_from_in(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantstmtContext extends ParserRuleContext {
	public KW_GRANT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GRANT, 0); }
	public privileges(): PrivilegesContext {
		return this.getRuleContext(0, PrivilegesContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public privilege_target(): Privilege_targetContext {
		return this.getRuleContext(0, Privilege_targetContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public grantee_list(): Grantee_listContext {
		return this.getRuleContext(0, Grantee_listContext);
	}
	public opt_grant_grant_option(): Opt_grant_grant_optionContext | undefined {
		return this.tryGetRuleContext(0, Opt_grant_grant_optionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_grantstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGrantstmt) {
			listener.enterGrantstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGrantstmt) {
			listener.exitGrantstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGrantstmt) {
			return visitor.visitGrantstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokestmtContext extends ParserRuleContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REVOKE, 0); }
	public privileges(): PrivilegesContext {
		return this.getRuleContext(0, PrivilegesContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public privilege_target(): Privilege_targetContext {
		return this.getRuleContext(0, Privilege_targetContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public grantee_list(): Grantee_listContext {
		return this.getRuleContext(0, Grantee_listContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_revokestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRevokestmt) {
			listener.enterRevokestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRevokestmt) {
			listener.exitRevokestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRevokestmt) {
			return visitor.visitRevokestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegesContext extends ParserRuleContext {
	public privilege_list(): Privilege_listContext | undefined {
		return this.tryGetRuleContext(0, Privilege_listContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIVILEGES, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public beforeprivilegeselectlist(): BeforeprivilegeselectlistContext | undefined {
		return this.tryGetRuleContext(0, BeforeprivilegeselectlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_privileges; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPrivileges) {
			listener.enterPrivileges(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPrivileges) {
			listener.exitPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPrivileges) {
			return visitor.visitPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BeforeprivilegeselectlistContext extends ParserRuleContext {
	public beforeprivilegeselect(): BeforeprivilegeselectContext[];
	public beforeprivilegeselect(i: number): BeforeprivilegeselectContext;
	public beforeprivilegeselect(i?: number): BeforeprivilegeselectContext | BeforeprivilegeselectContext[] {
		if (i === undefined) {
			return this.getRuleContexts(BeforeprivilegeselectContext);
		} else {
			return this.getRuleContext(i, BeforeprivilegeselectContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_beforeprivilegeselectlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBeforeprivilegeselectlist) {
			listener.enterBeforeprivilegeselectlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBeforeprivilegeselectlist) {
			listener.exitBeforeprivilegeselectlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBeforeprivilegeselectlist) {
			return visitor.visitBeforeprivilegeselectlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BeforeprivilegeselectContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUNCATE, 0); }
	public KW_PEFERENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PEFERENCES, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_USAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USAGE, 0); }
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_CONNECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONNECT, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPORARY, 0); }
	public KW_TEMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMP, 0); }
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXECUTE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_beforeprivilegeselect; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBeforeprivilegeselect) {
			listener.enterBeforeprivilegeselect(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBeforeprivilegeselect) {
			listener.exitBeforeprivilegeselect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBeforeprivilegeselect) {
			return visitor.visitBeforeprivilegeselect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Privilege_listContext extends ParserRuleContext {
	public privilege(): PrivilegeContext[];
	public privilege(i: number): PrivilegeContext;
	public privilege(i?: number): PrivilegeContext | PrivilegeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(PrivilegeContext);
		} else {
			return this.getRuleContext(i, PrivilegeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_privilege_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPrivilege_list) {
			listener.enterPrivilege_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPrivilege_list) {
			listener.exitPrivilege_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPrivilege_list) {
			return visitor.visitPrivilege_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public KW_REFERENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFERENCES, 0); }
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATE, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_privilege; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPrivilege) {
			listener.enterPrivilege(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPrivilege) {
			listener.exitPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPrivilege) {
			return visitor.visitPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Privilege_targetContext extends ParserRuleContext {
	public qualified_name_list(): Qualified_name_listContext | undefined {
		return this.tryGetRuleContext(0, Qualified_name_listContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name_list(): Table_name_listContext | undefined {
		return this.tryGetRuleContext(0, Table_name_listContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public name_list(): Name_listContext | undefined {
		return this.tryGetRuleContext(0, Name_listContext);
	}
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes_list(): Function_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypes_listContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypes_listContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes_list(): Routine_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypes_listContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_nameList(): Database_nameListContext | undefined {
		return this.tryGetRuleContext(0, Database_nameListContext);
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public any_name_list(): Any_name_listContext | undefined {
		return this.tryGetRuleContext(0, Any_name_listContext);
	}
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public KW_LARGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LARGE, 0); }
	public KW_OBJECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OBJECT, 0); }
	public numericonly_list(): Numericonly_listContext | undefined {
		return this.tryGetRuleContext(0, Numericonly_listContext);
	}
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_list(): Schema_name_listContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_listContext);
	}
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name_list(): Tablespace_name_listContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_name_listContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLES, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_SEQUENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCES, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTIONS, 0); }
	public KW_PROCEDURES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURES, 0); }
	public KW_ROUTINES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_privilege_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPrivilege_target) {
			listener.enterPrivilege_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPrivilege_target) {
			listener.exitPrivilege_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPrivilege_target) {
			return visitor.visitPrivilege_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Grantee_listContext extends ParserRuleContext {
	public grantee(): GranteeContext[];
	public grantee(i: number): GranteeContext;
	public grantee(i?: number): GranteeContext | GranteeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(GranteeContext);
		} else {
			return this.getRuleContext(i, GranteeContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_grantee_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGrantee_list) {
			listener.enterGrantee_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGrantee_list) {
			listener.exitGrantee_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGrantee_list) {
			return visitor.visitGrantee_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GranteeContext extends ParserRuleContext {
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_grantee; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGrantee) {
			listener.enterGrantee(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGrantee) {
			listener.exitGrantee(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGrantee) {
			return visitor.visitGrantee(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_grant_grant_optionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_GRANT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GRANT, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_grant_grant_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_grant_grant_option) {
			listener.enterOpt_grant_grant_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_grant_grant_option) {
			listener.exitOpt_grant_grant_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_grant_grant_option) {
			return visitor.visitOpt_grant_grant_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantrolestmtContext extends ParserRuleContext {
	public KW_GRANT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GRANT, 0); }
	public privilege_list(): Privilege_listContext {
		return this.getRuleContext(0, Privilege_listContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	public opt_grant_admin_option(): Opt_grant_admin_optionContext | undefined {
		return this.tryGetRuleContext(0, Opt_grant_admin_optionContext);
	}
	public opt_granted_by(): Opt_granted_byContext | undefined {
		return this.tryGetRuleContext(0, Opt_granted_byContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_grantrolestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGrantrolestmt) {
			listener.enterGrantrolestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGrantrolestmt) {
			listener.exitGrantrolestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGrantrolestmt) {
			return visitor.visitGrantrolestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokerolestmtContext extends ParserRuleContext {
	public KW_REVOKE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REVOKE, 0); }
	public privilege_list(): Privilege_listContext {
		return this.getRuleContext(0, Privilege_listContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public role_list(): Role_listContext {
		return this.getRuleContext(0, Role_listContext);
	}
	public opt_granted_by(): Opt_granted_byContext | undefined {
		return this.tryGetRuleContext(0, Opt_granted_byContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADMIN, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_revokerolestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRevokerolestmt) {
			listener.enterRevokerolestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRevokerolestmt) {
			listener.exitRevokerolestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRevokerolestmt) {
			return visitor.visitRevokerolestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_grant_admin_optionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_ADMIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ADMIN, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_grant_admin_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_grant_admin_option) {
			listener.enterOpt_grant_admin_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_grant_admin_option) {
			listener.exitOpt_grant_admin_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_grant_admin_option) {
			return visitor.visitOpt_grant_admin_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_granted_byContext extends ParserRuleContext {
	public KW_GRANTED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GRANTED, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_granted_by; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_granted_by) {
			listener.enterOpt_granted_by(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_granted_by) {
			listener.exitOpt_granted_by(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_granted_by) {
			return visitor.visitOpt_granted_by(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterdefaultprivilegesstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_DEFAULT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_PRIVILEGES(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PRIVILEGES, 0); }
	public defacloptionlist(): DefacloptionlistContext {
		return this.getRuleContext(0, DefacloptionlistContext);
	}
	public defaclaction(): DefaclactionContext {
		return this.getRuleContext(0, DefaclactionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterdefaultprivilegesstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterdefaultprivilegesstmt) {
			listener.enterAlterdefaultprivilegesstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterdefaultprivilegesstmt) {
			listener.exitAlterdefaultprivilegesstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterdefaultprivilegesstmt) {
			return visitor.visitAlterdefaultprivilegesstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefacloptionlistContext extends ParserRuleContext {
	public defacloption(): DefacloptionContext[];
	public defacloption(i: number): DefacloptionContext;
	public defacloption(i?: number): DefacloptionContext | DefacloptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(DefacloptionContext);
		} else {
			return this.getRuleContext(i, DefacloptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_defacloptionlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefacloptionlist) {
			listener.enterDefacloptionlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefacloptionlist) {
			listener.exitDefacloptionlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefacloptionlist) {
			return visitor.visitDefacloptionlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefacloptionContext extends ParserRuleContext {
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_list(): Schema_name_listContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_listContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public role_list(): Role_listContext | undefined {
		return this.tryGetRuleContext(0, Role_listContext);
	}
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_defacloption; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefacloption) {
			listener.enterDefacloption(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefacloption) {
			listener.exitDefacloption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefacloption) {
			return visitor.visitDefacloption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DefaclactionContext extends ParserRuleContext {
	public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GRANT, 0); }
	public privileges(): PrivilegesContext {
		return this.getRuleContext(0, PrivilegesContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public defacl_privilege_target(): Defacl_privilege_targetContext {
		return this.getRuleContext(0, Defacl_privilege_targetContext);
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public grantee_list(): Grantee_listContext {
		return this.getRuleContext(0, Grantee_listContext);
	}
	public opt_grant_grant_option(): Opt_grant_grant_optionContext | undefined {
		return this.tryGetRuleContext(0, Opt_grant_grant_optionContext);
	}
	public KW_REVOKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REVOKE, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_defaclaction; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefaclaction) {
			listener.enterDefaclaction(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefaclaction) {
			listener.exitDefaclaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefaclaction) {
			return visitor.visitDefaclaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Defacl_privilege_targetContext extends ParserRuleContext {
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLES, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTIONS, 0); }
	public KW_ROUTINES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINES, 0); }
	public KW_SEQUENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCES, 0); }
	public KW_TYPES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPES, 0); }
	public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMAS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_defacl_privilege_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefacl_privilege_target) {
			listener.enterDefacl_privilege_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefacl_privilege_target) {
			listener.exitDefacl_privilege_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefacl_privilege_target) {
			return visitor.visitDefacl_privilege_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_INDEX(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public relation_expr(): Relation_exprContext {
		return this.getRuleContext(0, Relation_exprContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public index_params(): Index_paramsContext {
		return this.getRuleContext(0, Index_paramsContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_unique(): Opt_uniqueContext | undefined {
		return this.tryGetRuleContext(0, Opt_uniqueContext);
	}
	public opt_concurrently(): Opt_concurrentlyContext | undefined {
		return this.tryGetRuleContext(0, Opt_concurrentlyContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_index_name(): Opt_index_nameContext | undefined {
		return this.tryGetRuleContext(0, Opt_index_nameContext);
	}
	public access_method_clause(): Access_method_clauseContext | undefined {
		return this.tryGetRuleContext(0, Access_method_clauseContext);
	}
	public opt_include(): Opt_includeContext | undefined {
		return this.tryGetRuleContext(0, Opt_includeContext);
	}
	public nulls_distinct(): Nulls_distinctContext | undefined {
		return this.tryGetRuleContext(0, Nulls_distinctContext);
	}
	public opt_reloptions(): Opt_reloptionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_reloptionsContext);
	}
	public opttablespace(): OpttablespaceContext | undefined {
		return this.tryGetRuleContext(0, OpttablespaceContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_indexstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndexstmt) {
			listener.enterIndexstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndexstmt) {
			listener.exitIndexstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndexstmt) {
			return visitor.visitIndexstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_uniqueContext extends ParserRuleContext {
	public KW_UNIQUE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UNIQUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_unique; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_unique) {
			listener.enterOpt_unique(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_unique) {
			listener.exitOpt_unique(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_unique) {
			return visitor.visitOpt_unique(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_concurrentlyContext extends ParserRuleContext {
	public KW_CONCURRENTLY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONCURRENTLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_concurrently; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_concurrently) {
			listener.enterOpt_concurrently(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_concurrently) {
			listener.exitOpt_concurrently(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_concurrently) {
			return visitor.visitOpt_concurrently(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_index_nameContext extends ParserRuleContext {
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_index_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_index_name) {
			listener.enterOpt_index_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_index_name) {
			listener.exitOpt_index_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_index_name) {
			return visitor.visitOpt_index_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Access_method_clauseContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_access_method_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAccess_method_clause) {
			listener.enterAccess_method_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAccess_method_clause) {
			listener.exitAccess_method_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAccess_method_clause) {
			return visitor.visitAccess_method_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_paramsContext extends ParserRuleContext {
	public index_elem(): Index_elemContext[];
	public index_elem(i: number): Index_elemContext;
	public index_elem(i?: number): Index_elemContext | Index_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Index_elemContext);
		} else {
			return this.getRuleContext(i, Index_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_params; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_params) {
			listener.enterIndex_params(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_params) {
			listener.exitIndex_params(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_params) {
			return visitor.visitIndex_params(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_elem_optionsContext extends ParserRuleContext {
	public opt_collate(): Opt_collateContext | undefined {
		return this.tryGetRuleContext(0, Opt_collateContext);
	}
	public opt_class(): Opt_classContext | undefined {
		return this.tryGetRuleContext(0, Opt_classContext);
	}
	public opt_asc_desc(): Opt_asc_descContext | undefined {
		return this.tryGetRuleContext(0, Opt_asc_descContext);
	}
	public opt_nulls_order(): Opt_nulls_orderContext | undefined {
		return this.tryGetRuleContext(0, Opt_nulls_orderContext);
	}
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public reloptions(): ReloptionsContext | undefined {
		return this.tryGetRuleContext(0, ReloptionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_elem_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_elem_options) {
			listener.enterIndex_elem_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_elem_options) {
			listener.exitIndex_elem_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_elem_options) {
			return visitor.visitIndex_elem_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_elemContext extends ParserRuleContext {
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public index_elem_options(): Index_elem_optionsContext {
		return this.getRuleContext(0, Index_elem_optionsContext);
	}
	public func_expr_windowless(): Func_expr_windowlessContext | undefined {
		return this.tryGetRuleContext(0, Func_expr_windowlessContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_elem) {
			listener.enterIndex_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_elem) {
			listener.exitIndex_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_elem) {
			return visitor.visitIndex_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_includeContext extends ParserRuleContext {
	public KW_INCLUDE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INCLUDE, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public index_including_params(): Index_including_paramsContext {
		return this.getRuleContext(0, Index_including_paramsContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_include; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_include) {
			listener.enterOpt_include(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_include) {
			listener.exitOpt_include(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_include) {
			return visitor.visitOpt_include(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_including_paramsContext extends ParserRuleContext {
	public index_elem(): Index_elemContext[];
	public index_elem(i: number): Index_elemContext;
	public index_elem(i?: number): Index_elemContext | Index_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Index_elemContext);
		} else {
			return this.getRuleContext(i, Index_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_including_params; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_including_params) {
			listener.enterIndex_including_params(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_including_params) {
			listener.exitIndex_including_params(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_including_params) {
			return visitor.visitIndex_including_params(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_collateContext extends ParserRuleContext {
	public KW_COLLATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_collate; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_collate) {
			listener.enterOpt_collate(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_collate) {
			listener.exitOpt_collate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_collate) {
			return visitor.visitOpt_collate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_classContext extends ParserRuleContext {
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_class; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_class) {
			listener.enterOpt_class(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_class) {
			listener.exitOpt_class(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_class) {
			return visitor.visitOpt_class(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_asc_descContext extends ParserRuleContext {
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASC, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DESC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_asc_desc; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_asc_desc) {
			listener.enterOpt_asc_desc(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_asc_desc) {
			listener.exitOpt_asc_desc(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_asc_desc) {
			return visitor.visitOpt_asc_desc(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_nulls_orderContext extends ParserRuleContext {
	public KW_NULLS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NULLS, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LAST, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_nulls_order; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_nulls_order) {
			listener.enterOpt_nulls_order(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_nulls_order) {
			listener.exitOpt_nulls_order(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_nulls_order) {
			return visitor.visitOpt_nulls_order(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatefunctionstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public func_args_with_defaults(): Func_args_with_defaultsContext {
		return this.getRuleContext(0, Func_args_with_defaultsContext);
	}
	public createfunc_opt_list(): Createfunc_opt_listContext {
		return this.getRuleContext(0, Createfunc_opt_listContext);
	}
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_name_create(): Function_name_createContext | undefined {
		return this.tryGetRuleContext(0, Function_name_createContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_name_create(): Procedure_name_createContext | undefined {
		return this.tryGetRuleContext(0, Procedure_name_createContext);
	}
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	public KW_RETURNS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RETURNS, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public attrilist(): AttrilistContext | undefined {
		return this.tryGetRuleContext(0, AttrilistContext);
	}
	public func_return(): Func_returnContext | undefined {
		return this.tryGetRuleContext(0, Func_returnContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public table_func_column_list(): Table_func_column_listContext | undefined {
		return this.tryGetRuleContext(0, Table_func_column_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createfunctionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatefunctionstmt) {
			listener.enterCreatefunctionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatefunctionstmt) {
			listener.exitCreatefunctionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatefunctionstmt) {
			return visitor.visitCreatefunctionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AttrilistContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public colid(): ColidContext[];
	public colid(i: number): ColidContext;
	public colid(i?: number): ColidContext | ColidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColidContext);
		} else {
			return this.getRuleContext(i, ColidContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_attrilist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAttrilist) {
			listener.enterAttrilist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAttrilist) {
			listener.exitAttrilist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAttrilist) {
			return visitor.visitAttrilist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_or_replaceContext extends ParserRuleContext {
	public KW_OR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OR, 0); }
	public KW_REPLACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REPLACE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_or_replace; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_or_replace) {
			listener.enterOpt_or_replace(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_or_replace) {
			listener.exitOpt_or_replace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_or_replace) {
			return visitor.visitOpt_or_replace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_argsContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public func_args_list(): Func_args_listContext | undefined {
		return this.tryGetRuleContext(0, Func_args_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_args; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_args) {
			listener.enterFunc_args(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_args) {
			listener.exitFunc_args(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_args) {
			return visitor.visitFunc_args(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_args_listContext extends ParserRuleContext {
	public func_arg(): Func_argContext[];
	public func_arg(i: number): Func_argContext;
	public func_arg(i?: number): Func_argContext | Func_argContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Func_argContext);
		} else {
			return this.getRuleContext(i, Func_argContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_args_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_args_list) {
			listener.enterFunc_args_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_args_list) {
			listener.exitFunc_args_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_args_list) {
			return visitor.visitFunc_args_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_with_argtypes_listContext extends ParserRuleContext {
	public routine_with_argtypes(): Routine_with_argtypesContext[];
	public routine_with_argtypes(i: number): Routine_with_argtypesContext;
	public routine_with_argtypes(i?: number): Routine_with_argtypesContext | Routine_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Routine_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Routine_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_with_argtypes_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_with_argtypes_list) {
			listener.enterRoutine_with_argtypes_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_with_argtypes_list) {
			listener.exitRoutine_with_argtypes_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_with_argtypes_list) {
			return visitor.visitRoutine_with_argtypes_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_with_argtypesContext extends ParserRuleContext {
	public routine_name(): Routine_nameContext | undefined {
		return this.tryGetRuleContext(0, Routine_nameContext);
	}
	public func_args(): Func_argsContext | undefined {
		return this.tryGetRuleContext(0, Func_argsContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_with_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_with_argtypes) {
			listener.enterRoutine_with_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_with_argtypes) {
			listener.exitRoutine_with_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_with_argtypes) {
			return visitor.visitRoutine_with_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_with_argtypes_listContext extends ParserRuleContext {
	public procedure_with_argtypes(): Procedure_with_argtypesContext[];
	public procedure_with_argtypes(i: number): Procedure_with_argtypesContext;
	public procedure_with_argtypes(i?: number): Procedure_with_argtypesContext | Procedure_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Procedure_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Procedure_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_with_argtypes_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_with_argtypes_list) {
			listener.enterProcedure_with_argtypes_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_with_argtypes_list) {
			listener.exitProcedure_with_argtypes_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_with_argtypes_list) {
			return visitor.visitProcedure_with_argtypes_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_with_argtypesContext extends ParserRuleContext {
	public procedure_name(): Procedure_nameContext | undefined {
		return this.tryGetRuleContext(0, Procedure_nameContext);
	}
	public func_args(): Func_argsContext | undefined {
		return this.tryGetRuleContext(0, Func_argsContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_with_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_with_argtypes) {
			listener.enterProcedure_with_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_with_argtypes) {
			listener.exitProcedure_with_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_with_argtypes) {
			return visitor.visitProcedure_with_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_with_argtypes_listContext extends ParserRuleContext {
	public function_with_argtypes(): Function_with_argtypesContext[];
	public function_with_argtypes(i: number): Function_with_argtypesContext;
	public function_with_argtypes(i?: number): Function_with_argtypesContext | Function_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Function_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Function_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_function_with_argtypes_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunction_with_argtypes_list) {
			listener.enterFunction_with_argtypes_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunction_with_argtypes_list) {
			listener.exitFunction_with_argtypes_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunction_with_argtypes_list) {
			return visitor.visitFunction_with_argtypes_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_with_argtypesContext extends ParserRuleContext {
	public function_name(): Function_nameContext | undefined {
		return this.tryGetRuleContext(0, Function_nameContext);
	}
	public func_args(): Func_argsContext | undefined {
		return this.tryGetRuleContext(0, Func_argsContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_function_with_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunction_with_argtypes) {
			listener.enterFunction_with_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunction_with_argtypes) {
			listener.exitFunction_with_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunction_with_argtypes) {
			return visitor.visitFunction_with_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_args_with_defaultsContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public func_args_with_defaults_list(): Func_args_with_defaults_listContext | undefined {
		return this.tryGetRuleContext(0, Func_args_with_defaults_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_args_with_defaults; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_args_with_defaults) {
			listener.enterFunc_args_with_defaults(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_args_with_defaults) {
			listener.exitFunc_args_with_defaults(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_args_with_defaults) {
			return visitor.visitFunc_args_with_defaults(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_args_with_defaults_listContext extends ParserRuleContext {
	public func_arg_with_default(): Func_arg_with_defaultContext[];
	public func_arg_with_default(i: number): Func_arg_with_defaultContext;
	public func_arg_with_default(i?: number): Func_arg_with_defaultContext | Func_arg_with_defaultContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Func_arg_with_defaultContext);
		} else {
			return this.getRuleContext(i, Func_arg_with_defaultContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_args_with_defaults_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_args_with_defaults_list) {
			listener.enterFunc_args_with_defaults_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_args_with_defaults_list) {
			listener.exitFunc_args_with_defaults_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_args_with_defaults_list) {
			return visitor.visitFunc_args_with_defaults_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_argContext extends ParserRuleContext {
	public arg_class(): Arg_classContext | undefined {
		return this.tryGetRuleContext(0, Arg_classContext);
	}
	public func_type(): Func_typeContext {
		return this.getRuleContext(0, Func_typeContext);
	}
	public param_name(): Param_nameContext | undefined {
		return this.tryGetRuleContext(0, Param_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_arg) {
			listener.enterFunc_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_arg) {
			listener.exitFunc_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_arg) {
			return visitor.visitFunc_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Arg_classContext extends ParserRuleContext {
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_OUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OUT, 0); }
	public KW_INOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INOUT, 0); }
	public KW_VARIADIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARIADIC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_arg_class; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterArg_class) {
			listener.enterArg_class(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitArg_class) {
			listener.exitArg_class(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitArg_class) {
			return visitor.visitArg_class(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Param_nameContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext {
		return this.getRuleContext(0, Type_function_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_param_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterParam_name) {
			listener.enterParam_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitParam_name) {
			listener.exitParam_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitParam_name) {
			return visitor.visitParam_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_returnContext extends ParserRuleContext {
	public func_type(): Func_typeContext {
		return this.getRuleContext(0, Func_typeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_return; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_return) {
			listener.enterFunc_return(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_return) {
			listener.exitFunc_return(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_return) {
			return visitor.visitFunc_return(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_typeContext extends ParserRuleContext {
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public type_function_name(): Type_function_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_function_nameContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	public PERCENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PERCENT, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_SETOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SETOF, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_type) {
			listener.enterFunc_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_type) {
			listener.exitFunc_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_type) {
			return visitor.visitFunc_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_arg_with_defaultContext extends ParserRuleContext {
	public func_arg(): Func_argContext {
		return this.getRuleContext(0, Func_argContext);
	}
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_arg_with_default; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_arg_with_default) {
			listener.enterFunc_arg_with_default(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_arg_with_default) {
			listener.exitFunc_arg_with_default(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_arg_with_default) {
			return visitor.visitFunc_arg_with_default(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Aggr_argContext extends ParserRuleContext {
	public func_arg(): Func_argContext {
		return this.getRuleContext(0, Func_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aggr_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAggr_arg) {
			listener.enterAggr_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAggr_arg) {
			listener.exitAggr_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAggr_arg) {
			return visitor.visitAggr_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Aggr_argsContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public aggr_args_list(): Aggr_args_listContext[];
	public aggr_args_list(i: number): Aggr_args_listContext;
	public aggr_args_list(i?: number): Aggr_args_listContext | Aggr_args_listContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Aggr_args_listContext);
		} else {
			return this.getRuleContext(i, Aggr_args_listContext);
		}
	}
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aggr_args; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAggr_args) {
			listener.enterAggr_args(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAggr_args) {
			listener.exitAggr_args(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAggr_args) {
			return visitor.visitAggr_args(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Aggr_args_listContext extends ParserRuleContext {
	public aggr_arg(): Aggr_argContext[];
	public aggr_arg(i: number): Aggr_argContext;
	public aggr_arg(i?: number): Aggr_argContext | Aggr_argContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Aggr_argContext);
		} else {
			return this.getRuleContext(i, Aggr_argContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aggr_args_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAggr_args_list) {
			listener.enterAggr_args_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAggr_args_list) {
			listener.exitAggr_args_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAggr_args_list) {
			return visitor.visitAggr_args_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Aggregate_with_argtypesContext extends ParserRuleContext {
	public function_name(): Function_nameContext {
		return this.getRuleContext(0, Function_nameContext);
	}
	public aggr_args(): Aggr_argsContext {
		return this.getRuleContext(0, Aggr_argsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aggregate_with_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAggregate_with_argtypes) {
			listener.enterAggregate_with_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAggregate_with_argtypes) {
			listener.exitAggregate_with_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAggregate_with_argtypes) {
			return visitor.visitAggregate_with_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Aggregate_with_argtypes_listContext extends ParserRuleContext {
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext[];
	public aggregate_with_argtypes(i: number): Aggregate_with_argtypesContext;
	public aggregate_with_argtypes(i?: number): Aggregate_with_argtypesContext | Aggregate_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Aggregate_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Aggregate_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aggregate_with_argtypes_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAggregate_with_argtypes_list) {
			listener.enterAggregate_with_argtypes_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAggregate_with_argtypes_list) {
			listener.exitAggregate_with_argtypes_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAggregate_with_argtypes_list) {
			return visitor.visitAggregate_with_argtypes_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createfunc_opt_listContext extends ParserRuleContext {
	public createfunc_opt_item(): Createfunc_opt_itemContext[];
	public createfunc_opt_item(i: number): Createfunc_opt_itemContext;
	public createfunc_opt_item(i?: number): Createfunc_opt_itemContext | Createfunc_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Createfunc_opt_itemContext);
		} else {
			return this.getRuleContext(i, Createfunc_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createfunc_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatefunc_opt_list) {
			listener.enterCreatefunc_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatefunc_opt_list) {
			listener.exitCreatefunc_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatefunc_opt_list) {
			return visitor.visitCreatefunc_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Common_func_opt_itemContext extends ParserRuleContext {
	public KW_CALLED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CALLED, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_NULL(): TerminalNode[];
	public KW_NULL(i: number): TerminalNode;
	public KW_NULL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_NULL);
		} else {
			return this.getToken(PostgreSQLParser.KW_NULL, i);
		}
	}
	public KW_INPUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INPUT, 0); }
	public KW_RETURNS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RETURNS, 0); }
	public KW_STRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRICT, 0); }
	public KW_IMMUTABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMUTABLE, 0); }
	public KW_STABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STABLE, 0); }
	public KW_VOLATILE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VOLATILE, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTERNAL, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFINER, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INVOKER, 0); }
	public KW_LEAKPROOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEAKPROOF, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_COST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COST, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public KW_SUPPORT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUPPORT, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public functionsetresetclause(): FunctionsetresetclauseContext | undefined {
		return this.tryGetRuleContext(0, FunctionsetresetclauseContext);
	}
	public KW_PARALLEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARALLEL, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_common_func_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCommon_func_opt_item) {
			listener.enterCommon_func_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCommon_func_opt_item) {
			listener.exitCommon_func_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCommon_func_opt_item) {
			return visitor.visitCommon_func_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createfunc_opt_itemContext extends ParserRuleContext {
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public sconst(): SconstContext[];
	public sconst(i: number): SconstContext;
	public sconst(i?: number): SconstContext | SconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SconstContext);
		} else {
			return this.getRuleContext(i, SconstContext);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconstContext);
	}
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public transform_type_list(): Transform_type_listContext | undefined {
		return this.tryGetRuleContext(0, Transform_type_listContext);
	}
	public KW_WINDOW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WINDOW, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public colid(): ColidContext[];
	public colid(i: number): ColidContext;
	public colid(i?: number): ColidContext | ColidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColidContext);
		} else {
			return this.getRuleContext(i, ColidContext);
		}
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public stmt(): StmtContext | undefined {
		return this.tryGetRuleContext(0, StmtContext);
	}
	public common_func_opt_item(): Common_func_opt_itemContext | undefined {
		return this.tryGetRuleContext(0, Common_func_opt_itemContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createfunc_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatefunc_opt_item) {
			listener.enterCreatefunc_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatefunc_opt_item) {
			listener.exitCreatefunc_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatefunc_opt_item) {
			return visitor.visitCreatefunc_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Transform_type_listContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode[];
	public KW_FOR(i: number): TerminalNode;
	public KW_FOR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_FOR);
		} else {
			return this.getToken(PostgreSQLParser.KW_FOR, i);
		}
	}
	public KW_TYPE(): TerminalNode[];
	public KW_TYPE(i: number): TerminalNode;
	public KW_TYPE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_TYPE);
		} else {
			return this.getToken(PostgreSQLParser.KW_TYPE, i);
		}
	}
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transform_type_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransform_type_list) {
			listener.enterTransform_type_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransform_type_list) {
			listener.exitTransform_type_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransform_type_list) {
			return visitor.visitTransform_type_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_definitionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public definition(): DefinitionContext {
		return this.getRuleContext(0, DefinitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_definition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_definition) {
			listener.enterOpt_definition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_definition) {
			listener.exitOpt_definition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_definition) {
			return visitor.visitOpt_definition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_func_columnContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public func_type(): Func_typeContext {
		return this.getRuleContext(0, Func_typeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_func_column; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_func_column) {
			listener.enterTable_func_column(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_func_column) {
			listener.exitTable_func_column(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_func_column) {
			return visitor.visitTable_func_column(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_func_column_listContext extends ParserRuleContext {
	public table_func_column(): Table_func_columnContext[];
	public table_func_column(i: number): Table_func_columnContext;
	public table_func_column(i?: number): Table_func_columnContext | Table_func_columnContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Table_func_columnContext);
		} else {
			return this.getRuleContext(i, Table_func_columnContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_func_column_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_func_column_list) {
			listener.enterTable_func_column_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_func_column_list) {
			listener.exitTable_func_column_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_func_column_list) {
			return visitor.visitTable_func_column_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterfunctionstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public alterFunctionTypeClause(): AlterFunctionTypeClauseContext {
		return this.getRuleContext(0, AlterFunctionTypeClauseContext);
	}
	public alterfunc_opt_list(): Alterfunc_opt_listContext {
		return this.getRuleContext(0, Alterfunc_opt_listContext);
	}
	public opt_restrict(): Opt_restrictContext | undefined {
		return this.tryGetRuleContext(0, Opt_restrictContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterfunctionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterfunctionstmt) {
			listener.enterAlterfunctionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterfunctionstmt) {
			listener.exitAlterfunctionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterfunctionstmt) {
			return visitor.visitAlterfunctionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterFunctionTypeClauseContext extends ParserRuleContext {
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterFunctionTypeClause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterFunctionTypeClause) {
			listener.enterAlterFunctionTypeClause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterFunctionTypeClause) {
			listener.exitAlterFunctionTypeClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterFunctionTypeClause) {
			return visitor.visitAlterFunctionTypeClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alterfunc_opt_listContext extends ParserRuleContext {
	public common_func_opt_item(): Common_func_opt_itemContext[];
	public common_func_opt_item(i: number): Common_func_opt_itemContext;
	public common_func_opt_item(i?: number): Common_func_opt_itemContext | Common_func_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Common_func_opt_itemContext);
		} else {
			return this.getRuleContext(i, Common_func_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterfunc_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterfunc_opt_list) {
			listener.enterAlterfunc_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterfunc_opt_list) {
			listener.exitAlterfunc_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterfunc_opt_list) {
			return visitor.visitAlterfunc_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_restrictContext extends ParserRuleContext {
	public KW_RESTRICT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RESTRICT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_restrict; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_restrict) {
			listener.enterOpt_restrict(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_restrict) {
			listener.exitOpt_restrict(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_restrict) {
			return visitor.visitOpt_restrict(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemovefuncstmtContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes_list(): Function_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypes_listContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypes_listContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes_list(): Routine_with_argtypes_listContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypes_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_removefuncstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRemovefuncstmt) {
			listener.enterRemovefuncstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRemovefuncstmt) {
			listener.exitRemovefuncstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRemovefuncstmt) {
			return visitor.visitRemovefuncstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemoveaggrstmtContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_AGGREGATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes_list(): Aggregate_with_argtypes_listContext {
		return this.getRuleContext(0, Aggregate_with_argtypes_listContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_removeaggrstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRemoveaggrstmt) {
			listener.enterRemoveaggrstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRemoveaggrstmt) {
			listener.exitRemoveaggrstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRemoveaggrstmt) {
			return visitor.visitRemoveaggrstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemoveoperstmtContext extends ParserRuleContext {
	public KW_DROP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_OPERATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes_list(): Operator_with_argtypes_listContext {
		return this.getRuleContext(0, Operator_with_argtypes_listContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_removeoperstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRemoveoperstmt) {
			listener.enterRemoveoperstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRemoveoperstmt) {
			listener.exitRemoveoperstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRemoveoperstmt) {
			return visitor.visitRemoveoperstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Oper_argtypesContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_oper_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOper_argtypes) {
			listener.enterOper_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOper_argtypes) {
			listener.exitOper_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOper_argtypes) {
			return visitor.visitOper_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Any_operatorContext extends ParserRuleContext {
	public all_op(): All_opContext {
		return this.getRuleContext(0, All_opContext);
	}
	public colid(): ColidContext[];
	public colid(i: number): ColidContext;
	public colid(i?: number): ColidContext | ColidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColidContext);
		} else {
			return this.getRuleContext(i, ColidContext);
		}
	}
	public DOT(): TerminalNode[];
	public DOT(i: number): TerminalNode;
	public DOT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.DOT);
		} else {
			return this.getToken(PostgreSQLParser.DOT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_any_operator; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAny_operator) {
			listener.enterAny_operator(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAny_operator) {
			listener.exitAny_operator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAny_operator) {
			return visitor.visitAny_operator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Operator_with_argtypes_listContext extends ParserRuleContext {
	public operator_with_argtypes(): Operator_with_argtypesContext[];
	public operator_with_argtypes(i: number): Operator_with_argtypesContext;
	public operator_with_argtypes(i?: number): Operator_with_argtypesContext | Operator_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Operator_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Operator_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_operator_with_argtypes_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOperator_with_argtypes_list) {
			listener.enterOperator_with_argtypes_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOperator_with_argtypes_list) {
			listener.exitOperator_with_argtypes_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOperator_with_argtypes_list) {
			return visitor.visitOperator_with_argtypes_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Operator_with_argtypesContext extends ParserRuleContext {
	public any_operator(): Any_operatorContext {
		return this.getRuleContext(0, Any_operatorContext);
	}
	public oper_argtypes(): Oper_argtypesContext {
		return this.getRuleContext(0, Oper_argtypesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_operator_with_argtypes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOperator_with_argtypes) {
			listener.enterOperator_with_argtypes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOperator_with_argtypes) {
			listener.exitOperator_with_argtypes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOperator_with_argtypes) {
			return visitor.visitOperator_with_argtypes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DostmtContext extends ParserRuleContext {
	public KW_DO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DO, 0); }
	public dostmt_opt_list(): Dostmt_opt_listContext {
		return this.getRuleContext(0, Dostmt_opt_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_dostmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDostmt) {
			listener.enterDostmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDostmt) {
			listener.exitDostmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDostmt) {
			return visitor.visitDostmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Dostmt_opt_listContext extends ParserRuleContext {
	public dostmt_opt_item(): Dostmt_opt_itemContext[];
	public dostmt_opt_item(i: number): Dostmt_opt_itemContext;
	public dostmt_opt_item(i?: number): Dostmt_opt_itemContext | Dostmt_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Dostmt_opt_itemContext);
		} else {
			return this.getRuleContext(i, Dostmt_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_dostmt_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDostmt_opt_list) {
			listener.enterDostmt_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDostmt_opt_list) {
			listener.exitDostmt_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDostmt_opt_list) {
			return visitor.visitDostmt_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Dostmt_opt_itemContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public nonreservedword_or_sconst(): Nonreservedword_or_sconstContext | undefined {
		return this.tryGetRuleContext(0, Nonreservedword_or_sconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_dostmt_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDostmt_opt_item) {
			listener.enterDostmt_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDostmt_opt_item) {
			listener.exitDostmt_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDostmt_opt_item) {
			return visitor.visitDostmt_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatecaststmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_CAST(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CAST, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public cast_context(): Cast_contextContext | undefined {
		return this.tryGetRuleContext(0, Cast_contextContext);
	}
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	public KW_INOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INOUT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createcaststmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatecaststmt) {
			listener.enterCreatecaststmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatecaststmt) {
			listener.exitCreatecaststmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatecaststmt) {
			return visitor.visitCreatecaststmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cast_contextContext extends ParserRuleContext {
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public KW_IMPLICIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMPLICIT, 0); }
	public KW_ASSIGNMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASSIGNMENT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cast_context; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCast_context) {
			listener.enterCast_context(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCast_context) {
			listener.exitCast_context(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCast_context) {
			return visitor.visitCast_context(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_if_existsContext extends ParserRuleContext {
	public KW_IF(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IF, 0); }
	public KW_EXISTS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXISTS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_if_exists; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_if_exists) {
			listener.enterOpt_if_exists(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_if_exists) {
			listener.exitOpt_if_exists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_if_exists) {
			return visitor.visitOpt_if_exists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatetransformstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TRANSFORM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public KW_LANGUAGE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public transform_element_list(): Transform_element_listContext {
		return this.getRuleContext(0, Transform_element_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createtransformstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatetransformstmt) {
			listener.enterCreatetransformstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatetransformstmt) {
			listener.exitCreatetransformstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatetransformstmt) {
			return visitor.visitCreatetransformstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Transform_element_listContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_SQL(): TerminalNode[];
	public KW_SQL(i: number): TerminalNode;
	public KW_SQL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_SQL);
		} else {
			return this.getToken(PostgreSQLParser.KW_SQL, i);
		}
	}
	public KW_WITH(): TerminalNode[];
	public KW_WITH(i: number): TerminalNode;
	public KW_WITH(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_WITH);
		} else {
			return this.getToken(PostgreSQLParser.KW_WITH, i);
		}
	}
	public KW_FUNCTION(): TerminalNode[];
	public KW_FUNCTION(i: number): TerminalNode;
	public KW_FUNCTION(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_FUNCTION);
		} else {
			return this.getToken(PostgreSQLParser.KW_FUNCTION, i);
		}
	}
	public function_with_argtypes(): Function_with_argtypesContext[];
	public function_with_argtypes(i: number): Function_with_argtypesContext;
	public function_with_argtypes(i?: number): Function_with_argtypesContext | Function_with_argtypesContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Function_with_argtypesContext);
		} else {
			return this.getRuleContext(i, Function_with_argtypesContext);
		}
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transform_element_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransform_element_list) {
			listener.enterTransform_element_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransform_element_list) {
			listener.exitTransform_element_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransform_element_list) {
			return visitor.visitTransform_element_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReindexstmtContext extends ParserRuleContext {
	public KW_REINDEX(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REINDEX, 0); }
	public reindex_target_type(): Reindex_target_typeContext | undefined {
		return this.tryGetRuleContext(0, Reindex_target_typeContext);
	}
	public reindex_target_multitable(): Reindex_target_multitableContext | undefined {
		return this.tryGetRuleContext(0, Reindex_target_multitableContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public reindex_option_list(): Reindex_option_listContext | undefined {
		return this.tryGetRuleContext(0, Reindex_option_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reindexstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReindexstmt) {
			listener.enterReindexstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReindexstmt) {
			listener.exitReindexstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReindexstmt) {
			return visitor.visitReindexstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reindex_target_typeContext extends ParserRuleContext {
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public opt_concurrently(): Opt_concurrentlyContext | undefined {
		return this.tryGetRuleContext(0, Opt_concurrentlyContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reindex_target_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReindex_target_type) {
			listener.enterReindex_target_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReindex_target_type) {
			listener.exitReindex_target_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReindex_target_type) {
			return visitor.visitReindex_target_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reindex_target_multitableContext extends ParserRuleContext {
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public opt_concurrently(): Opt_concurrentlyContext | undefined {
		return this.tryGetRuleContext(0, Opt_concurrentlyContext);
	}
	public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSTEM, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reindex_target_multitable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReindex_target_multitable) {
			listener.enterReindex_target_multitable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReindex_target_multitable) {
			listener.exitReindex_target_multitable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReindex_target_multitable) {
			return visitor.visitReindex_target_multitable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reindex_option_listContext extends ParserRuleContext {
	public reindex_option_elem(): Reindex_option_elemContext[];
	public reindex_option_elem(i: number): Reindex_option_elemContext;
	public reindex_option_elem(i?: number): Reindex_option_elemContext | Reindex_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Reindex_option_elemContext);
		} else {
			return this.getRuleContext(i, Reindex_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reindex_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReindex_option_list) {
			listener.enterReindex_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReindex_option_list) {
			listener.exitReindex_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReindex_option_list) {
			return visitor.visitReindex_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reindex_option_elemContext extends ParserRuleContext {
	public KW_VERBOSE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VERBOSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reindex_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReindex_option_elem) {
			listener.enterReindex_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReindex_option_elem) {
			listener.exitReindex_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReindex_option_elem) {
			return visitor.visitReindex_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltertblspcstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TABLESPACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext {
		return this.getRuleContext(0, Tablespace_nameContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public reloptions(): ReloptionsContext {
		return this.getRuleContext(0, ReloptionsContext);
	}
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altertblspcstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltertblspcstmt) {
			listener.enterAltertblspcstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltertblspcstmt) {
			listener.exitAltertblspcstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltertblspcstmt) {
			return visitor.visitAltertblspcstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenamestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_RENAME(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RENAME, 0); }
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	public database_name_create(): Database_name_createContext | undefined {
		return this.tryGetRuleContext(0, Database_name_createContext);
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public function_name_create(): Function_name_createContext | undefined {
		return this.tryGetRuleContext(0, Function_name_createContext);
	}
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	public roleid(): RoleidContext[];
	public roleid(i: number): RoleidContext;
	public roleid(i?: number): RoleidContext | RoleidContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RoleidContext);
		} else {
			return this.getRuleContext(i, RoleidContext);
		}
	}
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public opt_procedural(): Opt_proceduralContext | undefined {
		return this.tryGetRuleContext(0, Opt_proceduralContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_POLICY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POLICY, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public procedure_name_create(): Procedure_name_createContext | undefined {
		return this.tryGetRuleContext(0, Procedure_name_createContext);
	}
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public schema_name_create(): Schema_name_createContext | undefined {
		return this.tryGetRuleContext(0, Schema_name_createContext);
	}
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_SUBSCRIPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public relation_expr(): Relation_exprContext | undefined {
		return this.tryGetRuleContext(0, Relation_exprContext);
	}
	public table_name_create(): Table_name_createContext | undefined {
		return this.tryGetRuleContext(0, Table_name_createContext);
	}
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext | undefined {
		return this.tryGetRuleContext(0, View_nameContext);
	}
	public view_name_create(): View_name_createContext | undefined {
		return this.tryGetRuleContext(0, View_name_createContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public column_name_create(): Column_name_createContext | undefined {
		return this.tryGetRuleContext(0, Column_name_createContext);
	}
	public opt_column(): Opt_columnContext | undefined {
		return this.tryGetRuleContext(0, Opt_columnContext);
	}
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_nameContext);
	}
	public tablespace_name_create(): Tablespace_name_createContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_name_createContext);
	}
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ATTRIBUTE, 0); }
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_renamestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRenamestmt) {
			listener.enterRenamestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRenamestmt) {
			listener.exitRenamestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRenamestmt) {
			return visitor.visitRenamestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_columnContext extends ParserRuleContext {
	public KW_COLUMN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COLUMN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_column; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_column) {
			listener.enterOpt_column(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_column) {
			listener.exitOpt_column(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_column) {
			return visitor.visitOpt_column(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_set_dataContext extends ParserRuleContext {
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public KW_DATA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_set_data; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_set_data) {
			listener.enterOpt_set_data(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_set_data) {
			listener.exitOpt_set_data(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_set_data) {
			return visitor.visitOpt_set_data(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterobjectdependsstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_DEPENDS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEPENDS, 0); }
	public KW_ON(): TerminalNode[];
	public KW_ON(i: number): TerminalNode;
	public KW_ON(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_ON);
		} else {
			return this.getToken(PostgreSQLParser.KW_ON, i);
		}
	}
	public KW_EXTENSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public opt_no(): Opt_noContext | undefined {
		return this.tryGetRuleContext(0, Opt_noContext);
	}
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext | undefined {
		return this.tryGetRuleContext(0, View_nameContext);
	}
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterobjectdependsstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterobjectdependsstmt) {
			listener.enterAlterobjectdependsstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterobjectdependsstmt) {
			listener.exitAlterobjectdependsstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterobjectdependsstmt) {
			return visitor.visitAlterobjectdependsstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_noContext extends ParserRuleContext {
	public KW_NO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_no; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_no) {
			listener.enterOpt_no(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_no) {
			listener.exitOpt_no(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_no) {
			return visitor.visitOpt_no(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterobjectschemastmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public KW_SCHEMA(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name_create(): Schema_name_createContext {
		return this.getRuleContext(0, Schema_name_createContext);
	}
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes(): Operator_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public relation_expr(): Relation_exprContext | undefined {
		return this.tryGetRuleContext(0, Relation_exprContext);
	}
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name(): View_nameContext | undefined {
		return this.tryGetRuleContext(0, View_nameContext);
	}
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterobjectschemastmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterobjectschemastmt) {
			listener.enterAlterobjectschemastmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterobjectschemastmt) {
			listener.exitAlterobjectschemastmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterobjectschemastmt) {
			return visitor.visitAlterobjectschemastmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlteroperatorstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_OPERATOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes(): Operator_with_argtypesContext {
		return this.getRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public operator_def_list(): Operator_def_listContext {
		return this.getRuleContext(0, Operator_def_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alteroperatorstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlteroperatorstmt) {
			listener.enterAlteroperatorstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlteroperatorstmt) {
			listener.exitAlteroperatorstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlteroperatorstmt) {
			return visitor.visitAlteroperatorstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Operator_def_listContext extends ParserRuleContext {
	public operator_def_elem(): Operator_def_elemContext[];
	public operator_def_elem(i: number): Operator_def_elemContext;
	public operator_def_elem(i?: number): Operator_def_elemContext | Operator_def_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Operator_def_elemContext);
		} else {
			return this.getRuleContext(i, Operator_def_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_operator_def_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOperator_def_list) {
			listener.enterOperator_def_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOperator_def_list) {
			listener.exitOperator_def_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOperator_def_list) {
			return visitor.visitOperator_def_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Operator_def_elemContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	public EQUAL(): TerminalNode { return this.getToken(PostgreSQLParser.EQUAL, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NONE, 0); }
	public operator_def_arg(): Operator_def_argContext | undefined {
		return this.tryGetRuleContext(0, Operator_def_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_operator_def_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOperator_def_elem) {
			listener.enterOperator_def_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOperator_def_elem) {
			listener.exitOperator_def_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOperator_def_elem) {
			return visitor.visitOperator_def_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Operator_def_argContext extends ParserRuleContext {
	public func_type(): Func_typeContext | undefined {
		return this.tryGetRuleContext(0, Func_typeContext);
	}
	public reserved_keyword(): Reserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Reserved_keywordContext);
	}
	public qual_all_op(): Qual_all_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_all_opContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_operator_def_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOperator_def_arg) {
			listener.enterOperator_def_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOperator_def_arg) {
			listener.exitOperator_def_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOperator_def_arg) {
			return visitor.visitOperator_def_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltertypestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TYPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TYPE, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public operator_def_list(): Operator_def_listContext {
		return this.getRuleContext(0, Operator_def_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altertypestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltertypestmt) {
			listener.enterAltertypestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltertypestmt) {
			listener.exitAltertypestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltertypestmt) {
			return visitor.visitAltertypestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterownerstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public aggregate_with_argtypes(): Aggregate_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Aggregate_with_argtypesContext);
	}
	public KW_OWNER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext | undefined {
		return this.tryGetRuleContext(0, Database_nameContext);
	}
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public function_with_argtypes(): Function_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Function_with_argtypesContext);
	}
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public opt_procedural(): Opt_proceduralContext | undefined {
		return this.tryGetRuleContext(0, Opt_proceduralContext);
	}
	public KW_LARGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LARGE, 0); }
	public KW_OBJECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OBJECT, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public operator_with_argtypes(): Operator_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Operator_with_argtypesContext);
	}
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public procedure_with_argtypes(): Procedure_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Procedure_with_argtypesContext);
	}
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public routine_with_argtypes(): Routine_with_argtypesContext | undefined {
		return this.tryGetRuleContext(0, Routine_with_argtypesContext);
	}
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name(): Tablespace_nameContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_nameContext);
	}
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public KW_SUBSCRIPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterownerstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterownerstmt) {
			listener.enterAlterownerstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterownerstmt) {
			listener.exitAlterownerstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterownerstmt) {
			return visitor.visitAlterownerstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatepublicationstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_PUBLICATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public opt_publication_for_tables(): Opt_publication_for_tablesContext | undefined {
		return this.tryGetRuleContext(0, Opt_publication_for_tablesContext);
	}
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createpublicationstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatepublicationstmt) {
			listener.enterCreatepublicationstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatepublicationstmt) {
			listener.exitCreatepublicationstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatepublicationstmt) {
			return visitor.visitCreatepublicationstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_publication_for_tablesContext extends ParserRuleContext {
	public publication_for_tables(): Publication_for_tablesContext {
		return this.getRuleContext(0, Publication_for_tablesContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_publication_for_tables; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_publication_for_tables) {
			listener.enterOpt_publication_for_tables(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_publication_for_tables) {
			listener.exitOpt_publication_for_tables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_publication_for_tables) {
			return visitor.visitOpt_publication_for_tables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Publication_for_tablesContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public relation_expr_list(): Relation_expr_listContext | undefined {
		return this.tryGetRuleContext(0, Relation_expr_listContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_publication_for_tables; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPublication_for_tables) {
			listener.enterPublication_for_tables(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPublication_for_tables) {
			listener.exitPublication_for_tables(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPublication_for_tables) {
			return visitor.visitPublication_for_tables(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterpublicationstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_PUBLICATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public definition(): DefinitionContext | undefined {
		return this.tryGetRuleContext(0, DefinitionContext);
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public publication_relation_expr_list(): Publication_relation_expr_listContext | undefined {
		return this.tryGetRuleContext(0, Publication_relation_expr_listContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RENAME, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterpublicationstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterpublicationstmt) {
			listener.enterAlterpublicationstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterpublicationstmt) {
			listener.exitAlterpublicationstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterpublicationstmt) {
			return visitor.visitAlterpublicationstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatesubscriptionstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_SUBSCRIPTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_CONNECTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONNECTION, 0); }
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	public KW_PUBLICATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public publication_name_list(): Publication_name_listContext {
		return this.getRuleContext(0, Publication_name_listContext);
	}
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createsubscriptionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatesubscriptionstmt) {
			listener.enterCreatesubscriptionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatesubscriptionstmt) {
			listener.exitCreatesubscriptionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatesubscriptionstmt) {
			return visitor.visitCreatesubscriptionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Publication_name_listContext extends ParserRuleContext {
	public publication_name_item(): Publication_name_itemContext[];
	public publication_name_item(i: number): Publication_name_itemContext;
	public publication_name_item(i?: number): Publication_name_itemContext | Publication_name_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Publication_name_itemContext);
		} else {
			return this.getRuleContext(i, Publication_name_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_publication_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPublication_name_list) {
			listener.enterPublication_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPublication_name_list) {
			listener.exitPublication_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPublication_name_list) {
			return visitor.visitPublication_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Publication_name_itemContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_publication_name_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPublication_name_item) {
			listener.enterPublication_name_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPublication_name_item) {
			listener.exitPublication_name_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPublication_name_item) {
			return visitor.visitPublication_name_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltersubscriptionstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_SUBSCRIPTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public definition(): DefinitionContext | undefined {
		return this.tryGetRuleContext(0, DefinitionContext);
	}
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONNECTION, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_REFRESH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFRESH, 0); }
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	public publication_name_list(): Publication_name_listContext | undefined {
		return this.tryGetRuleContext(0, Publication_name_listContext);
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENABLE, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISABLE, 0); }
	public KW_SKIP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SKIP, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public old_aggr_elem(): Old_aggr_elemContext | undefined {
		return this.tryGetRuleContext(0, Old_aggr_elemContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public rolespec(): RolespecContext | undefined {
		return this.tryGetRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altersubscriptionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltersubscriptionstmt) {
			listener.enterAltersubscriptionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltersubscriptionstmt) {
			listener.exitAltersubscriptionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltersubscriptionstmt) {
			return visitor.visitAltersubscriptionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RulestmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_RULE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RULE, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public event(): EventContext {
		return this.getRuleContext(0, EventContext);
	}
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public qualified_name(): Qualified_nameContext {
		return this.getRuleContext(0, Qualified_nameContext);
	}
	public KW_DO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DO, 0); }
	public ruleactionlist(): RuleactionlistContext {
		return this.getRuleContext(0, RuleactionlistContext);
	}
	public opt_or_replace(): Opt_or_replaceContext | undefined {
		return this.tryGetRuleContext(0, Opt_or_replaceContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public opt_instead(): Opt_insteadContext | undefined {
		return this.tryGetRuleContext(0, Opt_insteadContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rulestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRulestmt) {
			listener.enterRulestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRulestmt) {
			listener.exitRulestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRulestmt) {
			return visitor.visitRulestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RuleactionlistContext extends ParserRuleContext {
	public KW_NOTHING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTHING, 0); }
	public ruleactionstmt(): RuleactionstmtContext | undefined {
		return this.tryGetRuleContext(0, RuleactionstmtContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public ruleactionmulti(): RuleactionmultiContext | undefined {
		return this.tryGetRuleContext(0, RuleactionmultiContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_ruleactionlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRuleactionlist) {
			listener.enterRuleactionlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRuleactionlist) {
			listener.exitRuleactionlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRuleactionlist) {
			return visitor.visitRuleactionlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RuleactionmultiContext extends ParserRuleContext {
	public ruleactionstmtOrEmpty(): RuleactionstmtOrEmptyContext[];
	public ruleactionstmtOrEmpty(i: number): RuleactionstmtOrEmptyContext;
	public ruleactionstmtOrEmpty(i?: number): RuleactionstmtOrEmptyContext | RuleactionstmtOrEmptyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RuleactionstmtOrEmptyContext);
		} else {
			return this.getRuleContext(i, RuleactionstmtOrEmptyContext);
		}
	}
	public SEMI(): TerminalNode[];
	public SEMI(i: number): TerminalNode;
	public SEMI(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.SEMI);
		} else {
			return this.getToken(PostgreSQLParser.SEMI, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_ruleactionmulti; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRuleactionmulti) {
			listener.enterRuleactionmulti(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRuleactionmulti) {
			listener.exitRuleactionmulti(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRuleactionmulti) {
			return visitor.visitRuleactionmulti(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RuleactionstmtContext extends ParserRuleContext {
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public insertstmt(): InsertstmtContext | undefined {
		return this.tryGetRuleContext(0, InsertstmtContext);
	}
	public updatestmt(): UpdatestmtContext | undefined {
		return this.tryGetRuleContext(0, UpdatestmtContext);
	}
	public deletestmt(): DeletestmtContext | undefined {
		return this.tryGetRuleContext(0, DeletestmtContext);
	}
	public notifystmt(): NotifystmtContext | undefined {
		return this.tryGetRuleContext(0, NotifystmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_ruleactionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRuleactionstmt) {
			listener.enterRuleactionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRuleactionstmt) {
			listener.exitRuleactionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRuleactionstmt) {
			return visitor.visitRuleactionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RuleactionstmtOrEmptyContext extends ParserRuleContext {
	public ruleactionstmt(): RuleactionstmtContext {
		return this.getRuleContext(0, RuleactionstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_ruleactionstmtOrEmpty; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRuleactionstmtOrEmpty) {
			listener.enterRuleactionstmtOrEmpty(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRuleactionstmtOrEmpty) {
			listener.exitRuleactionstmtOrEmpty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRuleactionstmtOrEmpty) {
			return visitor.visitRuleactionstmtOrEmpty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EventContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_event; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEvent) {
			listener.enterEvent(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEvent) {
			listener.exitEvent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEvent) {
			return visitor.visitEvent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_insteadContext extends ParserRuleContext {
	public KW_INSTEAD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSTEAD, 0); }
	public KW_ALSO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALSO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_instead; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_instead) {
			listener.enterOpt_instead(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_instead) {
			listener.exitOpt_instead(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_instead) {
			return visitor.visitOpt_instead(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NotifystmtContext extends ParserRuleContext {
	public KW_NOTIFY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NOTIFY, 0); }
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public notify_payload(): Notify_payloadContext | undefined {
		return this.tryGetRuleContext(0, Notify_payloadContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_notifystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNotifystmt) {
			listener.enterNotifystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNotifystmt) {
			listener.exitNotifystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNotifystmt) {
			return visitor.visitNotifystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Notify_payloadContext extends ParserRuleContext {
	public COMMA(): TerminalNode { return this.getToken(PostgreSQLParser.COMMA, 0); }
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_notify_payload; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNotify_payload) {
			listener.enterNotify_payload(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNotify_payload) {
			listener.exitNotify_payload(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNotify_payload) {
			return visitor.visitNotify_payload(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListenstmtContext extends ParserRuleContext {
	public KW_LISTEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LISTEN, 0); }
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_listenstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterListenstmt) {
			listener.enterListenstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitListenstmt) {
			listener.exitListenstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitListenstmt) {
			return visitor.visitListenstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnlistenstmtContext extends ParserRuleContext {
	public KW_UNLISTEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UNLISTEN, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_unlistenstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUnlistenstmt) {
			listener.enterUnlistenstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUnlistenstmt) {
			listener.exitUnlistenstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUnlistenstmt) {
			return visitor.visitUnlistenstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionstmtContext extends ParserRuleContext {
	public KW_ABORT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABORT, 0); }
	public opt_transaction(): Opt_transactionContext | undefined {
		return this.tryGetRuleContext(0, Opt_transactionContext);
	}
	public opt_transaction_chain(): Opt_transaction_chainContext | undefined {
		return this.tryGetRuleContext(0, Opt_transaction_chainContext);
	}
	public KW_BEGIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BEGIN, 0); }
	public transaction_mode_list_or_empty(): Transaction_mode_list_or_emptyContext | undefined {
		return this.tryGetRuleContext(0, Transaction_mode_list_or_emptyContext);
	}
	public KW_START(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_START, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public KW_COMMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMIT, 0); }
	public KW_END(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_END, 0); }
	public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLLBACK, 0); }
	public KW_SAVEPOINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SAVEPOINT, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public KW_RELEASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELEASE, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_PREPARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PREPARE, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public KW_PREPARED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PREPARED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transactionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransactionstmt) {
			listener.enterTransactionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransactionstmt) {
			listener.exitTransactionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransactionstmt) {
			return visitor.visitTransactionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_transactionContext extends ParserRuleContext {
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WORK, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_transaction; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_transaction) {
			listener.enterOpt_transaction(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_transaction) {
			listener.exitOpt_transaction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_transaction) {
			return visitor.visitOpt_transaction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Transaction_mode_itemContext extends ParserRuleContext {
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISOLATION, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEVEL, 0); }
	public iso_level(): Iso_levelContext | undefined {
		return this.tryGetRuleContext(0, Iso_levelContext);
	}
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_READ, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRITE, 0); }
	public KW_DEFERRABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRABLE, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transaction_mode_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransaction_mode_item) {
			listener.enterTransaction_mode_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransaction_mode_item) {
			listener.exitTransaction_mode_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransaction_mode_item) {
			return visitor.visitTransaction_mode_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Transaction_mode_listContext extends ParserRuleContext {
	public transaction_mode_item(): Transaction_mode_itemContext[];
	public transaction_mode_item(i: number): Transaction_mode_itemContext;
	public transaction_mode_item(i?: number): Transaction_mode_itemContext | Transaction_mode_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Transaction_mode_itemContext);
		} else {
			return this.getRuleContext(i, Transaction_mode_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transaction_mode_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransaction_mode_list) {
			listener.enterTransaction_mode_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransaction_mode_list) {
			listener.exitTransaction_mode_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransaction_mode_list) {
			return visitor.visitTransaction_mode_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Transaction_mode_list_or_emptyContext extends ParserRuleContext {
	public transaction_mode_list(): Transaction_mode_listContext {
		return this.getRuleContext(0, Transaction_mode_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_transaction_mode_list_or_empty; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTransaction_mode_list_or_empty) {
			listener.enterTransaction_mode_list_or_empty(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTransaction_mode_list_or_empty) {
			listener.exitTransaction_mode_list_or_empty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTransaction_mode_list_or_empty) {
			return visitor.visitTransaction_mode_list_or_empty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_transaction_chainContext extends ParserRuleContext {
	public KW_AND(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AND, 0); }
	public KW_CHAIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHAIN, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_transaction_chain; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_transaction_chain) {
			listener.enterOpt_transaction_chain(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_transaction_chain) {
			listener.exitOpt_transaction_chain(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_transaction_chain) {
			return visitor.visitOpt_transaction_chain(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ViewstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public selectstmt(): SelectstmtContext {
		return this.getRuleContext(0, SelectstmtContext);
	}
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public view_name_create(): View_name_createContext | undefined {
		return this.tryGetRuleContext(0, View_name_createContext);
	}
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RECURSIVE, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OR, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLACE, 0); }
	public opttemp(): OpttempContext | undefined {
		return this.tryGetRuleContext(0, OpttempContext);
	}
	public opt_check_option(): Opt_check_optionContext | undefined {
		return this.tryGetRuleContext(0, Opt_check_optionContext);
	}
	public opt_column_list(): Opt_column_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_column_listContext);
	}
	public opt_reloptions(): Opt_reloptionsContext | undefined {
		return this.tryGetRuleContext(0, Opt_reloptionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_viewstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterViewstmt) {
			listener.enterViewstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitViewstmt) {
			listener.exitViewstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitViewstmt) {
			return visitor.visitViewstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_check_optionContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_CHECK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHECK, 0); }
	public KW_OPTION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_CASCADED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADED, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_check_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_check_option) {
			listener.enterOpt_check_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_check_option) {
			listener.exitOpt_check_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_check_option) {
			return visitor.visitOpt_check_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadstmtContext extends ParserRuleContext {
	public KW_LOAD(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LOAD, 0); }
	public file_name(): File_nameContext {
		return this.getRuleContext(0, File_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_loadstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLoadstmt) {
			listener.enterLoadstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLoadstmt) {
			listener.exitLoadstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLoadstmt) {
			return visitor.visitLoadstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatedbstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_DATABASE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name_create(): Database_name_createContext {
		return this.getRuleContext(0, Database_name_createContext);
	}
	public opt_with(): Opt_withContext | undefined {
		return this.tryGetRuleContext(0, Opt_withContext);
	}
	public createdb_opt_list(): Createdb_opt_listContext | undefined {
		return this.tryGetRuleContext(0, Createdb_opt_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdbstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedbstmt) {
			listener.enterCreatedbstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedbstmt) {
			listener.exitCreatedbstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedbstmt) {
			return visitor.visitCreatedbstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createdb_opt_listContext extends ParserRuleContext {
	public createdb_opt_items(): Createdb_opt_itemsContext {
		return this.getRuleContext(0, Createdb_opt_itemsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdb_opt_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedb_opt_list) {
			listener.enterCreatedb_opt_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedb_opt_list) {
			listener.exitCreatedb_opt_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedb_opt_list) {
			return visitor.visitCreatedb_opt_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createdb_opt_itemsContext extends ParserRuleContext {
	public createdb_opt_item(): Createdb_opt_itemContext[];
	public createdb_opt_item(i: number): Createdb_opt_itemContext;
	public createdb_opt_item(i?: number): Createdb_opt_itemContext | Createdb_opt_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Createdb_opt_itemContext);
		} else {
			return this.getRuleContext(i, Createdb_opt_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdb_opt_items; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedb_opt_items) {
			listener.enterCreatedb_opt_items(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedb_opt_items) {
			listener.exitCreatedb_opt_items(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedb_opt_items) {
			return visitor.visitCreatedb_opt_items(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createdb_opt_itemContext extends ParserRuleContext {
	public createdb_opt_name(): Createdb_opt_nameContext {
		return this.getRuleContext(0, Createdb_opt_nameContext);
	}
	public signediconst(): SignediconstContext | undefined {
		return this.tryGetRuleContext(0, SignediconstContext);
	}
	public opt_boolean_or_string(): Opt_boolean_or_stringContext | undefined {
		return this.tryGetRuleContext(0, Opt_boolean_or_stringContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public opt_equal(): Opt_equalContext | undefined {
		return this.tryGetRuleContext(0, Opt_equalContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdb_opt_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedb_opt_item) {
			listener.enterCreatedb_opt_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedb_opt_item) {
			listener.exitCreatedb_opt_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedb_opt_item) {
			return visitor.visitCreatedb_opt_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Createdb_opt_nameContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONNECTION, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIMIT, 0); }
	public KW_ENCODING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENCODING, 0); }
	public KW_LOCATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCATION, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdb_opt_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedb_opt_name) {
			listener.enterCreatedb_opt_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedb_opt_name) {
			listener.exitCreatedb_opt_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedb_opt_name) {
			return visitor.visitCreatedb_opt_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_equalContext extends ParserRuleContext {
	public EQUAL(): TerminalNode { return this.getToken(PostgreSQLParser.EQUAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_equal; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_equal) {
			listener.enterOpt_equal(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_equal) {
			listener.exitOpt_equal(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_equal) {
			return visitor.visitOpt_equal(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterdatabasestmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_DATABASE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext {
		return this.getRuleContext(0, Database_nameContext);
	}
	public createdb_opt_list(): Createdb_opt_listContext | undefined {
		return this.tryGetRuleContext(0, Createdb_opt_listContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public tablespace_name_create(): Tablespace_name_createContext | undefined {
		return this.tryGetRuleContext(0, Tablespace_name_createContext);
	}
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterdatabasestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterdatabasestmt) {
			listener.enterAlterdatabasestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterdatabasestmt) {
			listener.exitAlterdatabasestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterdatabasestmt) {
			return visitor.visitAlterdatabasestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterdatabasesetstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_DATABASE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DATABASE, 0); }
	public database_name(): Database_nameContext {
		return this.getRuleContext(0, Database_nameContext);
	}
	public setresetclause(): SetresetclauseContext | undefined {
		return this.tryGetRuleContext(0, SetresetclauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterdatabasesetstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterdatabasesetstmt) {
			listener.enterAlterdatabasesetstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterdatabasesetstmt) {
			listener.exitAlterdatabasesetstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterdatabasesetstmt) {
			return visitor.visitAlterdatabasesetstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Drop_option_listContext extends ParserRuleContext {
	public drop_option(): Drop_optionContext[];
	public drop_option(i: number): Drop_optionContext;
	public drop_option(i?: number): Drop_optionContext | Drop_optionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Drop_optionContext);
		} else {
			return this.getRuleContext(i, Drop_optionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_drop_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDrop_option_list) {
			listener.enterDrop_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDrop_option_list) {
			listener.exitDrop_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDrop_option_list) {
			return visitor.visitDrop_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Drop_optionContext extends ParserRuleContext {
	public KW_FORCE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FORCE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_drop_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDrop_option) {
			listener.enterDrop_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDrop_option) {
			listener.exitDrop_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDrop_option) {
			return visitor.visitDrop_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltercollationstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_COLLATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COLLATION, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public KW_REFRESH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REFRESH, 0); }
	public KW_VERSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VERSION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altercollationstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltercollationstmt) {
			listener.enterAltercollationstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltercollationstmt) {
			listener.exitAltercollationstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltercollationstmt) {
			return visitor.visitAltercollationstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltersystemstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_SYSTEM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SYSTEM, 0); }
	public generic_set(): Generic_setContext {
		return this.getRuleContext(0, Generic_setContext);
	}
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altersystemstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltersystemstmt) {
			listener.enterAltersystemstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltersystemstmt) {
			listener.exitAltersystemstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltersystemstmt) {
			return visitor.visitAltersystemstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatedomainstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_DOMAIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public colquallist(): ColquallistContext {
		return this.getRuleContext(0, ColquallistContext);
	}
	public opt_as(): Opt_asContext | undefined {
		return this.tryGetRuleContext(0, Opt_asContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createdomainstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreatedomainstmt) {
			listener.enterCreatedomainstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreatedomainstmt) {
			listener.exitCreatedomainstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreatedomainstmt) {
			return visitor.visitCreatedomainstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterdomainstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_DOMAIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public alter_column_default(): Alter_column_defaultContext | undefined {
		return this.tryGetRuleContext(0, Alter_column_defaultContext);
	}
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public tableconstraint(): TableconstraintContext | undefined {
		return this.tryGetRuleContext(0, TableconstraintContext);
	}
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALIDATE, 0); }
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	public opt_drop_behavior(): Opt_drop_behaviorContext | undefined {
		return this.tryGetRuleContext(0, Opt_drop_behaviorContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alterdomainstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlterdomainstmt) {
			listener.enterAlterdomainstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlterdomainstmt) {
			listener.exitAlterdomainstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlterdomainstmt) {
			return visitor.visitAlterdomainstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_asContext extends ParserRuleContext {
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_as; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_as) {
			listener.enterOpt_as(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_as) {
			listener.exitOpt_as(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_as) {
			return visitor.visitOpt_as(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltertsdictionarystmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_TEXT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_DICTIONARY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public any_name(): Any_nameContext {
		return this.getRuleContext(0, Any_nameContext);
	}
	public definition(): DefinitionContext {
		return this.getRuleContext(0, DefinitionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altertsdictionarystmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltertsdictionarystmt) {
			listener.enterAltertsdictionarystmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltertsdictionarystmt) {
			listener.exitAltertsdictionarystmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltertsdictionarystmt) {
			return visitor.visitAltertsdictionarystmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AltertsconfigurationstmtContext extends ParserRuleContext {
	public KW_ALTER(): TerminalNode[];
	public KW_ALTER(i: number): TerminalNode;
	public KW_ALTER(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_ALTER);
		} else {
			return this.getToken(PostgreSQLParser.KW_ALTER, i);
		}
	}
	public KW_TEXT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_SEARCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_CONFIGURATION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public any_name(): Any_nameContext[];
	public any_name(i: number): Any_nameContext;
	public any_name(i?: number): Any_nameContext | Any_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Any_nameContext);
		} else {
			return this.getRuleContext(i, Any_nameContext);
		}
	}
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_MAPPING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MAPPING, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public name_list(): Name_listContext | undefined {
		return this.tryGetRuleContext(0, Name_listContext);
	}
	public any_with(): Any_withContext | undefined {
		return this.tryGetRuleContext(0, Any_withContext);
	}
	public any_name_list(): Any_name_listContext | undefined {
		return this.tryGetRuleContext(0, Any_name_listContext);
	}
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLACE, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public opt_if_exists(): Opt_if_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_existsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_altertsconfigurationstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAltertsconfigurationstmt) {
			listener.enterAltertsconfigurationstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAltertsconfigurationstmt) {
			listener.exitAltertsconfigurationstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAltertsconfigurationstmt) {
			return visitor.visitAltertsconfigurationstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Any_withContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_any_with; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAny_with) {
			listener.enterAny_with(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAny_with) {
			listener.exitAny_with(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAny_with) {
			return visitor.visitAny_with(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateconversionstmtContext extends ParserRuleContext {
	public KW_CREATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_CONVERSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public any_name(): Any_nameContext[];
	public any_name(i: number): Any_nameContext;
	public any_name(i?: number): Any_nameContext | Any_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Any_nameContext);
		} else {
			return this.getRuleContext(i, Any_nameContext);
		}
	}
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public sconst(): SconstContext[];
	public sconst(i: number): SconstContext;
	public sconst(i?: number): SconstContext | SconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SconstContext);
		} else {
			return this.getRuleContext(i, SconstContext);
		}
	}
	public KW_TO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TO, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public opt_default(): Opt_defaultContext | undefined {
		return this.tryGetRuleContext(0, Opt_defaultContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_createconversionstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCreateconversionstmt) {
			listener.enterCreateconversionstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCreateconversionstmt) {
			listener.exitCreateconversionstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCreateconversionstmt) {
			return visitor.visitCreateconversionstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ClusterstmtContext extends ParserRuleContext {
	public KW_CLUSTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CLUSTER, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public opt_verbose(): Opt_verboseContext | undefined {
		return this.tryGetRuleContext(0, Opt_verboseContext);
	}
	public cluster_index_specification(): Cluster_index_specificationContext | undefined {
		return this.tryGetRuleContext(0, Cluster_index_specificationContext);
	}
	public opt_verbose_list(): Opt_verbose_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_verbose_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_clusterstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterClusterstmt) {
			listener.enterClusterstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitClusterstmt) {
			listener.exitClusterstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitClusterstmt) {
			return visitor.visitClusterstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_verbose_listContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public opt_verbose(): Opt_verboseContext[];
	public opt_verbose(i: number): Opt_verboseContext;
	public opt_verbose(i?: number): Opt_verboseContext | Opt_verboseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opt_verboseContext);
		} else {
			return this.getRuleContext(i, Opt_verboseContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_verbose_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_verbose_list) {
			listener.enterOpt_verbose_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_verbose_list) {
			listener.exitOpt_verbose_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_verbose_list) {
			return visitor.visitOpt_verbose_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cluster_index_specificationContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cluster_index_specification; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCluster_index_specification) {
			listener.enterCluster_index_specification(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCluster_index_specification) {
			listener.exitCluster_index_specification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCluster_index_specification) {
			return visitor.visitCluster_index_specification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VacuumstmtContext extends ParserRuleContext {
	public KW_VACUUM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VACUUM, 0); }
	public opt_full(): Opt_fullContext | undefined {
		return this.tryGetRuleContext(0, Opt_fullContext);
	}
	public opt_freeze(): Opt_freezeContext | undefined {
		return this.tryGetRuleContext(0, Opt_freezeContext);
	}
	public opt_verbose(): Opt_verboseContext | undefined {
		return this.tryGetRuleContext(0, Opt_verboseContext);
	}
	public opt_analyze(): Opt_analyzeContext | undefined {
		return this.tryGetRuleContext(0, Opt_analyzeContext);
	}
	public opt_vacuum_relation_list(): Opt_vacuum_relation_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_vacuum_relation_listContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public vac_analyze_option_list(): Vac_analyze_option_listContext | undefined {
		return this.tryGetRuleContext(0, Vac_analyze_option_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vacuumstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVacuumstmt) {
			listener.enterVacuumstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVacuumstmt) {
			listener.exitVacuumstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVacuumstmt) {
			return visitor.visitVacuumstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnalyzestmtContext extends ParserRuleContext {
	public analyze_keyword(): Analyze_keywordContext {
		return this.getRuleContext(0, Analyze_keywordContext);
	}
	public opt_verbose(): Opt_verboseContext | undefined {
		return this.tryGetRuleContext(0, Opt_verboseContext);
	}
	public opt_vacuum_relation_list(): Opt_vacuum_relation_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_vacuum_relation_listContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public analyze_options_list(): Analyze_options_listContext | undefined {
		return this.tryGetRuleContext(0, Analyze_options_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_analyzestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAnalyzestmt) {
			listener.enterAnalyzestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAnalyzestmt) {
			listener.exitAnalyzestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAnalyzestmt) {
			return visitor.visitAnalyzestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vac_analyze_option_listContext extends ParserRuleContext {
	public vac_analyze_option_elem(): Vac_analyze_option_elemContext[];
	public vac_analyze_option_elem(i: number): Vac_analyze_option_elemContext;
	public vac_analyze_option_elem(i?: number): Vac_analyze_option_elemContext | Vac_analyze_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Vac_analyze_option_elemContext);
		} else {
			return this.getRuleContext(i, Vac_analyze_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vac_analyze_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVac_analyze_option_list) {
			listener.enterVac_analyze_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVac_analyze_option_list) {
			listener.exitVac_analyze_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVac_analyze_option_list) {
			return visitor.visitVac_analyze_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Analyze_keywordContext extends ParserRuleContext {
	public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANALYZE, 0); }
	public KW_ANALYSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANALYSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_analyze_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAnalyze_keyword) {
			listener.enterAnalyze_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAnalyze_keyword) {
			listener.exitAnalyze_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAnalyze_keyword) {
			return visitor.visitAnalyze_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vac_analyze_option_elemContext extends ParserRuleContext {
	public vac_analyze_option_name(): Vac_analyze_option_nameContext {
		return this.getRuleContext(0, Vac_analyze_option_nameContext);
	}
	public vac_analyze_option_arg(): Vac_analyze_option_argContext | undefined {
		return this.tryGetRuleContext(0, Vac_analyze_option_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vac_analyze_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVac_analyze_option_elem) {
			listener.enterVac_analyze_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVac_analyze_option_elem) {
			listener.exitVac_analyze_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVac_analyze_option_elem) {
			return visitor.visitVac_analyze_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vac_analyze_option_nameContext extends ParserRuleContext {
	public nonreservedword(): NonreservedwordContext | undefined {
		return this.tryGetRuleContext(0, NonreservedwordContext);
	}
	public analyze_keyword(): Analyze_keywordContext | undefined {
		return this.tryGetRuleContext(0, Analyze_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vac_analyze_option_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVac_analyze_option_name) {
			listener.enterVac_analyze_option_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVac_analyze_option_name) {
			listener.exitVac_analyze_option_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVac_analyze_option_name) {
			return visitor.visitVac_analyze_option_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vac_analyze_option_argContext extends ParserRuleContext {
	public opt_boolean_or_string(): Opt_boolean_or_stringContext | undefined {
		return this.tryGetRuleContext(0, Opt_boolean_or_stringContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vac_analyze_option_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVac_analyze_option_arg) {
			listener.enterVac_analyze_option_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVac_analyze_option_arg) {
			listener.exitVac_analyze_option_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVac_analyze_option_arg) {
			return visitor.visitVac_analyze_option_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_analyzeContext extends ParserRuleContext {
	public analyze_keyword(): Analyze_keywordContext {
		return this.getRuleContext(0, Analyze_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_analyze; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_analyze) {
			listener.enterOpt_analyze(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_analyze) {
			listener.exitOpt_analyze(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_analyze) {
			return visitor.visitOpt_analyze(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Analyze_options_listContext extends ParserRuleContext {
	public analyze_option_elem(): Analyze_option_elemContext[];
	public analyze_option_elem(i: number): Analyze_option_elemContext;
	public analyze_option_elem(i?: number): Analyze_option_elemContext | Analyze_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Analyze_option_elemContext);
		} else {
			return this.getRuleContext(i, Analyze_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_analyze_options_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAnalyze_options_list) {
			listener.enterAnalyze_options_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAnalyze_options_list) {
			listener.exitAnalyze_options_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAnalyze_options_list) {
			return visitor.visitAnalyze_options_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Analyze_option_elemContext extends ParserRuleContext {
	public opt_verbose(): Opt_verboseContext | undefined {
		return this.tryGetRuleContext(0, Opt_verboseContext);
	}
	public opt_skiplock(): Opt_skiplockContext | undefined {
		return this.tryGetRuleContext(0, Opt_skiplockContext);
	}
	public opt_buffer_usage_limit(): Opt_buffer_usage_limitContext | undefined {
		return this.tryGetRuleContext(0, Opt_buffer_usage_limitContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_analyze_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAnalyze_option_elem) {
			listener.enterAnalyze_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAnalyze_option_elem) {
			listener.exitAnalyze_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAnalyze_option_elem) {
			return visitor.visitAnalyze_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_verboseContext extends ParserRuleContext {
	public KW_VERBOSE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VERBOSE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_verbose; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_verbose) {
			listener.enterOpt_verbose(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_verbose) {
			listener.exitOpt_verbose(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_verbose) {
			return visitor.visitOpt_verbose(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_skiplockContext extends ParserRuleContext {
	public KW_SKIP_LOCKED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SKIP_LOCKED, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_skiplock; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_skiplock) {
			listener.enterOpt_skiplock(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_skiplock) {
			listener.exitOpt_skiplock(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_skiplock) {
			return visitor.visitOpt_skiplock(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_buffer_usage_limitContext extends ParserRuleContext {
	public KW_BUFFER_USAGE_LIMIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BUFFER_USAGE_LIMIT, 0); }
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_buffer_usage_limit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_buffer_usage_limit) {
			listener.enterOpt_buffer_usage_limit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_buffer_usage_limit) {
			listener.exitOpt_buffer_usage_limit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_buffer_usage_limit) {
			return visitor.visitOpt_buffer_usage_limit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_fullContext extends ParserRuleContext {
	public KW_FULL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_full; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_full) {
			listener.enterOpt_full(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_full) {
			listener.exitOpt_full(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_full) {
			return visitor.visitOpt_full(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_freezeContext extends ParserRuleContext {
	public KW_FREEZE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FREEZE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_freeze; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_freeze) {
			listener.enterOpt_freeze(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_freeze) {
			listener.exitOpt_freeze(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_freeze) {
			return visitor.visitOpt_freeze(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_name_listContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext {
		return this.getRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_name_list) {
			listener.enterOpt_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_name_list) {
			listener.exitOpt_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_name_list) {
			return visitor.visitOpt_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vacuum_relationContext extends ParserRuleContext {
	public table_name(): Table_nameContext {
		return this.getRuleContext(0, Table_nameContext);
	}
	public opt_name_list(): Opt_name_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_name_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vacuum_relation; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVacuum_relation) {
			listener.enterVacuum_relation(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVacuum_relation) {
			listener.exitVacuum_relation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVacuum_relation) {
			return visitor.visitVacuum_relation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Vacuum_relation_listContext extends ParserRuleContext {
	public vacuum_relation(): Vacuum_relationContext[];
	public vacuum_relation(i: number): Vacuum_relationContext;
	public vacuum_relation(i?: number): Vacuum_relationContext | Vacuum_relationContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Vacuum_relationContext);
		} else {
			return this.getRuleContext(i, Vacuum_relationContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_vacuum_relation_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterVacuum_relation_list) {
			listener.enterVacuum_relation_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitVacuum_relation_list) {
			listener.exitVacuum_relation_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitVacuum_relation_list) {
			return visitor.visitVacuum_relation_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_vacuum_relation_listContext extends ParserRuleContext {
	public vacuum_relation_list(): Vacuum_relation_listContext {
		return this.getRuleContext(0, Vacuum_relation_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_vacuum_relation_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_vacuum_relation_list) {
			listener.enterOpt_vacuum_relation_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_vacuum_relation_list) {
			listener.exitOpt_vacuum_relation_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_vacuum_relation_list) {
			return visitor.visitOpt_vacuum_relation_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExplainstmtContext extends ParserRuleContext {
	public KW_EXPLAIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXPLAIN, 0); }
	public explainablestmt(): ExplainablestmtContext {
		return this.getRuleContext(0, ExplainablestmtContext);
	}
	public analyze_keyword(): Analyze_keywordContext | undefined {
		return this.tryGetRuleContext(0, Analyze_keywordContext);
	}
	public opt_verbose(): Opt_verboseContext | undefined {
		return this.tryGetRuleContext(0, Opt_verboseContext);
	}
	public KW_VERBOSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VERBOSE, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public explain_option_list(): Explain_option_listContext | undefined {
		return this.tryGetRuleContext(0, Explain_option_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explainstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplainstmt) {
			listener.enterExplainstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplainstmt) {
			listener.exitExplainstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplainstmt) {
			return visitor.visitExplainstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExplainablestmtContext extends ParserRuleContext {
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public insertstmt(): InsertstmtContext | undefined {
		return this.tryGetRuleContext(0, InsertstmtContext);
	}
	public updatestmt(): UpdatestmtContext | undefined {
		return this.tryGetRuleContext(0, UpdatestmtContext);
	}
	public deletestmt(): DeletestmtContext | undefined {
		return this.tryGetRuleContext(0, DeletestmtContext);
	}
	public declarecursorstmt(): DeclarecursorstmtContext | undefined {
		return this.tryGetRuleContext(0, DeclarecursorstmtContext);
	}
	public createasstmt(): CreateasstmtContext | undefined {
		return this.tryGetRuleContext(0, CreateasstmtContext);
	}
	public creatematviewstmt(): CreatematviewstmtContext | undefined {
		return this.tryGetRuleContext(0, CreatematviewstmtContext);
	}
	public refreshmatviewstmt(): RefreshmatviewstmtContext | undefined {
		return this.tryGetRuleContext(0, RefreshmatviewstmtContext);
	}
	public executestmt(): ExecutestmtContext | undefined {
		return this.tryGetRuleContext(0, ExecutestmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explainablestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplainablestmt) {
			listener.enterExplainablestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplainablestmt) {
			listener.exitExplainablestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplainablestmt) {
			return visitor.visitExplainablestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Explain_option_listContext extends ParserRuleContext {
	public explain_option_elem(): Explain_option_elemContext[];
	public explain_option_elem(i: number): Explain_option_elemContext;
	public explain_option_elem(i?: number): Explain_option_elemContext | Explain_option_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Explain_option_elemContext);
		} else {
			return this.getRuleContext(i, Explain_option_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explain_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplain_option_list) {
			listener.enterExplain_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplain_option_list) {
			listener.exitExplain_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplain_option_list) {
			return visitor.visitExplain_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Explain_option_elemContext extends ParserRuleContext {
	public explain_option_name(): Explain_option_nameContext {
		return this.getRuleContext(0, Explain_option_nameContext);
	}
	public explain_option_arg(): Explain_option_argContext | undefined {
		return this.tryGetRuleContext(0, Explain_option_argContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explain_option_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplain_option_elem) {
			listener.enterExplain_option_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplain_option_elem) {
			listener.exitExplain_option_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplain_option_elem) {
			return visitor.visitExplain_option_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Explain_option_nameContext extends ParserRuleContext {
	public nonreservedword(): NonreservedwordContext | undefined {
		return this.tryGetRuleContext(0, NonreservedwordContext);
	}
	public analyze_keyword(): Analyze_keywordContext | undefined {
		return this.tryGetRuleContext(0, Analyze_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explain_option_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplain_option_name) {
			listener.enterExplain_option_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplain_option_name) {
			listener.exitExplain_option_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplain_option_name) {
			return visitor.visitExplain_option_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Explain_option_argContext extends ParserRuleContext {
	public opt_boolean_or_string(): Opt_boolean_or_stringContext | undefined {
		return this.tryGetRuleContext(0, Opt_boolean_or_stringContext);
	}
	public numericonly(): NumericonlyContext | undefined {
		return this.tryGetRuleContext(0, NumericonlyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explain_option_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplain_option_arg) {
			listener.enterExplain_option_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplain_option_arg) {
			listener.exitExplain_option_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplain_option_arg) {
			return visitor.visitExplain_option_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparestmtContext extends ParserRuleContext {
	public KW_PREPARE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PREPARE, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public preparablestmt(): PreparablestmtContext {
		return this.getRuleContext(0, PreparablestmtContext);
	}
	public prep_type_clause(): Prep_type_clauseContext | undefined {
		return this.tryGetRuleContext(0, Prep_type_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_preparestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPreparestmt) {
			listener.enterPreparestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPreparestmt) {
			listener.exitPreparestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPreparestmt) {
			return visitor.visitPreparestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Prep_type_clauseContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public type_list(): Type_listContext {
		return this.getRuleContext(0, Type_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_prep_type_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPrep_type_clause) {
			listener.enterPrep_type_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPrep_type_clause) {
			listener.exitPrep_type_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPrep_type_clause) {
			return visitor.visitPrep_type_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparablestmtContext extends ParserRuleContext {
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public insertstmt(): InsertstmtContext | undefined {
		return this.tryGetRuleContext(0, InsertstmtContext);
	}
	public updatestmt(): UpdatestmtContext | undefined {
		return this.tryGetRuleContext(0, UpdatestmtContext);
	}
	public deletestmt(): DeletestmtContext | undefined {
		return this.tryGetRuleContext(0, DeletestmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_preparablestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPreparablestmt) {
			listener.enterPreparablestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPreparablestmt) {
			listener.exitPreparablestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPreparablestmt) {
			return visitor.visitPreparablestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecutestmtContext extends ParserRuleContext {
	public KW_EXECUTE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public execute_param_clause(): Execute_param_clauseContext | undefined {
		return this.tryGetRuleContext(0, Execute_param_clauseContext);
	}
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public create_as_target(): Create_as_targetContext | undefined {
		return this.tryGetRuleContext(0, Create_as_targetContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public opttemp(): OpttempContext | undefined {
		return this.tryGetRuleContext(0, OpttempContext);
	}
	public opt_if_not_exists(): Opt_if_not_existsContext | undefined {
		return this.tryGetRuleContext(0, Opt_if_not_existsContext);
	}
	public opt_with_data(): Opt_with_dataContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_dataContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_executestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExecutestmt) {
			listener.enterExecutestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExecutestmt) {
			listener.exitExecutestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExecutestmt) {
			return visitor.visitExecutestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Execute_param_clauseContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_execute_param_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExecute_param_clause) {
			listener.enterExecute_param_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExecute_param_clause) {
			listener.exitExecute_param_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExecute_param_clause) {
			return visitor.visitExecute_param_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeallocatestmtContext extends ParserRuleContext {
	public KW_DEALLOCATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DEALLOCATE, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	public KW_PREPARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PREPARE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_deallocatestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDeallocatestmt) {
			listener.enterDeallocatestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDeallocatestmt) {
			listener.exitDeallocatestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDeallocatestmt) {
			return visitor.visitDeallocatestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertstmtContext extends ParserRuleContext {
	public KW_INSERT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public insert_target(): Insert_targetContext {
		return this.getRuleContext(0, Insert_targetContext);
	}
	public insert_rest(): Insert_restContext {
		return this.getRuleContext(0, Insert_restContext);
	}
	public opt_with_clause(): Opt_with_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_clauseContext);
	}
	public opt_on_conflict(): Opt_on_conflictContext | undefined {
		return this.tryGetRuleContext(0, Opt_on_conflictContext);
	}
	public returning_clause(): Returning_clauseContext | undefined {
		return this.tryGetRuleContext(0, Returning_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_insertstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInsertstmt) {
			listener.enterInsertstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInsertstmt) {
			listener.exitInsertstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInsertstmt) {
			return visitor.visitInsertstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Insert_targetContext extends ParserRuleContext {
	public table_name(): Table_nameContext {
		return this.getRuleContext(0, Table_nameContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_insert_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInsert_target) {
			listener.enterInsert_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInsert_target) {
			listener.exitInsert_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInsert_target) {
			return visitor.visitInsert_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Insert_restContext extends ParserRuleContext {
	public default_values_or_values(): Default_values_or_valuesContext | undefined {
		return this.tryGetRuleContext(0, Default_values_or_valuesContext);
	}
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public insert_column_list(): Insert_column_listContext | undefined {
		return this.tryGetRuleContext(0, Insert_column_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OVERRIDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERRIDING, 0); }
	public override_kind(): Override_kindContext | undefined {
		return this.tryGetRuleContext(0, Override_kindContext);
	}
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_insert_rest; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInsert_rest) {
			listener.enterInsert_rest(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInsert_rest) {
			listener.exitInsert_rest(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInsert_rest) {
			return visitor.visitInsert_rest(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Override_kindContext extends ParserRuleContext {
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSTEM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_override_kind; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOverride_kind) {
			listener.enterOverride_kind(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOverride_kind) {
			listener.exitOverride_kind(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOverride_kind) {
			return visitor.visitOverride_kind(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Insert_column_listContext extends ParserRuleContext {
	public insert_column_item(): Insert_column_itemContext[];
	public insert_column_item(i: number): Insert_column_itemContext;
	public insert_column_item(i?: number): Insert_column_itemContext | Insert_column_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Insert_column_itemContext);
		} else {
			return this.getRuleContext(i, Insert_column_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_insert_column_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInsert_column_list) {
			listener.enterInsert_column_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInsert_column_list) {
			listener.exitInsert_column_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInsert_column_list) {
			return visitor.visitInsert_column_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Insert_column_itemContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public opt_indirection(): Opt_indirectionContext {
		return this.getRuleContext(0, Opt_indirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_insert_column_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInsert_column_item) {
			listener.enterInsert_column_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInsert_column_item) {
			listener.exitInsert_column_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInsert_column_item) {
			return visitor.visitInsert_column_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_on_conflictContext extends ParserRuleContext {
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public KW_CONFLICT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CONFLICT, 0); }
	public KW_DO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DO, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public set_clause_list(): Set_clause_listContext | undefined {
		return this.tryGetRuleContext(0, Set_clause_listContext);
	}
	public KW_NOTHING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTHING, 0); }
	public opt_conf_expr(): Opt_conf_exprContext | undefined {
		return this.tryGetRuleContext(0, Opt_conf_exprContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_on_conflict; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_on_conflict) {
			listener.enterOpt_on_conflict(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_on_conflict) {
			listener.exitOpt_on_conflict(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_on_conflict) {
			return visitor.visitOpt_on_conflict(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_conf_exprContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public index_params(): Index_paramsContext | undefined {
		return this.tryGetRuleContext(0, Index_paramsContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public name(): NameContext | undefined {
		return this.tryGetRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_conf_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_conf_expr) {
			listener.enterOpt_conf_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_conf_expr) {
			listener.exitOpt_conf_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_conf_expr) {
			return visitor.visitOpt_conf_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Returning_clauseContext extends ParserRuleContext {
	public KW_RETURNING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RETURNING, 0); }
	public target_list(): Target_listContext {
		return this.getRuleContext(0, Target_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_returning_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReturning_clause) {
			listener.enterReturning_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReturning_clause) {
			listener.exitReturning_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReturning_clause) {
			return visitor.visitReturning_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeletestmtContext extends ParserRuleContext {
	public KW_DELETE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public relation_expr_opt_alias(): Relation_expr_opt_aliasContext {
		return this.getRuleContext(0, Relation_expr_opt_aliasContext);
	}
	public opt_with_clause(): Opt_with_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_clauseContext);
	}
	public using_clause(): Using_clauseContext | undefined {
		return this.tryGetRuleContext(0, Using_clauseContext);
	}
	public where_or_current_clause(): Where_or_current_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_or_current_clauseContext);
	}
	public returning_clause(): Returning_clauseContext | undefined {
		return this.tryGetRuleContext(0, Returning_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_deletestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDeletestmt) {
			listener.enterDeletestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDeletestmt) {
			listener.exitDeletestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDeletestmt) {
			return visitor.visitDeletestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Using_clauseContext extends ParserRuleContext {
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public from_list(): From_listContext {
		return this.getRuleContext(0, From_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_using_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUsing_clause) {
			listener.enterUsing_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUsing_clause) {
			listener.exitUsing_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUsing_clause) {
			return visitor.visitUsing_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LockstmtContext extends ParserRuleContext {
	public KW_LOCK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LOCK, 0); }
	public relation_expr_list(): Relation_expr_listContext {
		return this.getRuleContext(0, Relation_expr_listContext);
	}
	public opt_table(): Opt_tableContext | undefined {
		return this.tryGetRuleContext(0, Opt_tableContext);
	}
	public opt_lock(): Opt_lockContext | undefined {
		return this.tryGetRuleContext(0, Opt_lockContext);
	}
	public opt_nowait(): Opt_nowaitContext | undefined {
		return this.tryGetRuleContext(0, Opt_nowaitContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_lockstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLockstmt) {
			listener.enterLockstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLockstmt) {
			listener.exitLockstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLockstmt) {
			return visitor.visitLockstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_lockContext extends ParserRuleContext {
	public KW_IN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IN, 0); }
	public lock_type(): Lock_typeContext {
		return this.getRuleContext(0, Lock_typeContext);
	}
	public KW_MODE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MODE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_lock; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_lock) {
			listener.enterOpt_lock(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_lock) {
			listener.exitOpt_lock(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_lock) {
			return visitor.visitOpt_lock(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Lock_typeContext extends ParserRuleContext {
	public KW_ACCESS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACCESS, 0); }
	public KW_SHARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SHARE, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCLUSIVE, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_lock_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLock_type) {
			listener.enterLock_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLock_type) {
			listener.exitLock_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLock_type) {
			return visitor.visitLock_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_nowaitContext extends ParserRuleContext {
	public KW_NOWAIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NOWAIT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_nowait; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_nowait) {
			listener.enterOpt_nowait(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_nowait) {
			listener.exitOpt_nowait(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_nowait) {
			return visitor.visitOpt_nowait(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_nowait_or_skipContext extends ParserRuleContext {
	public KW_NOWAIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOWAIT, 0); }
	public KW_SKIP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SKIP, 0); }
	public KW_LOCKED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCKED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_nowait_or_skip; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_nowait_or_skip) {
			listener.enterOpt_nowait_or_skip(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_nowait_or_skip) {
			listener.exitOpt_nowait_or_skip(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_nowait_or_skip) {
			return visitor.visitOpt_nowait_or_skip(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UpdatestmtContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UPDATE, 0); }
	public relation_expr_opt_alias(): Relation_expr_opt_aliasContext {
		return this.getRuleContext(0, Relation_expr_opt_aliasContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public set_clause_list(): Set_clause_listContext {
		return this.getRuleContext(0, Set_clause_listContext);
	}
	public opt_with_clause(): Opt_with_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_with_clauseContext);
	}
	public from_clause(): From_clauseContext | undefined {
		return this.tryGetRuleContext(0, From_clauseContext);
	}
	public where_or_current_clause(): Where_or_current_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_or_current_clauseContext);
	}
	public returning_clause(): Returning_clauseContext | undefined {
		return this.tryGetRuleContext(0, Returning_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_updatestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUpdatestmt) {
			listener.enterUpdatestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUpdatestmt) {
			listener.exitUpdatestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUpdatestmt) {
			return visitor.visitUpdatestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_clause_listContext extends ParserRuleContext {
	public set_clause(): Set_clauseContext[];
	public set_clause(i: number): Set_clauseContext;
	public set_clause(i?: number): Set_clauseContext | Set_clauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Set_clauseContext);
		} else {
			return this.getRuleContext(i, Set_clauseContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_clause_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_clause_list) {
			listener.enterSet_clause_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_clause_list) {
			listener.exitSet_clause_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_clause_list) {
			return visitor.visitSet_clause_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_clauseContext extends ParserRuleContext {
	public set_target(): Set_targetContext | undefined {
		return this.tryGetRuleContext(0, Set_targetContext);
	}
	public EQUAL(): TerminalNode { return this.getToken(PostgreSQLParser.EQUAL, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public OPEN_PAREN(): TerminalNode[];
	public OPEN_PAREN(i: number): TerminalNode;
	public OPEN_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_PAREN, i);
		}
	}
	public set_target_list(): Set_target_listContext | undefined {
		return this.tryGetRuleContext(0, Set_target_listContext);
	}
	public CLOSE_PAREN(): TerminalNode[];
	public CLOSE_PAREN(i: number): TerminalNode;
	public CLOSE_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_PAREN, i);
		}
	}
	public select_clause(): Select_clauseContext | undefined {
		return this.tryGetRuleContext(0, Select_clauseContext);
	}
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_clause) {
			listener.enterSet_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_clause) {
			listener.exitSet_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_clause) {
			return visitor.visitSet_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_targetContext extends ParserRuleContext {
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public opt_indirection(): Opt_indirectionContext {
		return this.getRuleContext(0, Opt_indirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_target) {
			listener.enterSet_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_target) {
			listener.exitSet_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_target) {
			return visitor.visitSet_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_target_listContext extends ParserRuleContext {
	public set_target(): Set_targetContext[];
	public set_target(i: number): Set_targetContext;
	public set_target(i?: number): Set_targetContext | Set_targetContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Set_targetContext);
		} else {
			return this.getRuleContext(i, Set_targetContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_target_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_target_list) {
			listener.enterSet_target_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_target_list) {
			listener.exitSet_target_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_target_list) {
			return visitor.visitSet_target_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeclarecursorstmtContext extends ParserRuleContext {
	public KW_DECLARE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DECLARE, 0); }
	public cursor_name(): Cursor_nameContext {
		return this.getRuleContext(0, Cursor_nameContext);
	}
	public cursor_options(): Cursor_optionsContext {
		return this.getRuleContext(0, Cursor_optionsContext);
	}
	public KW_CURSOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CURSOR, 0); }
	public opt_hold(): Opt_holdContext {
		return this.getRuleContext(0, Opt_holdContext);
	}
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public selectstmt(): SelectstmtContext {
		return this.getRuleContext(0, SelectstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_declarecursorstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDeclarecursorstmt) {
			listener.enterDeclarecursorstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDeclarecursorstmt) {
			listener.exitDeclarecursorstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDeclarecursorstmt) {
			return visitor.visitDeclarecursorstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cursor_nameContext extends ParserRuleContext {
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cursor_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCursor_name) {
			listener.enterCursor_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCursor_name) {
			listener.exitCursor_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCursor_name) {
			return visitor.visitCursor_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cursor_optionsContext extends ParserRuleContext {
	public KW_NO(): TerminalNode[];
	public KW_NO(i: number): TerminalNode;
	public KW_NO(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_NO);
		} else {
			return this.getToken(PostgreSQLParser.KW_NO, i);
		}
	}
	public KW_SCROLL(): TerminalNode[];
	public KW_SCROLL(i: number): TerminalNode;
	public KW_SCROLL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_SCROLL);
		} else {
			return this.getToken(PostgreSQLParser.KW_SCROLL, i);
		}
	}
	public KW_BINARY(): TerminalNode[];
	public KW_BINARY(i: number): TerminalNode;
	public KW_BINARY(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_BINARY);
		} else {
			return this.getToken(PostgreSQLParser.KW_BINARY, i);
		}
	}
	public KW_INSENSITIVE(): TerminalNode[];
	public KW_INSENSITIVE(i: number): TerminalNode;
	public KW_INSENSITIVE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_INSENSITIVE);
		} else {
			return this.getToken(PostgreSQLParser.KW_INSENSITIVE, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cursor_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCursor_options) {
			listener.enterCursor_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCursor_options) {
			listener.exitCursor_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCursor_options) {
			return visitor.visitCursor_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_holdContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_HOLD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HOLD, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_hold; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_hold) {
			listener.enterOpt_hold(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_hold) {
			listener.exitOpt_hold(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_hold) {
			return visitor.visitOpt_hold(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectstmtContext extends ParserRuleContext {
	public select_no_parens(): Select_no_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_no_parensContext);
	}
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_selectstmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelectstmt) {
			listener.enterSelectstmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelectstmt) {
			listener.exitSelectstmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelectstmt) {
			return visitor.visitSelectstmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_with_parensContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public select_no_parens(): Select_no_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_no_parensContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_with_parens; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_with_parens) {
			listener.enterSelect_with_parens(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_with_parens) {
			listener.exitSelect_with_parens(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_with_parens) {
			return visitor.visitSelect_with_parens(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_no_parensContext extends ParserRuleContext {
	public select_clause(): Select_clauseContext {
		return this.getRuleContext(0, Select_clauseContext);
	}
	public opt_sort_clause(): Opt_sort_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_sort_clauseContext);
	}
	public for_locking_clause(): For_locking_clauseContext | undefined {
		return this.tryGetRuleContext(0, For_locking_clauseContext);
	}
	public select_limit(): Select_limitContext | undefined {
		return this.tryGetRuleContext(0, Select_limitContext);
	}
	public opt_select_limit(): Opt_select_limitContext | undefined {
		return this.tryGetRuleContext(0, Opt_select_limitContext);
	}
	public opt_for_locking_clause(): Opt_for_locking_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_for_locking_clauseContext);
	}
	public with_clause(): With_clauseContext | undefined {
		return this.tryGetRuleContext(0, With_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_no_parens; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_no_parens) {
			listener.enterSelect_no_parens(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_no_parens) {
			listener.exitSelect_no_parens(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_no_parens) {
			return visitor.visitSelect_no_parens(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_clauseContext extends ParserRuleContext {
	public simple_select(): Simple_selectContext | undefined {
		return this.tryGetRuleContext(0, Simple_selectContext);
	}
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_clause) {
			listener.enterSelect_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_clause) {
			listener.exitSelect_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_clause) {
			return visitor.visitSelect_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Simple_selectContext extends ParserRuleContext {
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public values_clause(): Values_clauseContext | undefined {
		return this.tryGetRuleContext(0, Values_clauseContext);
	}
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public relation_expr(): Relation_exprContext | undefined {
		return this.tryGetRuleContext(0, Relation_exprContext);
	}
	public select_with_parens(): Select_with_parensContext[];
	public select_with_parens(i: number): Select_with_parensContext;
	public select_with_parens(i?: number): Select_with_parensContext | Select_with_parensContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Select_with_parensContext);
		} else {
			return this.getRuleContext(i, Select_with_parensContext);
		}
	}
	public set_operator_with_all_or_distinct(): Set_operator_with_all_or_distinctContext[];
	public set_operator_with_all_or_distinct(i: number): Set_operator_with_all_or_distinctContext;
	public set_operator_with_all_or_distinct(i?: number): Set_operator_with_all_or_distinctContext | Set_operator_with_all_or_distinctContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Set_operator_with_all_or_distinctContext);
		} else {
			return this.getRuleContext(i, Set_operator_with_all_or_distinctContext);
		}
	}
	public simple_select(): Simple_selectContext[];
	public simple_select(i: number): Simple_selectContext;
	public simple_select(i?: number): Simple_selectContext | Simple_selectContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Simple_selectContext);
		} else {
			return this.getRuleContext(i, Simple_selectContext);
		}
	}
	public into_clause(): Into_clauseContext[];
	public into_clause(i: number): Into_clauseContext;
	public into_clause(i?: number): Into_clauseContext | Into_clauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Into_clauseContext);
		} else {
			return this.getRuleContext(i, Into_clauseContext);
		}
	}
	public from_clause(): From_clauseContext | undefined {
		return this.tryGetRuleContext(0, From_clauseContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public group_clause(): Group_clauseContext | undefined {
		return this.tryGetRuleContext(0, Group_clauseContext);
	}
	public having_clause(): Having_clauseContext | undefined {
		return this.tryGetRuleContext(0, Having_clauseContext);
	}
	public window_clause(): Window_clauseContext | undefined {
		return this.tryGetRuleContext(0, Window_clauseContext);
	}
	public opt_all_clause(): Opt_all_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_all_clauseContext);
	}
	public opt_target_list(): Opt_target_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_target_listContext);
	}
	public distinct_clause(): Distinct_clauseContext | undefined {
		return this.tryGetRuleContext(0, Distinct_clauseContext);
	}
	public target_list(): Target_listContext | undefined {
		return this.tryGetRuleContext(0, Target_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_simple_select; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSimple_select) {
			listener.enterSimple_select(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSimple_select) {
			listener.exitSimple_select(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSimple_select) {
			return visitor.visitSimple_select(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_operatorContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_operator; }
	public copyFrom(ctx: Set_operatorContext): void {
		super.copyFrom(ctx);
	}
}
export class UnionContext extends Set_operatorContext {
	public KW_UNION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UNION, 0); }
	constructor(ctx: Set_operatorContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUnion) {
			listener.enterUnion(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUnion) {
			listener.exitUnion(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUnion) {
			return visitor.visitUnion(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class IntersectContext extends Set_operatorContext {
	public KW_INTERSECT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTERSECT, 0); }
	constructor(ctx: Set_operatorContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIntersect) {
			listener.enterIntersect(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIntersect) {
			listener.exitIntersect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIntersect) {
			return visitor.visitIntersect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ExceptContext extends Set_operatorContext {
	public KW_EXCEPT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXCEPT, 0); }
	constructor(ctx: Set_operatorContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExcept) {
			listener.enterExcept(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExcept) {
			listener.exitExcept(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExcept) {
			return visitor.visitExcept(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Set_operator_with_all_or_distinctContext extends ParserRuleContext {
	public set_operator(): Set_operatorContext {
		return this.getRuleContext(0, Set_operatorContext);
	}
	public all_or_distinct(): All_or_distinctContext | undefined {
		return this.tryGetRuleContext(0, All_or_distinctContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_set_operator_with_all_or_distinct; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSet_operator_with_all_or_distinct) {
			listener.enterSet_operator_with_all_or_distinct(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSet_operator_with_all_or_distinct) {
			listener.exitSet_operator_with_all_or_distinct(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSet_operator_with_all_or_distinct) {
			return visitor.visitSet_operator_with_all_or_distinct(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class With_clauseContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public cte_list(): Cte_listContext {
		return this.getRuleContext(0, Cte_listContext);
	}
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RECURSIVE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_with_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWith_clause) {
			listener.enterWith_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWith_clause) {
			listener.exitWith_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWith_clause) {
			return visitor.visitWith_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cte_listContext extends ParserRuleContext {
	public common_table_expr(): Common_table_exprContext[];
	public common_table_expr(i: number): Common_table_exprContext;
	public common_table_expr(i?: number): Common_table_exprContext | Common_table_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Common_table_exprContext);
		} else {
			return this.getRuleContext(i, Common_table_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cte_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCte_list) {
			listener.enterCte_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCte_list) {
			listener.exitCte_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCte_list) {
			return visitor.visitCte_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Common_table_exprContext extends ParserRuleContext {
	public name(): NameContext {
		return this.getRuleContext(0, NameContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public preparablestmt(): PreparablestmtContext {
		return this.getRuleContext(0, PreparablestmtContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_name_list(): Opt_name_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_name_listContext);
	}
	public opt_materialized(): Opt_materializedContext | undefined {
		return this.tryGetRuleContext(0, Opt_materializedContext);
	}
	public search_cluase(): Search_cluaseContext | undefined {
		return this.tryGetRuleContext(0, Search_cluaseContext);
	}
	public cycle_cluase(): Cycle_cluaseContext | undefined {
		return this.tryGetRuleContext(0, Cycle_cluaseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_common_table_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCommon_table_expr) {
			listener.enterCommon_table_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCommon_table_expr) {
			listener.exitCommon_table_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCommon_table_expr) {
			return visitor.visitCommon_table_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Search_cluaseContext extends ParserRuleContext {
	public KW_SEARCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_FIRST(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public columnlist(): ColumnlistContext {
		return this.getRuleContext(0, ColumnlistContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public column_name(): Column_nameContext {
		return this.getRuleContext(0, Column_nameContext);
	}
	public KW_BREADTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BREADTH, 0); }
	public KW_DEPTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEPTH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_search_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSearch_cluase) {
			listener.enterSearch_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSearch_cluase) {
			listener.exitSearch_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSearch_cluase) {
			return visitor.visitSearch_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cycle_cluaseContext extends ParserRuleContext {
	public KW_CYCLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CYCLE, 0); }
	public columnlist(): ColumnlistContext {
		return this.getRuleContext(0, ColumnlistContext);
	}
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public column_name(): Column_nameContext[];
	public column_name(i: number): Column_nameContext;
	public column_name(i?: number): Column_nameContext | Column_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Column_nameContext);
		} else {
			return this.getRuleContext(i, Column_nameContext);
		}
	}
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cycle_cluase; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCycle_cluase) {
			listener.enterCycle_cluase(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCycle_cluase) {
			listener.exitCycle_cluase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCycle_cluase) {
			return visitor.visitCycle_cluase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_materializedContext extends ParserRuleContext {
	public KW_MATERIALIZED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_materialized; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_materialized) {
			listener.enterOpt_materialized(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_materialized) {
			listener.exitOpt_materialized(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_materialized) {
			return visitor.visitOpt_materialized(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_with_clauseContext extends ParserRuleContext {
	public with_clause(): With_clauseContext {
		return this.getRuleContext(0, With_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_with_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_with_clause) {
			listener.enterOpt_with_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_with_clause) {
			listener.exitOpt_with_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_with_clause) {
			return visitor.visitOpt_with_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Into_clauseContext extends ParserRuleContext {
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public opt_strict(): Opt_strictContext | undefined {
		return this.tryGetRuleContext(0, Opt_strictContext);
	}
	public opttempTableName(): OpttempTableNameContext | undefined {
		return this.tryGetRuleContext(0, OpttempTableNameContext);
	}
	public into_target(): Into_targetContext | undefined {
		return this.tryGetRuleContext(0, Into_targetContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_into_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInto_clause) {
			listener.enterInto_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInto_clause) {
			listener.exitInto_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInto_clause) {
			return visitor.visitInto_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_strictContext extends ParserRuleContext {
	public KW_STRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRICT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_strict; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_strict) {
			listener.enterOpt_strict(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_strict) {
			listener.exitOpt_strict(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_strict) {
			return visitor.visitOpt_strict(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttempTableNameContext extends ParserRuleContext {
	public table_name_create(): Table_name_createContext {
		return this.getRuleContext(0, Table_name_createContext);
	}
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPORARY, 0); }
	public KW_TEMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMP, 0); }
	public opt_table(): Opt_tableContext | undefined {
		return this.tryGetRuleContext(0, Opt_tableContext);
	}
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GLOBAL, 0); }
	public KW_UNLOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNLOGGED, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttempTableName; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttempTableName) {
			listener.enterOpttempTableName(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttempTableName) {
			listener.exitOpttempTableName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttempTableName) {
			return visitor.visitOpttempTableName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_tableContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_table; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_table) {
			listener.enterOpt_table(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_table) {
			listener.exitOpt_table(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_table) {
			return visitor.visitOpt_table(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class All_or_distinctContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISTINCT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_all_or_distinct; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAll_or_distinct) {
			listener.enterAll_or_distinct(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAll_or_distinct) {
			listener.exitAll_or_distinct(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAll_or_distinct) {
			return visitor.visitAll_or_distinct(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Distinct_clauseContext extends ParserRuleContext {
	public KW_DISTINCT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_distinct_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDistinct_clause) {
			listener.enterDistinct_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDistinct_clause) {
			listener.exitDistinct_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDistinct_clause) {
			return visitor.visitDistinct_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_all_clauseContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_all_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_all_clause) {
			listener.enterOpt_all_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_all_clause) {
			listener.exitOpt_all_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_all_clause) {
			return visitor.visitOpt_all_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_sort_clauseContext extends ParserRuleContext {
	public sort_clause(): Sort_clauseContext {
		return this.getRuleContext(0, Sort_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_sort_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_sort_clause) {
			listener.enterOpt_sort_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_sort_clause) {
			listener.exitOpt_sort_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_sort_clause) {
			return visitor.visitOpt_sort_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Sort_clauseContext extends ParserRuleContext {
	public KW_ORDER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ORDER, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public sortby_list(): Sortby_listContext {
		return this.getRuleContext(0, Sortby_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sort_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSort_clause) {
			listener.enterSort_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSort_clause) {
			listener.exitSort_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSort_clause) {
			return visitor.visitSort_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Sortby_listContext extends ParserRuleContext {
	public sortby(): SortbyContext[];
	public sortby(i: number): SortbyContext;
	public sortby(i?: number): SortbyContext | SortbyContext[] {
		if (i === undefined) {
			return this.getRuleContexts(SortbyContext);
		} else {
			return this.getRuleContext(i, SortbyContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sortby_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSortby_list) {
			listener.enterSortby_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSortby_list) {
			listener.exitSortby_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSortby_list) {
			return visitor.visitSortby_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SortbyContext extends ParserRuleContext {
	public column_expr_noparen(): Column_expr_noparenContext {
		return this.getRuleContext(0, Column_expr_noparenContext);
	}
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public qual_all_op(): Qual_all_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_all_opContext);
	}
	public opt_asc_desc(): Opt_asc_descContext | undefined {
		return this.tryGetRuleContext(0, Opt_asc_descContext);
	}
	public opt_nulls_order(): Opt_nulls_orderContext | undefined {
		return this.tryGetRuleContext(0, Opt_nulls_orderContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sortby; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSortby) {
			listener.enterSortby(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSortby) {
			listener.exitSortby(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSortby) {
			return visitor.visitSortby(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_limitContext extends ParserRuleContext {
	public limit_clause(): Limit_clauseContext | undefined {
		return this.tryGetRuleContext(0, Limit_clauseContext);
	}
	public offset_clause(): Offset_clauseContext | undefined {
		return this.tryGetRuleContext(0, Offset_clauseContext);
	}
	public fetch_clause(): Fetch_clauseContext | undefined {
		return this.tryGetRuleContext(0, Fetch_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_limit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_limit) {
			listener.enterSelect_limit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_limit) {
			listener.exitSelect_limit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_limit) {
			return visitor.visitSelect_limit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_select_limitContext extends ParserRuleContext {
	public select_limit(): Select_limitContext {
		return this.getRuleContext(0, Select_limitContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_select_limit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_select_limit) {
			listener.enterOpt_select_limit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_select_limit) {
			listener.exitOpt_select_limit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_select_limit) {
			return visitor.visitOpt_select_limit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Limit_clauseContext extends ParserRuleContext {
	public KW_LIMIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_LIMIT, 0); }
	public select_limit_value(): Select_limit_valueContext {
		return this.getRuleContext(0, Select_limit_valueContext);
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public select_offset_value(): Select_offset_valueContext | undefined {
		return this.tryGetRuleContext(0, Select_offset_valueContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_limit_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLimit_clause) {
			listener.enterLimit_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLimit_clause) {
			listener.exitLimit_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLimit_clause) {
			return visitor.visitLimit_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Fetch_clauseContext extends ParserRuleContext {
	public KW_FETCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FETCH, 0); }
	public first_or_next(): First_or_nextContext {
		return this.getRuleContext(0, First_or_nextContext);
	}
	public select_fetch_first_value(): Select_fetch_first_valueContext | undefined {
		return this.tryGetRuleContext(0, Select_fetch_first_valueContext);
	}
	public row_or_rows(): Row_or_rowsContext | undefined {
		return this.tryGetRuleContext(0, Row_or_rowsContext);
	}
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_TIES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIES, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fetch_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFetch_clause) {
			listener.enterFetch_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFetch_clause) {
			listener.exitFetch_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFetch_clause) {
			return visitor.visitFetch_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Offset_clauseContext extends ParserRuleContext {
	public KW_OFFSET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OFFSET, 0); }
	public select_offset_value(): Select_offset_valueContext | undefined {
		return this.tryGetRuleContext(0, Select_offset_valueContext);
	}
	public select_fetch_first_value(): Select_fetch_first_valueContext | undefined {
		return this.tryGetRuleContext(0, Select_fetch_first_valueContext);
	}
	public row_or_rows(): Row_or_rowsContext | undefined {
		return this.tryGetRuleContext(0, Row_or_rowsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_offset_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOffset_clause) {
			listener.enterOffset_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOffset_clause) {
			listener.exitOffset_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOffset_clause) {
			return visitor.visitOffset_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_limit_valueContext extends ParserRuleContext {
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_limit_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_limit_value) {
			listener.enterSelect_limit_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_limit_value) {
			listener.exitSelect_limit_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_limit_value) {
			return visitor.visitSelect_limit_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_offset_valueContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_offset_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_offset_value) {
			listener.enterSelect_offset_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_offset_value) {
			listener.exitSelect_offset_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_offset_value) {
			return visitor.visitSelect_offset_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Select_fetch_first_valueContext extends ParserRuleContext {
	public c_expr(): C_exprContext | undefined {
		return this.tryGetRuleContext(0, C_exprContext);
	}
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	public i_or_f_const(): I_or_f_constContext | undefined {
		return this.tryGetRuleContext(0, I_or_f_constContext);
	}
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_select_fetch_first_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSelect_fetch_first_value) {
			listener.enterSelect_fetch_first_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSelect_fetch_first_value) {
			listener.exitSelect_fetch_first_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSelect_fetch_first_value) {
			return visitor.visitSelect_fetch_first_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class I_or_f_constContext extends ParserRuleContext {
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public fconst(): FconstContext | undefined {
		return this.tryGetRuleContext(0, FconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_i_or_f_const; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterI_or_f_const) {
			listener.enterI_or_f_const(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitI_or_f_const) {
			listener.exitI_or_f_const(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitI_or_f_const) {
			return visitor.visitI_or_f_const(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Row_or_rowsContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_row_or_rows; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRow_or_rows) {
			listener.enterRow_or_rows(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRow_or_rows) {
			listener.exitRow_or_rows(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRow_or_rows) {
			return visitor.visitRow_or_rows(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class First_or_nextContext extends ParserRuleContext {
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_first_or_next; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFirst_or_next) {
			listener.enterFirst_or_next(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFirst_or_next) {
			listener.exitFirst_or_next(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFirst_or_next) {
			return visitor.visitFirst_or_next(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Group_clauseContext extends ParserRuleContext {
	public KW_GROUP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GROUP, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public group_by_list(): Group_by_listContext {
		return this.getRuleContext(0, Group_by_listContext);
	}
	public all_or_distinct(): All_or_distinctContext | undefined {
		return this.tryGetRuleContext(0, All_or_distinctContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_group_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGroup_clause) {
			listener.enterGroup_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGroup_clause) {
			listener.exitGroup_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGroup_clause) {
			return visitor.visitGroup_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Group_by_listContext extends ParserRuleContext {
	public group_by_item(): Group_by_itemContext[];
	public group_by_item(i: number): Group_by_itemContext;
	public group_by_item(i?: number): Group_by_itemContext | Group_by_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Group_by_itemContext);
		} else {
			return this.getRuleContext(i, Group_by_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_group_by_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGroup_by_list) {
			listener.enterGroup_by_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGroup_by_list) {
			listener.exitGroup_by_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGroup_by_list) {
			return visitor.visitGroup_by_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Group_by_itemContext extends ParserRuleContext {
	public column_expr_noparen(): Column_expr_noparenContext | undefined {
		return this.tryGetRuleContext(0, Column_expr_noparenContext);
	}
	public empty_grouping_set(): Empty_grouping_setContext | undefined {
		return this.tryGetRuleContext(0, Empty_grouping_setContext);
	}
	public cube_clause(): Cube_clauseContext | undefined {
		return this.tryGetRuleContext(0, Cube_clauseContext);
	}
	public rollup_clause(): Rollup_clauseContext | undefined {
		return this.tryGetRuleContext(0, Rollup_clauseContext);
	}
	public grouping_sets_clause(): Grouping_sets_clauseContext | undefined {
		return this.tryGetRuleContext(0, Grouping_sets_clauseContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public column_expr_list_noparen(): Column_expr_list_noparenContext | undefined {
		return this.tryGetRuleContext(0, Column_expr_list_noparenContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_group_by_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGroup_by_item) {
			listener.enterGroup_by_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGroup_by_item) {
			listener.exitGroup_by_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGroup_by_item) {
			return visitor.visitGroup_by_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Empty_grouping_setContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_empty_grouping_set; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterEmpty_grouping_set) {
			listener.enterEmpty_grouping_set(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitEmpty_grouping_set) {
			listener.exitEmpty_grouping_set(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitEmpty_grouping_set) {
			return visitor.visitEmpty_grouping_set(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Rollup_clauseContext extends ParserRuleContext {
	public KW_ROLLUP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ROLLUP, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public column_expr_list_noparen(): Column_expr_list_noparenContext {
		return this.getRuleContext(0, Column_expr_list_noparenContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rollup_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRollup_clause) {
			listener.enterRollup_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRollup_clause) {
			listener.exitRollup_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRollup_clause) {
			return visitor.visitRollup_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cube_clauseContext extends ParserRuleContext {
	public KW_CUBE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CUBE, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public column_expr_list_noparen(): Column_expr_list_noparenContext {
		return this.getRuleContext(0, Column_expr_list_noparenContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cube_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCube_clause) {
			listener.enterCube_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCube_clause) {
			listener.exitCube_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCube_clause) {
			return visitor.visitCube_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Grouping_sets_clauseContext extends ParserRuleContext {
	public KW_GROUPING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GROUPING, 0); }
	public KW_SETS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SETS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public group_by_list(): Group_by_listContext {
		return this.getRuleContext(0, Group_by_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_grouping_sets_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGrouping_sets_clause) {
			listener.enterGrouping_sets_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGrouping_sets_clause) {
			listener.exitGrouping_sets_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGrouping_sets_clause) {
			return visitor.visitGrouping_sets_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Having_clauseContext extends ParserRuleContext {
	public KW_HAVING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_HAVING, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_having_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterHaving_clause) {
			listener.enterHaving_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitHaving_clause) {
			listener.exitHaving_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitHaving_clause) {
			return visitor.visitHaving_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_locking_clauseContext extends ParserRuleContext {
	public for_locking_items(): For_locking_itemsContext | undefined {
		return this.tryGetRuleContext(0, For_locking_itemsContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_READ, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_locking_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_locking_clause) {
			listener.enterFor_locking_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_locking_clause) {
			listener.exitFor_locking_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_locking_clause) {
			return visitor.visitFor_locking_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_for_locking_clauseContext extends ParserRuleContext {
	public for_locking_clause(): For_locking_clauseContext {
		return this.getRuleContext(0, For_locking_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_for_locking_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_for_locking_clause) {
			listener.enterOpt_for_locking_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_for_locking_clause) {
			listener.exitOpt_for_locking_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_for_locking_clause) {
			return visitor.visitOpt_for_locking_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_locking_itemsContext extends ParserRuleContext {
	public for_locking_item(): For_locking_itemContext[];
	public for_locking_item(i: number): For_locking_itemContext;
	public for_locking_item(i?: number): For_locking_itemContext | For_locking_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(For_locking_itemContext);
		} else {
			return this.getRuleContext(i, For_locking_itemContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_locking_items; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_locking_items) {
			listener.enterFor_locking_items(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_locking_items) {
			listener.exitFor_locking_items(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_locking_items) {
			return visitor.visitFor_locking_items(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_locking_itemContext extends ParserRuleContext {
	public for_locking_strength(): For_locking_strengthContext {
		return this.getRuleContext(0, For_locking_strengthContext);
	}
	public locked_rels_list(): Locked_rels_listContext | undefined {
		return this.tryGetRuleContext(0, Locked_rels_listContext);
	}
	public opt_nowait_or_skip(): Opt_nowait_or_skipContext | undefined {
		return this.tryGetRuleContext(0, Opt_nowait_or_skipContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_locking_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_locking_item) {
			listener.enterFor_locking_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_locking_item) {
			listener.exitFor_locking_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_locking_item) {
			return visitor.visitFor_locking_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_locking_strengthContext extends ParserRuleContext {
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_SHARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SHARE, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_KEY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_locking_strength; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_locking_strength) {
			listener.enterFor_locking_strength(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_locking_strength) {
			listener.exitFor_locking_strength(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_locking_strength) {
			return visitor.visitFor_locking_strength(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Locked_rels_listContext extends ParserRuleContext {
	public KW_OF(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OF, 0); }
	public qualified_name_list(): Qualified_name_listContext {
		return this.getRuleContext(0, Qualified_name_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_locked_rels_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLocked_rels_list) {
			listener.enterLocked_rels_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLocked_rels_list) {
			listener.exitLocked_rels_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLocked_rels_list) {
			return visitor.visitLocked_rels_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Values_clauseContext extends ParserRuleContext {
	public KW_VALUES(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VALUES, 0); }
	public OPEN_PAREN(): TerminalNode[];
	public OPEN_PAREN(i: number): TerminalNode;
	public OPEN_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_PAREN, i);
		}
	}
	public expr_list(): Expr_listContext[];
	public expr_list(i: number): Expr_listContext;
	public expr_list(i?: number): Expr_listContext | Expr_listContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Expr_listContext);
		} else {
			return this.getRuleContext(i, Expr_listContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode[];
	public CLOSE_PAREN(i: number): TerminalNode;
	public CLOSE_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_PAREN, i);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_values_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterValues_clause) {
			listener.enterValues_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitValues_clause) {
			listener.exitValues_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitValues_clause) {
			return visitor.visitValues_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class From_clauseContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public from_list(): From_listContext {
		return this.getRuleContext(0, From_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_from_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFrom_clause) {
			listener.enterFrom_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFrom_clause) {
			listener.exitFrom_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFrom_clause) {
			return visitor.visitFrom_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class From_listContext extends ParserRuleContext {
	public table_ref(): Table_refContext[];
	public table_ref(i: number): Table_refContext;
	public table_ref(i?: number): Table_refContext | Table_refContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Table_refContext);
		} else {
			return this.getRuleContext(i, Table_refContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_from_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFrom_list) {
			listener.enterFrom_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFrom_list) {
			listener.exitFrom_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFrom_list) {
			return visitor.visitFrom_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_refContext extends ParserRuleContext {
	public relation_expr(): Relation_exprContext | undefined {
		return this.tryGetRuleContext(0, Relation_exprContext);
	}
	public func_table(): Func_tableContext | undefined {
		return this.tryGetRuleContext(0, Func_tableContext);
	}
	public xmltable(): XmltableContext | undefined {
		return this.tryGetRuleContext(0, XmltableContext);
	}
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LATERAL, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public table_ref(): Table_refContext[];
	public table_ref(i: number): Table_refContext;
	public table_ref(i?: number): Table_refContext | Table_refContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Table_refContext);
		} else {
			return this.getRuleContext(i, Table_refContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_CROSS(): TerminalNode[];
	public KW_CROSS(i: number): TerminalNode;
	public KW_CROSS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_CROSS);
		} else {
			return this.getToken(PostgreSQLParser.KW_CROSS, i);
		}
	}
	public KW_JOIN(): TerminalNode[];
	public KW_JOIN(i: number): TerminalNode;
	public KW_JOIN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_JOIN);
		} else {
			return this.getToken(PostgreSQLParser.KW_JOIN, i);
		}
	}
	public KW_NATURAL(): TerminalNode[];
	public KW_NATURAL(i: number): TerminalNode;
	public KW_NATURAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_NATURAL);
		} else {
			return this.getToken(PostgreSQLParser.KW_NATURAL, i);
		}
	}
	public join_qual(): Join_qualContext[];
	public join_qual(i: number): Join_qualContext;
	public join_qual(i?: number): Join_qualContext | Join_qualContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Join_qualContext);
		} else {
			return this.getRuleContext(i, Join_qualContext);
		}
	}
	public opt_alias_clause(): Opt_alias_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_alias_clauseContext);
	}
	public tablesample_clause(): Tablesample_clauseContext | undefined {
		return this.tryGetRuleContext(0, Tablesample_clauseContext);
	}
	public func_alias_clause(): Func_alias_clauseContext | undefined {
		return this.tryGetRuleContext(0, Func_alias_clauseContext);
	}
	public join_type(): Join_typeContext[];
	public join_type(i: number): Join_typeContext;
	public join_type(i?: number): Join_typeContext | Join_typeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Join_typeContext);
		} else {
			return this.getRuleContext(i, Join_typeContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_ref; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_ref) {
			listener.enterTable_ref(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_ref) {
			listener.exitTable_ref(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_ref) {
			return visitor.visitTable_ref(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Alias_clauseContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public name_list(): Name_listContext | undefined {
		return this.tryGetRuleContext(0, Name_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_alias_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAlias_clause) {
			listener.enterAlias_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAlias_clause) {
			listener.exitAlias_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAlias_clause) {
			return visitor.visitAlias_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_alias_clauseContext extends ParserRuleContext {
	public alias_clause(): Alias_clauseContext {
		return this.getRuleContext(0, Alias_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_alias_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_alias_clause) {
			listener.enterOpt_alias_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_alias_clause) {
			listener.exitOpt_alias_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_alias_clause) {
			return visitor.visitOpt_alias_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_alias_clauseContext extends ParserRuleContext {
	public alias_clause(): Alias_clauseContext | undefined {
		return this.tryGetRuleContext(0, Alias_clauseContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public tablefuncelementlist(): TablefuncelementlistContext | undefined {
		return this.tryGetRuleContext(0, TablefuncelementlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_alias_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_alias_clause) {
			listener.enterFunc_alias_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_alias_clause) {
			listener.exitFunc_alias_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_alias_clause) {
			return visitor.visitFunc_alias_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Join_typeContext extends ParserRuleContext {
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FULL, 0); }
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEFT, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RIGHT, 0); }
	public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INNER, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OUTER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_join_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterJoin_type) {
			listener.enterJoin_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitJoin_type) {
			listener.exitJoin_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitJoin_type) {
			return visitor.visitJoin_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Join_qualContext extends ParserRuleContext {
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_join_qual; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterJoin_qual) {
			listener.enterJoin_qual(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitJoin_qual) {
			listener.exitJoin_qual(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitJoin_qual) {
			return visitor.visitJoin_qual(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Relation_exprContext extends ParserRuleContext {
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_CURRENT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_SCHEMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_relation_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRelation_expr) {
			listener.enterRelation_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRelation_expr) {
			listener.exitRelation_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRelation_expr) {
			return visitor.visitRelation_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Publication_relation_exprContext extends ParserRuleContext {
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLES, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public schema_name(): Schema_nameContext | undefined {
		return this.tryGetRuleContext(0, Schema_nameContext);
	}
	public KW_CURRENT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_SCHEMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_publication_relation_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPublication_relation_expr) {
			listener.enterPublication_relation_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPublication_relation_expr) {
			listener.exitPublication_relation_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPublication_relation_expr) {
			return visitor.visitPublication_relation_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Relation_expr_listContext extends ParserRuleContext {
	public relation_expr(): Relation_exprContext[];
	public relation_expr(i: number): Relation_exprContext;
	public relation_expr(i?: number): Relation_exprContext | Relation_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Relation_exprContext);
		} else {
			return this.getRuleContext(i, Relation_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_relation_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRelation_expr_list) {
			listener.enterRelation_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRelation_expr_list) {
			listener.exitRelation_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRelation_expr_list) {
			return visitor.visitRelation_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Publication_relation_expr_listContext extends ParserRuleContext {
	public publication_relation_expr(): Publication_relation_exprContext[];
	public publication_relation_expr(i: number): Publication_relation_exprContext;
	public publication_relation_expr(i?: number): Publication_relation_exprContext | Publication_relation_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Publication_relation_exprContext);
		} else {
			return this.getRuleContext(i, Publication_relation_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_publication_relation_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPublication_relation_expr_list) {
			listener.enterPublication_relation_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPublication_relation_expr_list) {
			listener.exitPublication_relation_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPublication_relation_expr_list) {
			return visitor.visitPublication_relation_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Relation_expr_opt_aliasContext extends ParserRuleContext {
	public relation_expr(): Relation_exprContext {
		return this.getRuleContext(0, Relation_exprContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_relation_expr_opt_alias; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRelation_expr_opt_alias) {
			listener.enterRelation_expr_opt_alias(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRelation_expr_opt_alias) {
			listener.exitRelation_expr_opt_alias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRelation_expr_opt_alias) {
			return visitor.visitRelation_expr_opt_alias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Tablesample_clauseContext extends ParserRuleContext {
	public KW_TABLESAMPLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TABLESAMPLE, 0); }
	public function_name(): Function_nameContext {
		return this.getRuleContext(0, Function_nameContext);
	}
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_repeatable_clause(): Opt_repeatable_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_repeatable_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablesample_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablesample_clause) {
			listener.enterTablesample_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablesample_clause) {
			listener.exitTablesample_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablesample_clause) {
			return visitor.visitTablesample_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_repeatable_clauseContext extends ParserRuleContext {
	public KW_REPEATABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_REPEATABLE, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_repeatable_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_repeatable_clause) {
			listener.enterOpt_repeatable_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_repeatable_clause) {
			listener.exitOpt_repeatable_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_repeatable_clause) {
			return visitor.visitOpt_repeatable_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_tableContext extends ParserRuleContext {
	public func_expr_windowless(): Func_expr_windowlessContext | undefined {
		return this.tryGetRuleContext(0, Func_expr_windowlessContext);
	}
	public opt_ordinality(): Opt_ordinalityContext | undefined {
		return this.tryGetRuleContext(0, Opt_ordinalityContext);
	}
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public rowsfrom_list(): Rowsfrom_listContext | undefined {
		return this.tryGetRuleContext(0, Rowsfrom_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_table; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_table) {
			listener.enterFunc_table(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_table) {
			listener.exitFunc_table(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_table) {
			return visitor.visitFunc_table(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Rowsfrom_itemContext extends ParserRuleContext {
	public func_expr_windowless(): Func_expr_windowlessContext {
		return this.getRuleContext(0, Func_expr_windowlessContext);
	}
	public opt_col_def_list(): Opt_col_def_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_col_def_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsfrom_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsfrom_item) {
			listener.enterRowsfrom_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsfrom_item) {
			listener.exitRowsfrom_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsfrom_item) {
			return visitor.visitRowsfrom_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Rowsfrom_listContext extends ParserRuleContext {
	public rowsfrom_item(): Rowsfrom_itemContext[];
	public rowsfrom_item(i: number): Rowsfrom_itemContext;
	public rowsfrom_item(i?: number): Rowsfrom_itemContext | Rowsfrom_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Rowsfrom_itemContext);
		} else {
			return this.getRuleContext(i, Rowsfrom_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rowsfrom_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRowsfrom_list) {
			listener.enterRowsfrom_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRowsfrom_list) {
			listener.exitRowsfrom_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRowsfrom_list) {
			return visitor.visitRowsfrom_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_col_def_listContext extends ParserRuleContext {
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public tablefuncelementlist(): TablefuncelementlistContext {
		return this.getRuleContext(0, TablefuncelementlistContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_col_def_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_col_def_list) {
			listener.enterOpt_col_def_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_col_def_list) {
			listener.exitOpt_col_def_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_col_def_list) {
			return visitor.visitOpt_col_def_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_ordinalityContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_ORDINALITY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ORDINALITY, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_ordinality; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_ordinality) {
			listener.enterOpt_ordinality(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_ordinality) {
			listener.exitOpt_ordinality(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_ordinality) {
			return visitor.visitOpt_ordinality(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Where_clauseContext extends ParserRuleContext {
	public KW_WHERE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHERE, 0); }
	public column_expr_noparen(): Column_expr_noparenContext {
		return this.getRuleContext(0, Column_expr_noparenContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_where_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWhere_clause) {
			listener.enterWhere_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWhere_clause) {
			listener.exitWhere_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWhere_clause) {
			return visitor.visitWhere_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Where_or_current_clauseContext extends ParserRuleContext {
	public KW_WHERE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHERE, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public cursor_name(): Cursor_nameContext | undefined {
		return this.tryGetRuleContext(0, Cursor_nameContext);
	}
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_where_or_current_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWhere_or_current_clause) {
			listener.enterWhere_or_current_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWhere_or_current_clause) {
			listener.exitWhere_or_current_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWhere_or_current_clause) {
			return visitor.visitWhere_or_current_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OpttablefuncelementlistContext extends ParserRuleContext {
	public tablefuncelementlist(): TablefuncelementlistContext {
		return this.getRuleContext(0, TablefuncelementlistContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opttablefuncelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpttablefuncelementlist) {
			listener.enterOpttablefuncelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpttablefuncelementlist) {
			listener.exitOpttablefuncelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpttablefuncelementlist) {
			return visitor.visitOpttablefuncelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablefuncelementlistContext extends ParserRuleContext {
	public tablefuncelement(): TablefuncelementContext[];
	public tablefuncelement(i: number): TablefuncelementContext;
	public tablefuncelement(i?: number): TablefuncelementContext | TablefuncelementContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TablefuncelementContext);
		} else {
			return this.getRuleContext(i, TablefuncelementContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablefuncelementlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablefuncelementlist) {
			listener.enterTablefuncelementlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablefuncelementlist) {
			listener.exitTablefuncelementlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablefuncelementlist) {
			return visitor.visitTablefuncelementlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TablefuncelementContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	public opt_collate_clause(): Opt_collate_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_collate_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablefuncelement; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablefuncelement) {
			listener.enterTablefuncelement(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablefuncelement) {
			listener.exitTablefuncelement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablefuncelement) {
			return visitor.visitTablefuncelement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XmltableContext extends ParserRuleContext {
	public KW_XMLTABLE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_XMLTABLE, 0); }
	public OPEN_PAREN(): TerminalNode[];
	public OPEN_PAREN(i: number): TerminalNode;
	public OPEN_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_PAREN, i);
		}
	}
	public CLOSE_PAREN(): TerminalNode[];
	public CLOSE_PAREN(i: number): TerminalNode;
	public CLOSE_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_PAREN, i);
		}
	}
	public c_expr(): C_exprContext | undefined {
		return this.tryGetRuleContext(0, C_exprContext);
	}
	public xmlexists_argument(): Xmlexists_argumentContext | undefined {
		return this.tryGetRuleContext(0, Xmlexists_argumentContext);
	}
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMNS, 0); }
	public xmltable_column_list(): Xmltable_column_listContext | undefined {
		return this.tryGetRuleContext(0, Xmltable_column_listContext);
	}
	public KW_XMLNAMESPACES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLNAMESPACES, 0); }
	public xml_namespace_list(): Xml_namespace_listContext | undefined {
		return this.tryGetRuleContext(0, Xml_namespace_listContext);
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmltable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmltable) {
			listener.enterXmltable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmltable) {
			listener.exitXmltable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmltable) {
			return visitor.visitXmltable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xmltable_column_listContext extends ParserRuleContext {
	public xmltable_column_el(): Xmltable_column_elContext[];
	public xmltable_column_el(i: number): Xmltable_column_elContext;
	public xmltable_column_el(i?: number): Xmltable_column_elContext | Xmltable_column_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Xmltable_column_elContext);
		} else {
			return this.getRuleContext(i, Xmltable_column_elContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmltable_column_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmltable_column_list) {
			listener.enterXmltable_column_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmltable_column_list) {
			listener.exitXmltable_column_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmltable_column_list) {
			return visitor.visitXmltable_column_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xmltable_column_elContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ORDINALITY, 0); }
	public xmltable_column_option_list(): Xmltable_column_option_listContext | undefined {
		return this.tryGetRuleContext(0, Xmltable_column_option_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmltable_column_el; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmltable_column_el) {
			listener.enterXmltable_column_el(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmltable_column_el) {
			listener.exitXmltable_column_el(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmltable_column_el) {
			return visitor.visitXmltable_column_el(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xmltable_column_option_listContext extends ParserRuleContext {
	public xmltable_column_option_el(): Xmltable_column_option_elContext[];
	public xmltable_column_option_el(i: number): Xmltable_column_option_elContext;
	public xmltable_column_option_el(i?: number): Xmltable_column_option_elContext | Xmltable_column_option_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Xmltable_column_option_elContext);
		} else {
			return this.getRuleContext(i, Xmltable_column_option_elContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmltable_column_option_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmltable_column_option_list) {
			listener.enterXmltable_column_option_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmltable_column_option_list) {
			listener.exitXmltable_column_option_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmltable_column_option_list) {
			return visitor.visitXmltable_column_option_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xmltable_column_option_elContext extends ParserRuleContext {
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmltable_column_option_el; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmltable_column_option_el) {
			listener.enterXmltable_column_option_el(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmltable_column_option_el) {
			listener.exitXmltable_column_option_el(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmltable_column_option_el) {
			return visitor.visitXmltable_column_option_el(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_namespace_listContext extends ParserRuleContext {
	public xml_namespace_el(): Xml_namespace_elContext[];
	public xml_namespace_el(i: number): Xml_namespace_elContext;
	public xml_namespace_el(i?: number): Xml_namespace_elContext | Xml_namespace_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Xml_namespace_elContext);
		} else {
			return this.getRuleContext(i, Xml_namespace_elContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_namespace_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_namespace_list) {
			listener.enterXml_namespace_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_namespace_list) {
			listener.exitXml_namespace_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_namespace_list) {
			return visitor.visitXml_namespace_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_namespace_elContext extends ParserRuleContext {
	public b_expr(): B_exprContext {
		return this.getRuleContext(0, B_exprContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public collabel(): CollabelContext | undefined {
		return this.tryGetRuleContext(0, CollabelContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_namespace_el; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_namespace_el) {
			listener.enterXml_namespace_el(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_namespace_el) {
			listener.exitXml_namespace_el(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_namespace_el) {
			return visitor.visitXml_namespace_el(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypenameContext extends ParserRuleContext {
	public simpletypename(): SimpletypenameContext | undefined {
		return this.tryGetRuleContext(0, SimpletypenameContext);
	}
	public opt_array_bounds(): Opt_array_boundsContext | undefined {
		return this.tryGetRuleContext(0, Opt_array_boundsContext);
	}
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ARRAY, 0); }
	public KW_SETOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SETOF, 0); }
	public OPEN_BRACKET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_BRACKET, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_BRACKET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_BRACKET, 0); }
	public qualified_name(): Qualified_nameContext | undefined {
		return this.tryGetRuleContext(0, Qualified_nameContext);
	}
	public PERCENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PERCENT, 0); }
	public KW_ROWTYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWTYPE, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_typename; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTypename) {
			listener.enterTypename(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTypename) {
			listener.exitTypename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTypename) {
			return visitor.visitTypename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_array_boundsContext extends ParserRuleContext {
	public OPEN_BRACKET(): TerminalNode[];
	public OPEN_BRACKET(i: number): TerminalNode;
	public OPEN_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_BRACKET);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_BRACKET, i);
		}
	}
	public CLOSE_BRACKET(): TerminalNode[];
	public CLOSE_BRACKET(i: number): TerminalNode;
	public CLOSE_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_BRACKET);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_BRACKET, i);
		}
	}
	public iconst(): IconstContext[];
	public iconst(i: number): IconstContext;
	public iconst(i?: number): IconstContext | IconstContext[] {
		if (i === undefined) {
			return this.getRuleContexts(IconstContext);
		} else {
			return this.getRuleContext(i, IconstContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_array_bounds; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_array_bounds) {
			listener.enterOpt_array_bounds(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_array_bounds) {
			listener.exitOpt_array_bounds(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_array_bounds) {
			return visitor.visitOpt_array_bounds(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SimpletypenameContext extends ParserRuleContext {
	public generictype(): GenerictypeContext | undefined {
		return this.tryGetRuleContext(0, GenerictypeContext);
	}
	public numeric(): NumericContext | undefined {
		return this.tryGetRuleContext(0, NumericContext);
	}
	public bit(): BitContext | undefined {
		return this.tryGetRuleContext(0, BitContext);
	}
	public character(): CharacterContext | undefined {
		return this.tryGetRuleContext(0, CharacterContext);
	}
	public constdatetime(): ConstdatetimeContext | undefined {
		return this.tryGetRuleContext(0, ConstdatetimeContext);
	}
	public constinterval(): ConstintervalContext | undefined {
		return this.tryGetRuleContext(0, ConstintervalContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_interval(): Opt_intervalContext | undefined {
		return this.tryGetRuleContext(0, Opt_intervalContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_simpletypename; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSimpletypename) {
			listener.enterSimpletypename(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSimpletypename) {
			listener.exitSimpletypename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSimpletypename) {
			return visitor.visitSimpletypename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConsttypenameContext extends ParserRuleContext {
	public numeric(): NumericContext | undefined {
		return this.tryGetRuleContext(0, NumericContext);
	}
	public constbit(): ConstbitContext | undefined {
		return this.tryGetRuleContext(0, ConstbitContext);
	}
	public constcharacter(): ConstcharacterContext | undefined {
		return this.tryGetRuleContext(0, ConstcharacterContext);
	}
	public constdatetime(): ConstdatetimeContext | undefined {
		return this.tryGetRuleContext(0, ConstdatetimeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_consttypename; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConsttypename) {
			listener.enterConsttypename(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConsttypename) {
			listener.exitConsttypename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConsttypename) {
			return visitor.visitConsttypename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GenerictypeContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext {
		return this.getRuleContext(0, Type_function_nameContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	public opt_type_modifiers(): Opt_type_modifiersContext | undefined {
		return this.tryGetRuleContext(0, Opt_type_modifiersContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_generictype; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGenerictype) {
			listener.enterGenerictype(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGenerictype) {
			listener.exitGenerictype(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGenerictype) {
			return visitor.visitGenerictype(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_type_modifiersContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_type_modifiers; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_type_modifiers) {
			listener.enterOpt_type_modifiers(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_type_modifiers) {
			listener.exitOpt_type_modifiers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_type_modifiers) {
			return visitor.visitOpt_type_modifiers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NumericContext extends ParserRuleContext {
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INTEGER, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SMALLINT, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BIGINT, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REAL, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FLOAT, 0); }
	public opt_float(): Opt_floatContext | undefined {
		return this.tryGetRuleContext(0, Opt_floatContext);
	}
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOUBLE, 0); }
	public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRECISION, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DECIMAL, 0); }
	public opt_type_modifiers(): Opt_type_modifiersContext | undefined {
		return this.tryGetRuleContext(0, Opt_type_modifiersContext);
	}
	public KW_DEC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEC, 0); }
	public KW_NUMERIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NUMERIC, 0); }
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BOOLEAN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_numeric; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNumeric) {
			listener.enterNumeric(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNumeric) {
			listener.exitNumeric(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNumeric) {
			return visitor.visitNumeric(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_floatContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext {
		return this.getRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_float; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_float) {
			listener.enterOpt_float(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_float) {
			listener.exitOpt_float(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_float) {
			return visitor.visitOpt_float(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BitContext extends ParserRuleContext {
	public bitwithlength(): BitwithlengthContext | undefined {
		return this.tryGetRuleContext(0, BitwithlengthContext);
	}
	public bitwithoutlength(): BitwithoutlengthContext | undefined {
		return this.tryGetRuleContext(0, BitwithoutlengthContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_bit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBit) {
			listener.enterBit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBit) {
			listener.exitBit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBit) {
			return visitor.visitBit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstbitContext extends ParserRuleContext {
	public bitwithlength(): BitwithlengthContext | undefined {
		return this.tryGetRuleContext(0, BitwithlengthContext);
	}
	public bitwithoutlength(): BitwithoutlengthContext | undefined {
		return this.tryGetRuleContext(0, BitwithoutlengthContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constbit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstbit) {
			listener.enterConstbit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstbit) {
			listener.exitConstbit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstbit) {
			return visitor.visitConstbit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BitwithlengthContext extends ParserRuleContext {
	public KW_BIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BIT, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_varying(): Opt_varyingContext | undefined {
		return this.tryGetRuleContext(0, Opt_varyingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_bitwithlength; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBitwithlength) {
			listener.enterBitwithlength(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBitwithlength) {
			listener.exitBitwithlength(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBitwithlength) {
			return visitor.visitBitwithlength(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BitwithoutlengthContext extends ParserRuleContext {
	public KW_BIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BIT, 0); }
	public opt_varying(): Opt_varyingContext | undefined {
		return this.tryGetRuleContext(0, Opt_varyingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_bitwithoutlength; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBitwithoutlength) {
			listener.enterBitwithoutlength(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBitwithoutlength) {
			listener.exitBitwithoutlength(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBitwithoutlength) {
			return visitor.visitBitwithoutlength(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CharacterContext extends ParserRuleContext {
	public character_c(): Character_cContext {
		return this.getRuleContext(0, Character_cContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_character; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCharacter) {
			listener.enterCharacter(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCharacter) {
			listener.exitCharacter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCharacter) {
			return visitor.visitCharacter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstcharacterContext extends ParserRuleContext {
	public character_c(): Character_cContext {
		return this.getRuleContext(0, Character_cContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constcharacter; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstcharacter) {
			listener.enterConstcharacter(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstcharacter) {
			listener.exitConstcharacter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstcharacter) {
			return visitor.visitConstcharacter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Character_cContext extends ParserRuleContext {
	public KW_CHARACTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHARACTER, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHAR, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NCHAR, 0); }
	public opt_varying(): Opt_varyingContext | undefined {
		return this.tryGetRuleContext(0, Opt_varyingContext);
	}
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARCHAR, 0); }
	public KW_NATIONAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NATIONAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_character_c; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCharacter_c) {
			listener.enterCharacter_c(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCharacter_c) {
			listener.exitCharacter_c(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCharacter_c) {
			return visitor.visitCharacter_c(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_varyingContext extends ParserRuleContext {
	public KW_VARYING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VARYING, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_varying; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_varying) {
			listener.enterOpt_varying(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_varying) {
			listener.exitOpt_varying(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_varying) {
			return visitor.visitOpt_varying(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstdatetimeContext extends ParserRuleContext {
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIMESTAMP, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_timezone(): Opt_timezoneContext | undefined {
		return this.tryGetRuleContext(0, Opt_timezoneContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constdatetime; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstdatetime) {
			listener.enterConstdatetime(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstdatetime) {
			listener.exitConstdatetime(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstdatetime) {
			return visitor.visitConstdatetime(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstintervalContext extends ParserRuleContext {
	public KW_INTERVAL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTERVAL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_constinterval; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterConstinterval) {
			listener.enterConstinterval(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitConstinterval) {
			listener.exitConstinterval(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitConstinterval) {
			return visitor.visitConstinterval(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_timezoneContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public KW_TIME(): TerminalNode { return this.getToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ZONE, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_timezone; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_timezone) {
			listener.enterOpt_timezone(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_timezone) {
			listener.exitOpt_timezone(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_timezone) {
			return visitor.visitOpt_timezone(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_intervalContext extends ParserRuleContext {
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_YEAR, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MONTH, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DAY, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HOUR, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINUTE, 0); }
	public interval_second(): Interval_secondContext | undefined {
		return this.tryGetRuleContext(0, Interval_secondContext);
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_interval; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_interval) {
			listener.enterOpt_interval(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_interval) {
			listener.exitOpt_interval(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_interval) {
			return visitor.visitOpt_interval(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Interval_secondContext extends ParserRuleContext {
	public KW_SECOND(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SECOND, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_interval_second; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInterval_second) {
			listener.enterInterval_second(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInterval_second) {
			listener.exitInterval_second(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInterval_second) {
			return visitor.visitInterval_second(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_escapeContext extends ParserRuleContext {
	public KW_ESCAPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ESCAPE, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_escape; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_escape) {
			listener.enterOpt_escape(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_escape) {
			listener.exitOpt_escape(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_escape) {
			return visitor.visitOpt_escape(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_exprContext extends ParserRuleContext {
	public a_expr_qual(): A_expr_qualContext {
		return this.getRuleContext(0, A_expr_qualContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr) {
			listener.enterA_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr) {
			listener.exitA_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr) {
			return visitor.visitA_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_qualContext extends ParserRuleContext {
	public a_expr_lessless(): A_expr_lesslessContext {
		return this.getRuleContext(0, A_expr_lesslessContext);
	}
	public qual_op(): Qual_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_opContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_qual; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_qual) {
			listener.enterA_expr_qual(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_qual) {
			listener.exitA_expr_qual(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_qual) {
			return visitor.visitA_expr_qual(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_lesslessContext extends ParserRuleContext {
	public a_expr_or(): A_expr_orContext[];
	public a_expr_or(i: number): A_expr_orContext;
	public a_expr_or(i?: number): A_expr_orContext | A_expr_orContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_orContext);
		} else {
			return this.getRuleContext(i, A_expr_orContext);
		}
	}
	public LESS_LESS(): TerminalNode[];
	public LESS_LESS(i: number): TerminalNode;
	public LESS_LESS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.LESS_LESS);
		} else {
			return this.getToken(PostgreSQLParser.LESS_LESS, i);
		}
	}
	public GREATER_GREATER(): TerminalNode[];
	public GREATER_GREATER(i: number): TerminalNode;
	public GREATER_GREATER(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.GREATER_GREATER);
		} else {
			return this.getToken(PostgreSQLParser.GREATER_GREATER, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_lessless; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_lessless) {
			listener.enterA_expr_lessless(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_lessless) {
			listener.exitA_expr_lessless(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_lessless) {
			return visitor.visitA_expr_lessless(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_orContext extends ParserRuleContext {
	public a_expr_and(): A_expr_andContext[];
	public a_expr_and(i: number): A_expr_andContext;
	public a_expr_and(i?: number): A_expr_andContext | A_expr_andContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_andContext);
		} else {
			return this.getRuleContext(i, A_expr_andContext);
		}
	}
	public KW_OR(): TerminalNode[];
	public KW_OR(i: number): TerminalNode;
	public KW_OR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_OR);
		} else {
			return this.getToken(PostgreSQLParser.KW_OR, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_or; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_or) {
			listener.enterA_expr_or(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_or) {
			listener.exitA_expr_or(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_or) {
			return visitor.visitA_expr_or(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_andContext extends ParserRuleContext {
	public a_expr_in(): A_expr_inContext[];
	public a_expr_in(i: number): A_expr_inContext;
	public a_expr_in(i?: number): A_expr_inContext | A_expr_inContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_inContext);
		} else {
			return this.getRuleContext(i, A_expr_inContext);
		}
	}
	public KW_AND(): TerminalNode[];
	public KW_AND(i: number): TerminalNode;
	public KW_AND(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_AND);
		} else {
			return this.getToken(PostgreSQLParser.KW_AND, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_and; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_and) {
			listener.enterA_expr_and(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_and) {
			listener.exitA_expr_and(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_and) {
			return visitor.visitA_expr_and(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_inContext extends ParserRuleContext {
	public a_expr_unary_not(): A_expr_unary_notContext {
		return this.getRuleContext(0, A_expr_unary_notContext);
	}
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public in_expr(): In_exprContext | undefined {
		return this.tryGetRuleContext(0, In_exprContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_in; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_in) {
			listener.enterA_expr_in(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_in) {
			listener.exitA_expr_in(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_in) {
			return visitor.visitA_expr_in(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_unary_notContext extends ParserRuleContext {
	public a_expr_isnull(): A_expr_isnullContext {
		return this.getRuleContext(0, A_expr_isnullContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_unary_not; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_unary_not) {
			listener.enterA_expr_unary_not(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_unary_not) {
			listener.exitA_expr_unary_not(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_unary_not) {
			return visitor.visitA_expr_unary_not(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_isnullContext extends ParserRuleContext {
	public a_expr_is_not(): A_expr_is_notContext {
		return this.getRuleContext(0, A_expr_is_notContext);
	}
	public KW_ISNULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISNULL, 0); }
	public KW_NOTNULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTNULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_isnull; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_isnull) {
			listener.enterA_expr_isnull(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_isnull) {
			listener.exitA_expr_isnull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_isnull) {
			return visitor.visitA_expr_isnull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_is_notContext extends ParserRuleContext {
	public a_expr_compare(): A_expr_compareContext {
		return this.getRuleContext(0, A_expr_compareContext);
	}
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IS, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNKNOWN, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public type_list(): Type_listContext | undefined {
		return this.tryGetRuleContext(0, Type_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_DOCUMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOCUMENT, 0); }
	public KW_NORMALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NORMALIZED, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public unicode_normal_form(): Unicode_normal_formContext | undefined {
		return this.tryGetRuleContext(0, Unicode_normal_formContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_is_not; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_is_not) {
			listener.enterA_expr_is_not(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_is_not) {
			listener.exitA_expr_is_not(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_is_not) {
			return visitor.visitA_expr_is_not(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_compareContext extends ParserRuleContext {
	public a_expr_like(): A_expr_likeContext[];
	public a_expr_like(i: number): A_expr_likeContext;
	public a_expr_like(i?: number): A_expr_likeContext | A_expr_likeContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_likeContext);
		} else {
			return this.getRuleContext(i, A_expr_likeContext);
		}
	}
	public subquery_Op(): Subquery_OpContext | undefined {
		return this.tryGetRuleContext(0, Subquery_OpContext);
	}
	public sub_type(): Sub_typeContext | undefined {
		return this.tryGetRuleContext(0, Sub_typeContext);
	}
	public LT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LT, 0); }
	public GT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GT, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public LESS_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LESS_EQUALS, 0); }
	public GREATER_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GREATER_EQUALS, 0); }
	public NOT_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.NOT_EQUALS, 0); }
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_compare; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_compare) {
			listener.enterA_expr_compare(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_compare) {
			listener.exitA_expr_compare(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_compare) {
			return visitor.visitA_expr_compare(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_likeContext extends ParserRuleContext {
	public a_expr_qual_op(): A_expr_qual_opContext[];
	public a_expr_qual_op(i: number): A_expr_qual_opContext;
	public a_expr_qual_op(i?: number): A_expr_qual_opContext | A_expr_qual_opContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_qual_opContext);
		} else {
			return this.getRuleContext(i, A_expr_qual_opContext);
		}
	}
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIKE, 0); }
	public KW_ILIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ILIKE, 0); }
	public KW_SIMILAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SIMILAR, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BETWEEN, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public opt_escape(): Opt_escapeContext | undefined {
		return this.tryGetRuleContext(0, Opt_escapeContext);
	}
	public KW_SYMMETRIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYMMETRIC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_like; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_like) {
			listener.enterA_expr_like(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_like) {
			listener.exitA_expr_like(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_like) {
			return visitor.visitA_expr_like(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_qual_opContext extends ParserRuleContext {
	public a_expr_unary_qualop(): A_expr_unary_qualopContext[];
	public a_expr_unary_qualop(i: number): A_expr_unary_qualopContext;
	public a_expr_unary_qualop(i?: number): A_expr_unary_qualopContext | A_expr_unary_qualopContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_unary_qualopContext);
		} else {
			return this.getRuleContext(i, A_expr_unary_qualopContext);
		}
	}
	public qual_op(): Qual_opContext[];
	public qual_op(i: number): Qual_opContext;
	public qual_op(i?: number): Qual_opContext | Qual_opContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Qual_opContext);
		} else {
			return this.getRuleContext(i, Qual_opContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_qual_op; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_qual_op) {
			listener.enterA_expr_qual_op(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_qual_op) {
			listener.exitA_expr_qual_op(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_qual_op) {
			return visitor.visitA_expr_qual_op(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_unary_qualopContext extends ParserRuleContext {
	public a_expr_add(): A_expr_addContext {
		return this.getRuleContext(0, A_expr_addContext);
	}
	public qual_op(): Qual_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_opContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_unary_qualop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_unary_qualop) {
			listener.enterA_expr_unary_qualop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_unary_qualop) {
			listener.exitA_expr_unary_qualop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_unary_qualop) {
			return visitor.visitA_expr_unary_qualop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_addContext extends ParserRuleContext {
	public a_expr_mul(): A_expr_mulContext[];
	public a_expr_mul(i: number): A_expr_mulContext;
	public a_expr_mul(i?: number): A_expr_mulContext | A_expr_mulContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_mulContext);
		} else {
			return this.getRuleContext(i, A_expr_mulContext);
		}
	}
	public MINUS(): TerminalNode[];
	public MINUS(i: number): TerminalNode;
	public MINUS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.MINUS);
		} else {
			return this.getToken(PostgreSQLParser.MINUS, i);
		}
	}
	public PLUS(): TerminalNode[];
	public PLUS(i: number): TerminalNode;
	public PLUS(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.PLUS);
		} else {
			return this.getToken(PostgreSQLParser.PLUS, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_add; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_add) {
			listener.enterA_expr_add(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_add) {
			listener.exitA_expr_add(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_add) {
			return visitor.visitA_expr_add(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_mulContext extends ParserRuleContext {
	public a_expr_caret(): A_expr_caretContext[];
	public a_expr_caret(i: number): A_expr_caretContext;
	public a_expr_caret(i?: number): A_expr_caretContext | A_expr_caretContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_expr_caretContext);
		} else {
			return this.getRuleContext(i, A_expr_caretContext);
		}
	}
	public STAR(): TerminalNode[];
	public STAR(i: number): TerminalNode;
	public STAR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.STAR);
		} else {
			return this.getToken(PostgreSQLParser.STAR, i);
		}
	}
	public SLASH(): TerminalNode[];
	public SLASH(i: number): TerminalNode;
	public SLASH(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.SLASH);
		} else {
			return this.getToken(PostgreSQLParser.SLASH, i);
		}
	}
	public PERCENT(): TerminalNode[];
	public PERCENT(i: number): TerminalNode;
	public PERCENT(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.PERCENT);
		} else {
			return this.getToken(PostgreSQLParser.PERCENT, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_mul; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_mul) {
			listener.enterA_expr_mul(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_mul) {
			listener.exitA_expr_mul(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_mul) {
			return visitor.visitA_expr_mul(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_caretContext extends ParserRuleContext {
	public a_expr_unary_sign(): A_expr_unary_signContext {
		return this.getRuleContext(0, A_expr_unary_signContext);
	}
	public CARET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CARET, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_caret; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_caret) {
			listener.enterA_expr_caret(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_caret) {
			listener.exitA_expr_caret(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_caret) {
			return visitor.visitA_expr_caret(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_unary_signContext extends ParserRuleContext {
	public a_expr_at_time_zone(): A_expr_at_time_zoneContext {
		return this.getRuleContext(0, A_expr_at_time_zoneContext);
	}
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_unary_sign; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_unary_sign) {
			listener.enterA_expr_unary_sign(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_unary_sign) {
			listener.exitA_expr_unary_sign(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_unary_sign) {
			return visitor.visitA_expr_unary_sign(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_at_time_zoneContext extends ParserRuleContext {
	public a_expr_collate(): A_expr_collateContext {
		return this.getRuleContext(0, A_expr_collateContext);
	}
	public KW_AT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AT, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ZONE, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_at_time_zone; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_at_time_zone) {
			listener.enterA_expr_at_time_zone(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_at_time_zone) {
			listener.exitA_expr_at_time_zone(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_at_time_zone) {
			return visitor.visitA_expr_at_time_zone(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_collateContext extends ParserRuleContext {
	public a_expr_typecast(): A_expr_typecastContext {
		return this.getRuleContext(0, A_expr_typecastContext);
	}
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_collate; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_collate) {
			listener.enterA_expr_collate(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_collate) {
			listener.exitA_expr_collate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_collate) {
			return visitor.visitA_expr_collate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class A_expr_typecastContext extends ParserRuleContext {
	public c_expr(): C_exprContext {
		return this.getRuleContext(0, C_exprContext);
	}
	public TYPECAST(): TerminalNode[];
	public TYPECAST(i: number): TerminalNode;
	public TYPECAST(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.TYPECAST);
		} else {
			return this.getToken(PostgreSQLParser.TYPECAST, i);
		}
	}
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_a_expr_typecast; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterA_expr_typecast) {
			listener.enterA_expr_typecast(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitA_expr_typecast) {
			listener.exitA_expr_typecast(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitA_expr_typecast) {
			return visitor.visitA_expr_typecast(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class B_exprContext extends ParserRuleContext {
	public c_expr(): C_exprContext | undefined {
		return this.tryGetRuleContext(0, C_exprContext);
	}
	public b_expr(): B_exprContext[];
	public b_expr(i: number): B_exprContext;
	public b_expr(i?: number): B_exprContext | B_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(B_exprContext);
		} else {
			return this.getRuleContext(i, B_exprContext);
		}
	}
	public TYPECAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.TYPECAST, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	public CARET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CARET, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public SLASH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SLASH, 0); }
	public PERCENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PERCENT, 0); }
	public qual_op(): Qual_opContext | undefined {
		return this.tryGetRuleContext(0, Qual_opContext);
	}
	public LT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LT, 0); }
	public GT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GT, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public LESS_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LESS_EQUALS, 0); }
	public GREATER_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GREATER_EQUALS, 0); }
	public NOT_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.NOT_EQUALS, 0); }
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IS, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public type_list(): Type_listContext | undefined {
		return this.tryGetRuleContext(0, Type_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_DOCUMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOCUMENT, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_b_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterB_expr) {
			listener.enterB_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitB_expr) {
			listener.exitB_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitB_expr) {
			return visitor.visitB_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class C_exprContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_c_expr; }
	public copyFrom(ctx: C_exprContext): void {
		super.copyFrom(ctx);
	}
}
export class C_expr_existsContext extends C_exprContext {
	public KW_EXISTS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXISTS, 0); }
	public select_with_parens(): Select_with_parensContext {
		return this.getRuleContext(0, Select_with_parensContext);
	}
	constructor(ctx: C_exprContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterC_expr_exists) {
			listener.enterC_expr_exists(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitC_expr_exists) {
			listener.exitC_expr_exists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitC_expr_exists) {
			return visitor.visitC_expr_exists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class C_expr_exprContext extends C_exprContext {
	public _a_expr_in_parens!: A_exprContext;
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ARRAY, 0); }
	public select_with_parens(): Select_with_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_with_parensContext);
	}
	public array_expr(): Array_exprContext | undefined {
		return this.tryGetRuleContext(0, Array_exprContext);
	}
	public PARAM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PARAM, 0); }
	public opt_indirection(): Opt_indirectionContext | undefined {
		return this.tryGetRuleContext(0, Opt_indirectionContext);
	}
	public KW_GROUPING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUPING, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNIQUE, 0); }
	public columnref(): ColumnrefContext | undefined {
		return this.tryGetRuleContext(0, ColumnrefContext);
	}
	public aexprconst(): AexprconstContext | undefined {
		return this.tryGetRuleContext(0, AexprconstContext);
	}
	public plsqlvariablename(): PlsqlvariablenameContext | undefined {
		return this.tryGetRuleContext(0, PlsqlvariablenameContext);
	}
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public func_expr(): Func_exprContext | undefined {
		return this.tryGetRuleContext(0, Func_exprContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	public explicit_row(): Explicit_rowContext | undefined {
		return this.tryGetRuleContext(0, Explicit_rowContext);
	}
	public implicit_row(): Implicit_rowContext | undefined {
		return this.tryGetRuleContext(0, Implicit_rowContext);
	}
	public row(): RowContext[];
	public row(i: number): RowContext;
	public row(i?: number): RowContext | RowContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RowContext);
		} else {
			return this.getRuleContext(i, RowContext);
		}
	}
	public KW_OVERLAPS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERLAPS, 0); }
	constructor(ctx: C_exprContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterC_expr_expr) {
			listener.enterC_expr_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitC_expr_expr) {
			listener.exitC_expr_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitC_expr_expr) {
			return visitor.visitC_expr_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class C_expr_caseContext extends C_exprContext {
	public case_expr(): Case_exprContext {
		return this.getRuleContext(0, Case_exprContext);
	}
	constructor(ctx: C_exprContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterC_expr_case) {
			listener.enterC_expr_case(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitC_expr_case) {
			listener.exitC_expr_case(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitC_expr_case) {
			return visitor.visitC_expr_case(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PlsqlvariablenameContext extends ParserRuleContext {
	public PLSQLVARIABLENAME(): TerminalNode { return this.getToken(PostgreSQLParser.PLSQLVARIABLENAME, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsqlvariablename; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsqlvariablename) {
			listener.enterPlsqlvariablename(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsqlvariablename) {
			listener.exitPlsqlvariablename(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsqlvariablename) {
			return visitor.visitPlsqlvariablename(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_applicationContext extends ParserRuleContext {
	public function_name(): Function_nameContext {
		return this.getRuleContext(0, Function_nameContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public func_arg_list(): Func_arg_listContext | undefined {
		return this.tryGetRuleContext(0, Func_arg_listContext);
	}
	public KW_VARIADIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARIADIC, 0); }
	public func_arg_expr(): Func_arg_exprContext | undefined {
		return this.tryGetRuleContext(0, Func_arg_exprContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public opt_sort_clause(): Opt_sort_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_sort_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_application; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_application) {
			listener.enterFunc_application(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_application) {
			listener.exitFunc_application(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_application) {
			return visitor.visitFunc_application(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_exprContext extends ParserRuleContext {
	public func_application(): Func_applicationContext | undefined {
		return this.tryGetRuleContext(0, Func_applicationContext);
	}
	public within_group_clause(): Within_group_clauseContext | undefined {
		return this.tryGetRuleContext(0, Within_group_clauseContext);
	}
	public filter_clause(): Filter_clauseContext | undefined {
		return this.tryGetRuleContext(0, Filter_clauseContext);
	}
	public over_clause(): Over_clauseContext | undefined {
		return this.tryGetRuleContext(0, Over_clauseContext);
	}
	public func_expr_common_subexpr(): Func_expr_common_subexprContext | undefined {
		return this.tryGetRuleContext(0, Func_expr_common_subexprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_expr) {
			listener.enterFunc_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_expr) {
			listener.exitFunc_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_expr) {
			return visitor.visitFunc_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_expr_windowlessContext extends ParserRuleContext {
	public func_application(): Func_applicationContext | undefined {
		return this.tryGetRuleContext(0, Func_applicationContext);
	}
	public func_expr_common_subexpr(): Func_expr_common_subexprContext | undefined {
		return this.tryGetRuleContext(0, Func_expr_common_subexprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_expr_windowless; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_expr_windowless) {
			listener.enterFunc_expr_windowless(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_expr_windowless) {
			listener.exitFunc_expr_windowless(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_expr_windowless) {
			return visitor.visitFunc_expr_windowless(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_expr_common_subexprContext extends ParserRuleContext {
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_DATE, 0); }
	public KW_CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_TIME, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCALTIME, 0); }
	public KW_LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCALTIMESTAMP, 0); }
	public KW_CURRENT_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_ROLE, 0); }
	public KW_CURRENT_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_USER, 0); }
	public KW_SESSION_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION_USER, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_CURRENT_CATALOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_CATALOG, 0); }
	public KW_CURRENT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_SCHEMA, 0); }
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CAST, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public typename(): TypenameContext | undefined {
		return this.tryGetRuleContext(0, TypenameContext);
	}
	public KW_EXTRACT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTRACT, 0); }
	public extract_list(): Extract_listContext | undefined {
		return this.tryGetRuleContext(0, Extract_listContext);
	}
	public KW_NORMALIZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NORMALIZE, 0); }
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public unicode_normal_form(): Unicode_normal_formContext | undefined {
		return this.tryGetRuleContext(0, Unicode_normal_formContext);
	}
	public KW_OVERLAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERLAY, 0); }
	public overlay_list(): Overlay_listContext | undefined {
		return this.tryGetRuleContext(0, Overlay_listContext);
	}
	public KW_POSITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POSITION, 0); }
	public position_list(): Position_listContext | undefined {
		return this.tryGetRuleContext(0, Position_listContext);
	}
	public KW_SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSTRING, 0); }
	public substr_list(): Substr_listContext | undefined {
		return this.tryGetRuleContext(0, Substr_listContext);
	}
	public KW_TREAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TREAT, 0); }
	public KW_TRIM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIM, 0); }
	public trim_list(): Trim_listContext | undefined {
		return this.tryGetRuleContext(0, Trim_listContext);
	}
	public KW_BOTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BOTH, 0); }
	public KW_LEADING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEADING, 0); }
	public KW_TRAILING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRAILING, 0); }
	public KW_NULLIF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULLIF, 0); }
	public KW_COALESCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COALESCE, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public KW_GREATEST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GREATEST, 0); }
	public KW_LEAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEAST, 0); }
	public KW_XMLCONCAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLCONCAT, 0); }
	public KW_XMLELEMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLELEMENT, 0); }
	public KW_NAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NAME, 0); }
	public collabel(): CollabelContext | undefined {
		return this.tryGetRuleContext(0, CollabelContext);
	}
	public xml_attributes(): Xml_attributesContext | undefined {
		return this.tryGetRuleContext(0, Xml_attributesContext);
	}
	public KW_XMLEXISTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLEXISTS, 0); }
	public c_expr(): C_exprContext | undefined {
		return this.tryGetRuleContext(0, C_exprContext);
	}
	public xmlexists_argument(): Xmlexists_argumentContext | undefined {
		return this.tryGetRuleContext(0, Xmlexists_argumentContext);
	}
	public KW_XMLFOREST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLFOREST, 0); }
	public xml_attribute_list(): Xml_attribute_listContext | undefined {
		return this.tryGetRuleContext(0, Xml_attribute_listContext);
	}
	public KW_XMLPARSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLPARSE, 0); }
	public document_or_content(): Document_or_contentContext | undefined {
		return this.tryGetRuleContext(0, Document_or_contentContext);
	}
	public xml_whitespace_option(): Xml_whitespace_optionContext | undefined {
		return this.tryGetRuleContext(0, Xml_whitespace_optionContext);
	}
	public KW_XMLPI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLPI, 0); }
	public KW_XMLROOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLROOT, 0); }
	public KW_XML(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XML, 0); }
	public xml_root_version(): Xml_root_versionContext | undefined {
		return this.tryGetRuleContext(0, Xml_root_versionContext);
	}
	public opt_xml_root_standalone(): Opt_xml_root_standaloneContext | undefined {
		return this.tryGetRuleContext(0, Opt_xml_root_standaloneContext);
	}
	public KW_XMLSERIALIZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLSERIALIZE, 0); }
	public simpletypename(): SimpletypenameContext | undefined {
		return this.tryGetRuleContext(0, SimpletypenameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_expr_common_subexpr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_expr_common_subexpr) {
			listener.enterFunc_expr_common_subexpr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_expr_common_subexpr) {
			listener.exitFunc_expr_common_subexpr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_expr_common_subexpr) {
			return visitor.visitFunc_expr_common_subexpr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_root_versionContext extends ParserRuleContext {
	public KW_VERSION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VERSION, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_root_version; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_root_version) {
			listener.enterXml_root_version(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_root_version) {
			listener.exitXml_root_version(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_root_version) {
			return visitor.visitXml_root_version(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_xml_root_standaloneContext extends ParserRuleContext {
	public COMMA(): TerminalNode { return this.getToken(PostgreSQLParser.COMMA, 0); }
	public KW_STANDALONE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_STANDALONE, 0); }
	public KW_YES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_YES, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_xml_root_standalone; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_xml_root_standalone) {
			listener.enterOpt_xml_root_standalone(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_xml_root_standalone) {
			listener.exitOpt_xml_root_standalone(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_xml_root_standalone) {
			return visitor.visitOpt_xml_root_standalone(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_attributesContext extends ParserRuleContext {
	public KW_XMLATTRIBUTES(): TerminalNode { return this.getToken(PostgreSQLParser.KW_XMLATTRIBUTES, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public xml_attribute_list(): Xml_attribute_listContext {
		return this.getRuleContext(0, Xml_attribute_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_attributes; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_attributes) {
			listener.enterXml_attributes(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_attributes) {
			listener.exitXml_attributes(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_attributes) {
			return visitor.visitXml_attributes(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_attribute_listContext extends ParserRuleContext {
	public xml_attribute_el(): Xml_attribute_elContext[];
	public xml_attribute_el(i: number): Xml_attribute_elContext;
	public xml_attribute_el(i?: number): Xml_attribute_elContext | Xml_attribute_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Xml_attribute_elContext);
		} else {
			return this.getRuleContext(i, Xml_attribute_elContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_attribute_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_attribute_list) {
			listener.enterXml_attribute_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_attribute_list) {
			listener.exitXml_attribute_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_attribute_list) {
			return visitor.visitXml_attribute_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_attribute_elContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public collabel(): CollabelContext | undefined {
		return this.tryGetRuleContext(0, CollabelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_attribute_el; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_attribute_el) {
			listener.enterXml_attribute_el(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_attribute_el) {
			listener.exitXml_attribute_el(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_attribute_el) {
			return visitor.visitXml_attribute_el(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Document_or_contentContext extends ParserRuleContext {
	public KW_DOCUMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOCUMENT, 0); }
	public KW_CONTENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTENT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_document_or_content; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDocument_or_content) {
			listener.enterDocument_or_content(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDocument_or_content) {
			listener.exitDocument_or_content(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDocument_or_content) {
			return visitor.visitDocument_or_content(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_whitespace_optionContext extends ParserRuleContext {
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRESERVE, 0); }
	public KW_WHITESPACE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHITESPACE, 0); }
	public KW_STRIP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRIP, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_whitespace_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_whitespace_option) {
			listener.enterXml_whitespace_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_whitespace_option) {
			listener.exitXml_whitespace_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_whitespace_option) {
			return visitor.visitXml_whitespace_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xmlexists_argumentContext extends ParserRuleContext {
	public KW_PASSING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PASSING, 0); }
	public c_expr(): C_exprContext {
		return this.getRuleContext(0, C_exprContext);
	}
	public xml_passing_mech(): Xml_passing_mechContext[];
	public xml_passing_mech(i: number): Xml_passing_mechContext;
	public xml_passing_mech(i?: number): Xml_passing_mechContext | Xml_passing_mechContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Xml_passing_mechContext);
		} else {
			return this.getRuleContext(i, Xml_passing_mechContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xmlexists_argument; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXmlexists_argument) {
			listener.enterXmlexists_argument(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXmlexists_argument) {
			listener.exitXmlexists_argument(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXmlexists_argument) {
			return visitor.visitXmlexists_argument(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Xml_passing_mechContext extends ParserRuleContext {
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public KW_REF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REF, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xml_passing_mech; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXml_passing_mech) {
			listener.enterXml_passing_mech(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXml_passing_mech) {
			listener.exitXml_passing_mech(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXml_passing_mech) {
			return visitor.visitXml_passing_mech(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Within_group_clauseContext extends ParserRuleContext {
	public KW_WITHIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WITHIN, 0); }
	public KW_GROUP(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GROUP, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public sort_clause(): Sort_clauseContext {
		return this.getRuleContext(0, Sort_clauseContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_within_group_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWithin_group_clause) {
			listener.enterWithin_group_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWithin_group_clause) {
			listener.exitWithin_group_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWithin_group_clause) {
			return visitor.visitWithin_group_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Filter_clauseContext extends ParserRuleContext {
	public KW_FILTER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FILTER, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public KW_WHERE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHERE, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_filter_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFilter_clause) {
			listener.enterFilter_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFilter_clause) {
			listener.exitFilter_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFilter_clause) {
			return visitor.visitFilter_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_clauseContext extends ParserRuleContext {
	public KW_WINDOW(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WINDOW, 0); }
	public window_definition_list(): Window_definition_listContext {
		return this.getRuleContext(0, Window_definition_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_window_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWindow_clause) {
			listener.enterWindow_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWindow_clause) {
			listener.exitWindow_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWindow_clause) {
			return visitor.visitWindow_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_definition_listContext extends ParserRuleContext {
	public window_definition(): Window_definitionContext[];
	public window_definition(i: number): Window_definitionContext;
	public window_definition(i?: number): Window_definitionContext | Window_definitionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Window_definitionContext);
		} else {
			return this.getRuleContext(i, Window_definitionContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_window_definition_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWindow_definition_list) {
			listener.enterWindow_definition_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWindow_definition_list) {
			listener.exitWindow_definition_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWindow_definition_list) {
			return visitor.visitWindow_definition_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_definitionContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public KW_AS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AS, 0); }
	public window_specification(): Window_specificationContext {
		return this.getRuleContext(0, Window_specificationContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_window_definition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWindow_definition) {
			listener.enterWindow_definition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWindow_definition) {
			listener.exitWindow_definition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWindow_definition) {
			return visitor.visitWindow_definition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Over_clauseContext extends ParserRuleContext {
	public KW_OVER(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OVER, 0); }
	public window_specification(): Window_specificationContext | undefined {
		return this.tryGetRuleContext(0, Window_specificationContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_over_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOver_clause) {
			listener.enterOver_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOver_clause) {
			listener.exitOver_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOver_clause) {
			return visitor.visitOver_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Window_specificationContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_existing_window_name(): Opt_existing_window_nameContext | undefined {
		return this.tryGetRuleContext(0, Opt_existing_window_nameContext);
	}
	public opt_partition_clause(): Opt_partition_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_partition_clauseContext);
	}
	public opt_sort_clause(): Opt_sort_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_sort_clauseContext);
	}
	public opt_frame_clause(): Opt_frame_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_frame_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_window_specification; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWindow_specification) {
			listener.enterWindow_specification(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWindow_specification) {
			listener.exitWindow_specification(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWindow_specification) {
			return visitor.visitWindow_specification(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_existing_window_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_existing_window_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_existing_window_name) {
			listener.enterOpt_existing_window_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_existing_window_name) {
			listener.exitOpt_existing_window_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_existing_window_name) {
			return visitor.visitOpt_existing_window_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_partition_clauseContext extends ParserRuleContext {
	public KW_PARTITION(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PARTITION, 0); }
	public KW_BY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BY, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_partition_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_partition_clause) {
			listener.enterOpt_partition_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_partition_clause) {
			listener.exitOpt_partition_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_partition_clause) {
			return visitor.visitOpt_partition_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_frame_clauseContext extends ParserRuleContext {
	public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RANGE, 0); }
	public frame_extent(): Frame_extentContext {
		return this.getRuleContext(0, Frame_extentContext);
	}
	public opt_window_exclusion_clause(): Opt_window_exclusion_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_window_exclusion_clauseContext);
	}
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public KW_GROUPS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUPS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_frame_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_frame_clause) {
			listener.enterOpt_frame_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_frame_clause) {
			listener.exitOpt_frame_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_frame_clause) {
			return visitor.visitOpt_frame_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Frame_extentContext extends ParserRuleContext {
	public frame_bound(): Frame_boundContext[];
	public frame_bound(i: number): Frame_boundContext;
	public frame_bound(i?: number): Frame_boundContext | Frame_boundContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Frame_boundContext);
		} else {
			return this.getRuleContext(i, Frame_boundContext);
		}
	}
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BETWEEN, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AND, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_frame_extent; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFrame_extent) {
			listener.enterFrame_extent(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFrame_extent) {
			listener.exitFrame_extent(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFrame_extent) {
			return visitor.visitFrame_extent(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Frame_boundContext extends ParserRuleContext {
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNBOUNDED, 0); }
	public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRECEDING, 0); }
	public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOLLOWING, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_frame_bound; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFrame_bound) {
			listener.enterFrame_bound(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFrame_bound) {
			listener.exitFrame_bound(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFrame_bound) {
			return visitor.visitFrame_bound(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_window_exclusion_clauseContext extends ParserRuleContext {
	public KW_EXCLUDE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXCLUDE, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	public KW_TIES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIES, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_OTHERS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OTHERS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_window_exclusion_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_window_exclusion_clause) {
			listener.enterOpt_window_exclusion_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_window_exclusion_clause) {
			listener.exitOpt_window_exclusion_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_window_exclusion_clause) {
			return visitor.visitOpt_window_exclusion_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RowContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_row; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRow) {
			listener.enterRow(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRow) {
			listener.exitRow(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRow) {
			return visitor.visitRow(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Explicit_rowContext extends ParserRuleContext {
	public KW_ROW(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ROW, 0); }
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_explicit_row; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExplicit_row) {
			listener.enterExplicit_row(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExplicit_row) {
			listener.exitExplicit_row(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExplicit_row) {
			return visitor.visitExplicit_row(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Implicit_rowContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public COMMA(): TerminalNode { return this.getToken(PostgreSQLParser.COMMA, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_implicit_row; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterImplicit_row) {
			listener.enterImplicit_row(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitImplicit_row) {
			listener.exitImplicit_row(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitImplicit_row) {
			return visitor.visitImplicit_row(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Sub_typeContext extends ParserRuleContext {
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANY, 0); }
	public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SOME, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sub_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSub_type) {
			listener.enterSub_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSub_type) {
			listener.exitSub_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSub_type) {
			return visitor.visitSub_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class All_opContext extends ParserRuleContext {
	public Operator(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.Operator, 0); }
	public mathop(): MathopContext | undefined {
		return this.tryGetRuleContext(0, MathopContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_all_op; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAll_op) {
			listener.enterAll_op(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAll_op) {
			listener.exitAll_op(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAll_op) {
			return visitor.visitAll_op(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MathopContext extends ParserRuleContext {
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public SLASH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SLASH, 0); }
	public PERCENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PERCENT, 0); }
	public CARET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CARET, 0); }
	public LT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LT, 0); }
	public GT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GT, 0); }
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public LESS_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.LESS_EQUALS, 0); }
	public GREATER_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.GREATER_EQUALS, 0); }
	public NOT_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.NOT_EQUALS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_mathop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMathop) {
			listener.enterMathop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMathop) {
			listener.exitMathop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMathop) {
			return visitor.visitMathop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Qual_opContext extends ParserRuleContext {
	public Operator(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.Operator, 0); }
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_qual_op; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterQual_op) {
			listener.enterQual_op(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitQual_op) {
			listener.exitQual_op(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitQual_op) {
			return visitor.visitQual_op(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Qual_all_opContext extends ParserRuleContext {
	public all_op(): All_opContext | undefined {
		return this.tryGetRuleContext(0, All_opContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_qual_all_op; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterQual_all_op) {
			listener.enterQual_all_op(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitQual_all_op) {
			listener.exitQual_all_op(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitQual_all_op) {
			return visitor.visitQual_all_op(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Subquery_OpContext extends ParserRuleContext {
	public all_op(): All_opContext | undefined {
		return this.tryGetRuleContext(0, All_opContext);
	}
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public any_operator(): Any_operatorContext | undefined {
		return this.tryGetRuleContext(0, Any_operatorContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIKE, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_ILIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ILIKE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_subquery_Op; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSubquery_Op) {
			listener.enterSubquery_Op(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSubquery_Op) {
			listener.exitSubquery_Op(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSubquery_Op) {
			return visitor.visitSubquery_Op(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expr_listContext extends ParserRuleContext {
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExpr_list) {
			listener.enterExpr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExpr_list) {
			listener.exitExpr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExpr_list) {
			return visitor.visitExpr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_expr_list_noparenContext extends ParserRuleContext {
	public column_expr_noparen(): Column_expr_noparenContext[];
	public column_expr_noparen(i: number): Column_expr_noparenContext;
	public column_expr_noparen(i?: number): Column_expr_noparenContext | Column_expr_noparenContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Column_expr_noparenContext);
		} else {
			return this.getRuleContext(i, Column_expr_noparenContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_expr_list_noparen; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_expr_list_noparen) {
			listener.enterColumn_expr_list_noparen(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_expr_list_noparen) {
			listener.exitColumn_expr_list_noparen(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_expr_list_noparen) {
			return visitor.visitColumn_expr_list_noparen(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_expr_listContext extends ParserRuleContext {
	public column_expr(): Column_exprContext[];
	public column_expr(i: number): Column_exprContext;
	public column_expr(i?: number): Column_exprContext | Column_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Column_exprContext);
		} else {
			return this.getRuleContext(i, Column_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_expr_list) {
			listener.enterColumn_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_expr_list) {
			listener.exitColumn_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_expr_list) {
			return visitor.visitColumn_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_exprContext extends ParserRuleContext {
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_expr) {
			listener.enterColumn_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_expr) {
			listener.exitColumn_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_expr) {
			return visitor.visitColumn_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_expr_noparenContext extends ParserRuleContext {
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_expr_noparen; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_expr_noparen) {
			listener.enterColumn_expr_noparen(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_expr_noparen) {
			listener.exitColumn_expr_noparen(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_expr_noparen) {
			return visitor.visitColumn_expr_noparen(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_arg_listContext extends ParserRuleContext {
	public func_arg_expr(): Func_arg_exprContext[];
	public func_arg_expr(i: number): Func_arg_exprContext;
	public func_arg_expr(i?: number): Func_arg_exprContext | Func_arg_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Func_arg_exprContext);
		} else {
			return this.getRuleContext(i, Func_arg_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_arg_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_arg_list) {
			listener.enterFunc_arg_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_arg_list) {
			listener.exitFunc_arg_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_arg_list) {
			return visitor.visitFunc_arg_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Func_arg_exprContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public param_name(): Param_nameContext | undefined {
		return this.tryGetRuleContext(0, Param_nameContext);
	}
	public COLON_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COLON_EQUALS, 0); }
	public EQUALS_GREATER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUALS_GREATER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_func_arg_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunc_arg_expr) {
			listener.enterFunc_arg_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunc_arg_expr) {
			listener.exitFunc_arg_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunc_arg_expr) {
			return visitor.visitFunc_arg_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Type_listContext extends ParserRuleContext {
	public typename(): TypenameContext[];
	public typename(i: number): TypenameContext;
	public typename(i?: number): TypenameContext | TypenameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(TypenameContext);
		} else {
			return this.getRuleContext(i, TypenameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_type_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterType_list) {
			listener.enterType_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitType_list) {
			listener.exitType_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitType_list) {
			return visitor.visitType_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Array_exprContext extends ParserRuleContext {
	public OPEN_BRACKET(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_BRACKET, 0); }
	public CLOSE_BRACKET(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_BRACKET, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	public array_expr_list(): Array_expr_listContext | undefined {
		return this.tryGetRuleContext(0, Array_expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_array_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterArray_expr) {
			listener.enterArray_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitArray_expr) {
			listener.exitArray_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitArray_expr) {
			return visitor.visitArray_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Array_expr_listContext extends ParserRuleContext {
	public array_expr(): Array_exprContext[];
	public array_expr(i: number): Array_exprContext;
	public array_expr(i?: number): Array_exprContext | Array_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Array_exprContext);
		} else {
			return this.getRuleContext(i, Array_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_array_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterArray_expr_list) {
			listener.enterArray_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitArray_expr_list) {
			listener.exitArray_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitArray_expr_list) {
			return visitor.visitArray_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Extract_listContext extends ParserRuleContext {
	public extract_arg(): Extract_argContext {
		return this.getRuleContext(0, Extract_argContext);
	}
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_extract_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExtract_list) {
			listener.enterExtract_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExtract_list) {
			listener.exitExtract_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExtract_list) {
			return visitor.visitExtract_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Extract_argContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_YEAR, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MONTH, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DAY, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HOUR, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINUTE, 0); }
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECOND, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_extract_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExtract_arg) {
			listener.enterExtract_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExtract_arg) {
			listener.exitExtract_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExtract_arg) {
			return visitor.visitExtract_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Unicode_normal_formContext extends ParserRuleContext {
	public KW_NFC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFC, 0); }
	public KW_NFD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFD, 0); }
	public KW_NFKC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFKC, 0); }
	public KW_NFKD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFKD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_unicode_normal_form; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUnicode_normal_form) {
			listener.enterUnicode_normal_form(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUnicode_normal_form) {
			listener.exitUnicode_normal_form(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUnicode_normal_form) {
			return visitor.visitUnicode_normal_form(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Overlay_listContext extends ParserRuleContext {
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public KW_PLACING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PLACING, 0); }
	public KW_FROM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_overlay_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOverlay_list) {
			listener.enterOverlay_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOverlay_list) {
			listener.exitOverlay_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOverlay_list) {
			return visitor.visitOverlay_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Position_listContext extends ParserRuleContext {
	public b_expr(): B_exprContext[];
	public b_expr(i: number): B_exprContext;
	public b_expr(i?: number): B_exprContext | B_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(B_exprContext);
		} else {
			return this.getRuleContext(i, B_exprContext);
		}
	}
	public KW_IN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_position_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPosition_list) {
			listener.enterPosition_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPosition_list) {
			listener.exitPosition_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPosition_list) {
			return visitor.visitPosition_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Substr_listContext extends ParserRuleContext {
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_SIMILAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SIMILAR, 0); }
	public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ESCAPE, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_substr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSubstr_list) {
			listener.enterSubstr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSubstr_list) {
			listener.exitSubstr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSubstr_list) {
			return visitor.visitSubstr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Trim_listContext extends ParserRuleContext {
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_trim_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTrim_list) {
			listener.enterTrim_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTrim_list) {
			listener.exitTrim_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTrim_list) {
			return visitor.visitTrim_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class In_exprContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_in_expr; }
	public copyFrom(ctx: In_exprContext): void {
		super.copyFrom(ctx);
	}
}
export class In_expr_selectContext extends In_exprContext {
	public select_with_parens(): Select_with_parensContext {
		return this.getRuleContext(0, Select_with_parensContext);
	}
	constructor(ctx: In_exprContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIn_expr_select) {
			listener.enterIn_expr_select(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIn_expr_select) {
			listener.exitIn_expr_select(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIn_expr_select) {
			return visitor.visitIn_expr_select(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class In_expr_listContext extends In_exprContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(ctx: In_exprContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIn_expr_list) {
			listener.enterIn_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIn_expr_list) {
			listener.exitIn_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIn_expr_list) {
			return visitor.visitIn_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Case_exprContext extends ParserRuleContext {
	public KW_CASE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CASE, 0); }
	public when_clause_list(): When_clause_listContext {
		return this.getRuleContext(0, When_clause_listContext);
	}
	public KW_END(): TerminalNode { return this.getToken(PostgreSQLParser.KW_END, 0); }
	public case_arg(): Case_argContext | undefined {
		return this.tryGetRuleContext(0, Case_argContext);
	}
	public case_default(): Case_defaultContext | undefined {
		return this.tryGetRuleContext(0, Case_defaultContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_case_expr; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCase_expr) {
			listener.enterCase_expr(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCase_expr) {
			listener.exitCase_expr(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCase_expr) {
			return visitor.visitCase_expr(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class When_clause_listContext extends ParserRuleContext {
	public when_clause(): When_clauseContext[];
	public when_clause(i: number): When_clauseContext;
	public when_clause(i?: number): When_clauseContext | When_clauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(When_clauseContext);
		} else {
			return this.getRuleContext(i, When_clauseContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_when_clause_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWhen_clause_list) {
			listener.enterWhen_clause_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWhen_clause_list) {
			listener.exitWhen_clause_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWhen_clause_list) {
			return visitor.visitWhen_clause_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class When_clauseContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public KW_THEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_THEN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_when_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterWhen_clause) {
			listener.enterWhen_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitWhen_clause) {
			listener.exitWhen_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitWhen_clause) {
			return visitor.visitWhen_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Case_defaultContext extends ParserRuleContext {
	public KW_ELSE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ELSE, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_case_default; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCase_default) {
			listener.enterCase_default(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCase_default) {
			listener.exitCase_default(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCase_default) {
			return visitor.visitCase_default(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Case_argContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_case_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCase_arg) {
			listener.enterCase_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCase_arg) {
			listener.exitCase_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCase_arg) {
			return visitor.visitCase_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColumnrefContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_columnref; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumnref) {
			listener.enterColumnref(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumnref) {
			listener.exitColumnref(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumnref) {
			return visitor.visitColumnref(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Indirection_elContext extends ParserRuleContext {
	public DOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.DOT, 0); }
	public attr_name(): Attr_nameContext | undefined {
		return this.tryGetRuleContext(0, Attr_nameContext);
	}
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public OPEN_BRACKET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_BRACKET, 0); }
	public CLOSE_BRACKET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_BRACKET, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public COLON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COLON, 0); }
	public opt_slice_bound(): Opt_slice_boundContext[];
	public opt_slice_bound(i: number): Opt_slice_boundContext;
	public opt_slice_bound(i?: number): Opt_slice_boundContext | Opt_slice_boundContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opt_slice_boundContext);
		} else {
			return this.getRuleContext(i, Opt_slice_boundContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_indirection_el; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndirection_el) {
			listener.enterIndirection_el(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndirection_el) {
			listener.exitIndirection_el(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndirection_el) {
			return visitor.visitIndirection_el(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_slice_boundContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_slice_bound; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_slice_bound) {
			listener.enterOpt_slice_bound(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_slice_bound) {
			listener.exitOpt_slice_bound(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_slice_bound) {
			return visitor.visitOpt_slice_bound(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndirectionContext extends ParserRuleContext {
	public indirection_el(): Indirection_elContext[];
	public indirection_el(i: number): Indirection_elContext;
	public indirection_el(i?: number): Indirection_elContext | Indirection_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Indirection_elContext);
		} else {
			return this.getRuleContext(i, Indirection_elContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_indirection; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndirection) {
			listener.enterIndirection(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndirection) {
			listener.exitIndirection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndirection) {
			return visitor.visitIndirection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_indirectionContext extends ParserRuleContext {
	public indirection_el(): Indirection_elContext[];
	public indirection_el(i: number): Indirection_elContext;
	public indirection_el(i?: number): Indirection_elContext | Indirection_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Indirection_elContext);
		} else {
			return this.getRuleContext(i, Indirection_elContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_indirection; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_indirection) {
			listener.enterOpt_indirection(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_indirection) {
			listener.exitOpt_indirection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_indirection) {
			return visitor.visitOpt_indirection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_target_listContext extends ParserRuleContext {
	public target_list(): Target_listContext {
		return this.getRuleContext(0, Target_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_target_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_target_list) {
			listener.enterOpt_target_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_target_list) {
			listener.exitOpt_target_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_target_list) {
			return visitor.visitOpt_target_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Target_listContext extends ParserRuleContext {
	public target_el(): Target_elContext[];
	public target_el(i: number): Target_elContext;
	public target_el(i?: number): Target_elContext | Target_elContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Target_elContext);
		} else {
			return this.getRuleContext(i, Target_elContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_target_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTarget_list) {
			listener.enterTarget_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTarget_list) {
			listener.exitTarget_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTarget_list) {
			return visitor.visitTarget_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Target_elContext extends ParserRuleContext {
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_target_el; }
	public copyFrom(ctx: Target_elContext): void {
		super.copyFrom(ctx);
	}
}
export class Target_labelContext extends Target_elContext {
	public column_expr_noparen(): Column_expr_noparenContext {
		return this.getRuleContext(0, Column_expr_noparenContext);
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public collabel(): CollabelContext | undefined {
		return this.tryGetRuleContext(0, CollabelContext);
	}
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	constructor(ctx: Target_elContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTarget_label) {
			listener.enterTarget_label(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTarget_label) {
			listener.exitTarget_label(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTarget_label) {
			return visitor.visitTarget_label(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class Target_starContext extends Target_elContext {
	public STAR(): TerminalNode { return this.getToken(PostgreSQLParser.STAR, 0); }
	constructor(ctx: Target_elContext) {
		super(ctx.parent, ctx.invokingState);
		this.copyFrom(ctx);
	}
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTarget_star) {
			listener.enterTarget_star(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTarget_star) {
			listener.exitTarget_star(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTarget_star) {
			return visitor.visitTarget_star(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Qualified_name_listContext extends ParserRuleContext {
	public qualified_name(): Qualified_nameContext[];
	public qualified_name(i: number): Qualified_nameContext;
	public qualified_name(i?: number): Qualified_nameContext | Qualified_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Qualified_nameContext);
		} else {
			return this.getRuleContext(i, Qualified_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_qualified_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterQualified_name_list) {
			listener.enterQualified_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitQualified_name_list) {
			listener.exitQualified_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitQualified_name_list) {
			return visitor.visitQualified_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_name_listContext extends ParserRuleContext {
	public table_name(): Table_nameContext[];
	public table_name(i: number): Table_nameContext;
	public table_name(i?: number): Table_nameContext | Table_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Table_nameContext);
		} else {
			return this.getRuleContext(i, Table_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_name_list) {
			listener.enterTable_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_name_list) {
			listener.exitTable_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_name_list) {
			return visitor.visitTable_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Schema_name_listContext extends ParserRuleContext {
	public schema_name(): Schema_nameContext[];
	public schema_name(i: number): Schema_nameContext;
	public schema_name(i?: number): Schema_nameContext | Schema_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Schema_nameContext);
		} else {
			return this.getRuleContext(i, Schema_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_schema_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSchema_name_list) {
			listener.enterSchema_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSchema_name_list) {
			listener.exitSchema_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSchema_name_list) {
			return visitor.visitSchema_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Database_nameListContext extends ParserRuleContext {
	public database_name(): Database_nameContext[];
	public database_name(i: number): Database_nameContext;
	public database_name(i?: number): Database_nameContext | Database_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Database_nameContext);
		} else {
			return this.getRuleContext(i, Database_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_database_nameList; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDatabase_nameList) {
			listener.enterDatabase_nameList(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDatabase_nameList) {
			listener.exitDatabase_nameList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDatabase_nameList) {
			return visitor.visitDatabase_nameList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_name_listContext extends ParserRuleContext {
	public procedure_name(): Procedure_nameContext[];
	public procedure_name(i: number): Procedure_nameContext;
	public procedure_name(i?: number): Procedure_nameContext | Procedure_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Procedure_nameContext);
		} else {
			return this.getRuleContext(i, Procedure_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_name_list) {
			listener.enterProcedure_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_name_list) {
			listener.exitProcedure_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_name_list) {
			return visitor.visitProcedure_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Tablespace_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablespace_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablespace_name_create) {
			listener.enterTablespace_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablespace_name_create) {
			listener.exitTablespace_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablespace_name_create) {
			return visitor.visitTablespace_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Tablespace_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablespace_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablespace_name) {
			listener.enterTablespace_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablespace_name) {
			listener.exitTablespace_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablespace_name) {
			return visitor.visitTablespace_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_name_create) {
			listener.enterTable_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_name_create) {
			listener.exitTable_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_name_create) {
			return visitor.visitTable_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Table_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_table_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTable_name) {
			listener.enterTable_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTable_name) {
			listener.exitTable_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTable_name) {
			return visitor.visitTable_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class View_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_view_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterView_name_create) {
			listener.enterView_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitView_name_create) {
			listener.exitView_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitView_name_create) {
			return visitor.visitView_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class View_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_view_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterView_name) {
			listener.enterView_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitView_name) {
			listener.exitView_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitView_name) {
			return visitor.visitView_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Qualified_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_qualified_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterQualified_name) {
			listener.enterQualified_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitQualified_name) {
			listener.exitQualified_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitQualified_name) {
			return visitor.visitQualified_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Tablespace_name_listContext extends ParserRuleContext {
	public tablespace_name(): Tablespace_nameContext[];
	public tablespace_name(i: number): Tablespace_nameContext;
	public tablespace_name(i?: number): Tablespace_nameContext | Tablespace_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Tablespace_nameContext);
		} else {
			return this.getRuleContext(i, Tablespace_nameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_tablespace_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterTablespace_name_list) {
			listener.enterTablespace_name_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitTablespace_name_list) {
			listener.exitTablespace_name_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitTablespace_name_list) {
			return visitor.visitTablespace_name_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Name_listContext extends ParserRuleContext {
	public name(): NameContext[];
	public name(i: number): NameContext;
	public name(i?: number): NameContext | NameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(NameContext);
		} else {
			return this.getRuleContext(i, NameContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_name_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterName_list) {
			listener.enterName_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitName_list) {
			listener.exitName_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitName_list) {
			return visitor.visitName_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Database_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_database_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDatabase_name_create) {
			listener.enterDatabase_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDatabase_name_create) {
			listener.exitDatabase_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDatabase_name_create) {
			return visitor.visitDatabase_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Database_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_database_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDatabase_name) {
			listener.enterDatabase_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDatabase_name) {
			listener.exitDatabase_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDatabase_name) {
			return visitor.visitDatabase_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Schema_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	public attrs(): AttrsContext | undefined {
		return this.tryGetRuleContext(0, AttrsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_schema_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSchema_name) {
			listener.enterSchema_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSchema_name) {
			listener.exitSchema_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSchema_name) {
			return visitor.visitSchema_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_name_create) {
			listener.enterRoutine_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_name_create) {
			listener.exitRoutine_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_name_create) {
			return visitor.visitRoutine_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Routine_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_routine_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoutine_name) {
			listener.enterRoutine_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoutine_name) {
			listener.exitRoutine_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoutine_name) {
			return visitor.visitRoutine_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_nameContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_function_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_name) {
			listener.enterProcedure_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_name) {
			listener.exitProcedure_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_name) {
			return visitor.visitProcedure_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Procedure_name_createContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_function_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_procedure_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProcedure_name_create) {
			listener.enterProcedure_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProcedure_name_create) {
			listener.exitProcedure_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProcedure_name_create) {
			return visitor.visitProcedure_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_nameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_name) {
			listener.enterColumn_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_name) {
			listener.exitColumn_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_name) {
			return visitor.visitColumn_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Column_name_createContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_column_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColumn_name_create) {
			listener.enterColumn_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColumn_name_create) {
			listener.exitColumn_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColumn_name_create) {
			return visitor.visitColumn_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NameContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterName) {
			listener.enterName(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitName) {
			listener.exitName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitName) {
			return visitor.visitName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Attr_nameContext extends ParserRuleContext {
	public collabel(): CollabelContext {
		return this.getRuleContext(0, CollabelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_attr_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAttr_name) {
			listener.enterAttr_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAttr_name) {
			listener.exitAttr_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAttr_name) {
			return visitor.visitAttr_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class File_nameContext extends ParserRuleContext {
	public sconst(): SconstContext {
		return this.getRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_file_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFile_name) {
			listener.enterFile_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFile_name) {
			listener.exitFile_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFile_name) {
			return visitor.visitFile_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_name_createContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_function_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_function_name_create; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunction_name_create) {
			listener.enterFunction_name_create(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunction_name_create) {
			listener.exitFunction_name_create(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunction_name_create) {
			return visitor.visitFunction_name_create(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Function_nameContext extends ParserRuleContext {
	public type_function_name(): Type_function_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_function_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_function_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFunction_name) {
			listener.enterFunction_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFunction_name) {
			listener.exitFunction_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFunction_name) {
			return visitor.visitFunction_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Usual_nameContext extends ParserRuleContext {
	public type_usual_name(): Type_usual_nameContext | undefined {
		return this.tryGetRuleContext(0, Type_usual_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public indirection(): IndirectionContext | undefined {
		return this.tryGetRuleContext(0, IndirectionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_usual_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUsual_name) {
			listener.enterUsual_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUsual_name) {
			listener.exitUsual_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUsual_name) {
			return visitor.visitUsual_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AexprconstContext extends ParserRuleContext {
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	public fconst(): FconstContext | undefined {
		return this.tryGetRuleContext(0, FconstContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public bconst(): BconstContext | undefined {
		return this.tryGetRuleContext(0, BconstContext);
	}
	public xconst(): XconstContext | undefined {
		return this.tryGetRuleContext(0, XconstContext);
	}
	public function_name(): Function_nameContext | undefined {
		return this.tryGetRuleContext(0, Function_nameContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public func_arg_list(): Func_arg_listContext | undefined {
		return this.tryGetRuleContext(0, Func_arg_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_sort_clause(): Opt_sort_clauseContext | undefined {
		return this.tryGetRuleContext(0, Opt_sort_clauseContext);
	}
	public consttypename(): ConsttypenameContext | undefined {
		return this.tryGetRuleContext(0, ConsttypenameContext);
	}
	public constinterval(): ConstintervalContext | undefined {
		return this.tryGetRuleContext(0, ConstintervalContext);
	}
	public opt_interval(): Opt_intervalContext | undefined {
		return this.tryGetRuleContext(0, Opt_intervalContext);
	}
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_aexprconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAexprconst) {
			listener.enterAexprconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAexprconst) {
			listener.exitAexprconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAexprconst) {
			return visitor.visitAexprconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class XconstContext extends ParserRuleContext {
	public HexadecimalStringConstant(): TerminalNode { return this.getToken(PostgreSQLParser.HexadecimalStringConstant, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_xconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterXconst) {
			listener.enterXconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitXconst) {
			listener.exitXconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitXconst) {
			return visitor.visitXconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class BconstContext extends ParserRuleContext {
	public BinaryStringConstant(): TerminalNode { return this.getToken(PostgreSQLParser.BinaryStringConstant, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_bconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterBconst) {
			listener.enterBconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitBconst) {
			listener.exitBconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitBconst) {
			return visitor.visitBconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FconstContext extends ParserRuleContext {
	public Numeric(): TerminalNode { return this.getToken(PostgreSQLParser.Numeric, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_fconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFconst) {
			listener.enterFconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFconst) {
			listener.exitFconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFconst) {
			return visitor.visitFconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IconstContext extends ParserRuleContext {
	public Integral(): TerminalNode { return this.getToken(PostgreSQLParser.Integral, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_iconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIconst) {
			listener.enterIconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIconst) {
			listener.exitIconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIconst) {
			return visitor.visitIconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SconstContext extends ParserRuleContext {
	public anysconst(): AnysconstContext {
		return this.getRuleContext(0, AnysconstContext);
	}
	public opt_uescape(): Opt_uescapeContext | undefined {
		return this.tryGetRuleContext(0, Opt_uescapeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSconst) {
			listener.enterSconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSconst) {
			listener.exitSconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSconst) {
			return visitor.visitSconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnysconstContext extends ParserRuleContext {
	public StringConstant(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.StringConstant, 0); }
	public UnicodeEscapeStringConstant(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.UnicodeEscapeStringConstant, 0); }
	public BeginDollarStringConstant(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.BeginDollarStringConstant, 0); }
	public EndDollarStringConstant(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EndDollarStringConstant, 0); }
	public DollarText(): TerminalNode[];
	public DollarText(i: number): TerminalNode;
	public DollarText(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.DollarText);
		} else {
			return this.getToken(PostgreSQLParser.DollarText, i);
		}
	}
	public EscapeStringConstant(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EscapeStringConstant, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_anysconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAnysconst) {
			listener.enterAnysconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAnysconst) {
			listener.exitAnysconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAnysconst) {
			return visitor.visitAnysconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_uescapeContext extends ParserRuleContext {
	public KW_UESCAPE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UESCAPE, 0); }
	public anysconst(): AnysconstContext {
		return this.getRuleContext(0, AnysconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_uescape; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_uescape) {
			listener.enterOpt_uescape(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_uescape) {
			listener.exitOpt_uescape(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_uescape) {
			return visitor.visitOpt_uescape(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignediconstContext extends ParserRuleContext {
	public iconst(): IconstContext {
		return this.getRuleContext(0, IconstContext);
	}
	public PLUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PLUS, 0); }
	public MINUS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.MINUS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_signediconst; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSignediconst) {
			listener.enterSignediconst(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSignediconst) {
			listener.exitSignediconst(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSignediconst) {
			return visitor.visitSignediconst(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupnameContext extends ParserRuleContext {
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_groupname; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGroupname) {
			listener.enterGroupname(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGroupname) {
			listener.exitGroupname(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGroupname) {
			return visitor.visitGroupname(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoleidContext extends ParserRuleContext {
	public rolespec(): RolespecContext {
		return this.getRuleContext(0, RolespecContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_roleid; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRoleid) {
			listener.enterRoleid(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRoleid) {
			listener.exitRoleid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRoleid) {
			return visitor.visitRoleid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RolespecContext extends ParserRuleContext {
	public nonreservedword(): NonreservedwordContext | undefined {
		return this.tryGetRuleContext(0, NonreservedwordContext);
	}
	public KW_CURRENT_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_USER, 0); }
	public KW_CURRENT_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_ROLE, 0); }
	public KW_SESSION_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION_USER, 0); }
	public KW_PUBLIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLIC, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_rolespec; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRolespec) {
			listener.enterRolespec(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRolespec) {
			listener.exitRolespec(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRolespec) {
			return visitor.visitRolespec(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Role_listContext extends ParserRuleContext {
	public rolespec(): RolespecContext[];
	public rolespec(i: number): RolespecContext;
	public rolespec(i?: number): RolespecContext | RolespecContext[] {
		if (i === undefined) {
			return this.getRuleContexts(RolespecContext);
		} else {
			return this.getRuleContext(i, RolespecContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_role_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterRole_list) {
			listener.enterRole_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitRole_list) {
			listener.exitRole_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitRole_list) {
			return visitor.visitRole_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ColidContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	public col_name_keyword(): Col_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Col_name_keywordContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_colid; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterColid) {
			listener.enterColid(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitColid) {
			listener.exitColid(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitColid) {
			return visitor.visitColid(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_method_choicesContext extends ParserRuleContext {
	public identifier(): IdentifierContext {
		return this.getRuleContext(0, IdentifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_method_choices; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_method_choices) {
			listener.enterIndex_method_choices(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_method_choices) {
			listener.exitIndex_method_choices(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_method_choices) {
			return visitor.visitIndex_method_choices(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Exclude_elementContext extends ParserRuleContext {
	public opt_definition(): Opt_definitionContext | undefined {
		return this.tryGetRuleContext(0, Opt_definitionContext);
	}
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public opt_asc_desc(): Opt_asc_descContext | undefined {
		return this.tryGetRuleContext(0, Opt_asc_descContext);
	}
	public opt_nulls_order(): Opt_nulls_orderContext | undefined {
		return this.tryGetRuleContext(0, Opt_nulls_orderContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exclude_element; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExclude_element) {
			listener.enterExclude_element(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExclude_element) {
			listener.exitExclude_element(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExclude_element) {
			return visitor.visitExclude_element(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Index_paramentersContext extends ParserRuleContext {
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	public reloptions(): ReloptionsContext | undefined {
		return this.tryGetRuleContext(0, ReloptionsContext);
	}
	public optconstablespace(): OptconstablespaceContext | undefined {
		return this.tryGetRuleContext(0, OptconstablespaceContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_index_paramenters; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIndex_paramenters) {
			listener.enterIndex_paramenters(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIndex_paramenters) {
			listener.exitIndex_paramenters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIndex_paramenters) {
			return visitor.visitIndex_paramenters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Type_function_nameContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_type_function_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterType_function_name) {
			listener.enterType_function_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitType_function_name) {
			listener.exitType_function_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitType_function_name) {
			return visitor.visitType_function_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Type_usual_nameContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_type_usual_name; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterType_usual_name) {
			listener.enterType_usual_name(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitType_usual_name) {
			listener.exitType_usual_name(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitType_usual_name) {
			return visitor.visitType_usual_name(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Nonreservedword_columnContext extends ParserRuleContext {
	public column_name(): Column_nameContext | undefined {
		return this.tryGetRuleContext(0, Column_nameContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_nonreservedword_column; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNonreservedword_column) {
			listener.enterNonreservedword_column(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNonreservedword_column) {
			listener.exitNonreservedword_column(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNonreservedword_column) {
			return visitor.visitNonreservedword_column(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NonreservedwordContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	public col_name_keyword(): Col_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Col_name_keywordContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_nonreservedword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterNonreservedword) {
			listener.enterNonreservedword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitNonreservedword) {
			listener.exitNonreservedword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitNonreservedword) {
			return visitor.visitNonreservedword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollabelContext extends ParserRuleContext {
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	public col_name_keyword(): Col_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Col_name_keywordContext);
	}
	public type_func_name_keyword(): Type_func_name_keywordContext | undefined {
		return this.tryGetRuleContext(0, Type_func_name_keywordContext);
	}
	public reserved_keyword(): Reserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Reserved_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_collabel; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCollabel) {
			listener.enterCollabel(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCollabel) {
			listener.exitCollabel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCollabel) {
			return visitor.visitCollabel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IdentifierContext extends ParserRuleContext {
	public Identifier(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.Identifier, 0); }
	public opt_uescape(): Opt_uescapeContext | undefined {
		return this.tryGetRuleContext(0, Opt_uescapeContext);
	}
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public QuotedIdentifier(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.QuotedIdentifier, 0); }
	public UnicodeQuotedIdentifier(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.UnicodeQuotedIdentifier, 0); }
	public plsqlvariablename(): PlsqlvariablenameContext | undefined {
		return this.tryGetRuleContext(0, PlsqlvariablenameContext);
	}
	public plsqlidentifier(): PlsqlidentifierContext | undefined {
		return this.tryGetRuleContext(0, PlsqlidentifierContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_identifier; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterIdentifier) {
			listener.enterIdentifier(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitIdentifier) {
			listener.exitIdentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitIdentifier) {
			return visitor.visitIdentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PlsqlidentifierContext extends ParserRuleContext {
	public PLSQLIDENTIFIER(): TerminalNode { return this.getToken(PostgreSQLParser.PLSQLIDENTIFIER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsqlidentifier; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsqlidentifier) {
			listener.enterPlsqlidentifier(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsqlidentifier) {
			listener.exitPlsqlidentifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsqlidentifier) {
			return visitor.visitPlsqlidentifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Unreserved_keywordContext extends ParserRuleContext {
	public KW_ABORT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABORT, 0); }
	public KW_ABSOLUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABSOLUTE, 0); }
	public KW_ACCESS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACCESS, 0); }
	public KW_ACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ACTION, 0); }
	public KW_ADD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADD, 0); }
	public KW_ADMIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ADMIN, 0); }
	public KW_AFTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AFTER, 0); }
	public KW_AGGREGATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AGGREGATE, 0); }
	public KW_ALSO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALSO, 0); }
	public KW_ALTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALTER, 0); }
	public KW_ALWAYS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALWAYS, 0); }
	public KW_ASSERTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASSERTION, 0); }
	public KW_ASSIGNMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASSIGNMENT, 0); }
	public KW_AT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AT, 0); }
	public KW_ATTACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ATTACH, 0); }
	public KW_ATTRIBUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ATTRIBUTE, 0); }
	public KW_BACKWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BACKWARD, 0); }
	public KW_BEFORE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BEFORE, 0); }
	public KW_BEGIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BEGIN, 0); }
	public KW_BUFFER_USAGE_LIMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BUFFER_USAGE_LIMIT, 0); }
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public KW_CACHE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CACHE, 0); }
	public KW_CALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CALL, 0); }
	public KW_CALLED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CALLED, 0); }
	public KW_CASCADE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADE, 0); }
	public KW_CASCADED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASCADED, 0); }
	public KW_CATALOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CATALOG, 0); }
	public KW_CHAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHAIN, 0); }
	public KW_CHARACTERISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHARACTERISTICS, 0); }
	public KW_CHECKPOINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHECKPOINT, 0); }
	public KW_CLASS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLASS, 0); }
	public KW_CLOSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLOSE, 0); }
	public KW_CLUSTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLUSTER, 0); }
	public KW_COLUMNS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMNS, 0); }
	public KW_COMMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMENT, 0); }
	public KW_COMMENTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMENTS, 0); }
	public KW_COMMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMIT, 0); }
	public KW_COMMITTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMITTED, 0); }
	public KW_CONFIGURATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFIGURATION, 0); }
	public KW_CONFLICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONFLICT, 0); }
	public KW_CONNECTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONNECTION, 0); }
	public KW_CONSTRAINTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINTS, 0); }
	public KW_CONTENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTENT, 0); }
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTINUE, 0); }
	public KW_CONVERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONVERSION, 0); }
	public KW_COPY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COPY, 0); }
	public KW_COST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COST, 0); }
	public KW_CSV(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CSV, 0); }
	public KW_CUBE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CUBE, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_CURSOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURSOR, 0); }
	public KW_CYCLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CYCLE, 0); }
	public KW_DATA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATA, 0); }
	public KW_DATABASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DATABASE, 0); }
	public KW_DAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DAY, 0); }
	public KW_DEALLOCATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEALLOCATE, 0); }
	public KW_DECLARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DECLARE, 0); }
	public KW_DEFAULTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULTS, 0); }
	public KW_DEFERRED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRED, 0); }
	public KW_DEFINER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFINER, 0); }
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_DELIMITER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELIMITER, 0); }
	public KW_DELIMITERS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELIMITERS, 0); }
	public KW_DEPENDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEPENDS, 0); }
	public KW_DETACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DETACH, 0); }
	public KW_DICTIONARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DICTIONARY, 0); }
	public KW_DISABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISABLE, 0); }
	public KW_DISCARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISCARD, 0); }
	public KW_DOCUMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOCUMENT, 0); }
	public KW_DOMAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOMAIN, 0); }
	public KW_DOUBLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DOUBLE, 0); }
	public KW_DROP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DROP, 0); }
	public KW_EACH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EACH, 0); }
	public KW_ENABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENABLE, 0); }
	public KW_ENCODING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENCODING, 0); }
	public KW_ENCRYPTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENCRYPTED, 0); }
	public KW_ENUM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ENUM, 0); }
	public KW_ESCAPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ESCAPE, 0); }
	public KW_EVENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EVENT, 0); }
	public KW_EXCLUDE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCLUDE, 0); }
	public KW_EXCLUDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCLUDING, 0); }
	public KW_EXCLUSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCLUSIVE, 0); }
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public KW_EXPLAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXPLAIN, 0); }
	public KW_EXPRESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXPRESSION, 0); }
	public KW_EXTENSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTENSION, 0); }
	public KW_EXTERNAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTERNAL, 0); }
	public KW_FAMILY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FAMILY, 0); }
	public KW_FILTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FILTER, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_FOLLOWING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOLLOWING, 0); }
	public KW_FORCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORCE, 0); }
	public KW_FORWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORWARD, 0); }
	public KW_FUNCTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTION, 0); }
	public KW_FUNCTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FUNCTIONS, 0); }
	public KW_GENERATED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GENERATED, 0); }
	public KW_GLOBAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GLOBAL, 0); }
	public KW_GRANTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GRANTED, 0); }
	public KW_GROUPS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUPS, 0); }
	public KW_HANDLER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HANDLER, 0); }
	public KW_HEADER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HEADER, 0); }
	public KW_HOLD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HOLD, 0); }
	public KW_HOUR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HOUR, 0); }
	public KW_IDENTITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IDENTITY, 0); }
	public KW_IF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IF, 0); }
	public KW_IMMEDIATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMEDIATE, 0); }
	public KW_IMMUTABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMMUTABLE, 0); }
	public KW_IMPLICIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMPLICIT, 0); }
	public KW_IMPORT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IMPORT, 0); }
	public KW_INCLUDE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INCLUDE, 0); }
	public KW_INCLUDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INCLUDING, 0); }
	public KW_INCREMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INCREMENT, 0); }
	public KW_INDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEX, 0); }
	public KW_INDEXES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INDEXES, 0); }
	public KW_INHERIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INHERIT, 0); }
	public KW_INHERITS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INHERITS, 0); }
	public KW_INLINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INLINE, 0); }
	public KW_INPUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INPUT, 0); }
	public KW_INSENSITIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSENSITIVE, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_INSTEAD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSTEAD, 0); }
	public KW_INVOKER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INVOKER, 0); }
	public KW_ISOLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISOLATION, 0); }
	public KW_KEY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_KEY, 0); }
	public KW_LABEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LABEL, 0); }
	public KW_LANGUAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LANGUAGE, 0); }
	public KW_LARGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LARGE, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LAST, 0); }
	public KW_LEAKPROOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEAKPROOF, 0); }
	public KW_LEVEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEVEL, 0); }
	public KW_LISTEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LISTEN, 0); }
	public KW_LOAD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOAD, 0); }
	public KW_LOCAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCAL, 0); }
	public KW_LOCATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCATION, 0); }
	public KW_LOCK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCK, 0); }
	public KW_LOCKED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCKED, 0); }
	public KW_LOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOGGED, 0); }
	public KW_MAPPING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAPPING, 0); }
	public KW_MATCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATCH, 0); }
	public KW_MATERIALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MATERIALIZED, 0); }
	public KW_MAXVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MAXVALUE, 0); }
	public KW_METHOD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_METHOD, 0); }
	public KW_MINUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINUTE, 0); }
	public KW_MINVALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MINVALUE, 0); }
	public KW_MODE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MODE, 0); }
	public KW_MONTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MONTH, 0); }
	public KW_MOVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MOVE, 0); }
	public KW_NAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NAME, 0); }
	public KW_NAMES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NAMES, 0); }
	public KW_NEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEW, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	public KW_NFC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFC, 0); }
	public KW_NFD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFD, 0); }
	public KW_NFKC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFKC, 0); }
	public KW_NFKD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NFKD, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_NORMALIZED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NORMALIZED, 0); }
	public KW_NOTHING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTHING, 0); }
	public KW_NOTIFY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTIFY, 0); }
	public KW_NOWAIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOWAIT, 0); }
	public KW_NULLS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULLS, 0); }
	public KW_OBJECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OBJECT, 0); }
	public KW_OF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OF, 0); }
	public KW_OFF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OFF, 0); }
	public KW_OIDS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OIDS, 0); }
	public KW_OLD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OLD, 0); }
	public KW_OPERATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPERATOR, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_OPTIONS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTIONS, 0); }
	public KW_ORDINALITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ORDINALITY, 0); }
	public KW_OTHERS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OTHERS, 0); }
	public KW_OVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVER, 0); }
	public KW_OVERRIDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERRIDING, 0); }
	public KW_OWNED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNED, 0); }
	public KW_OWNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OWNER, 0); }
	public KW_PARALLEL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARALLEL, 0); }
	public KW_PARSER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARSER, 0); }
	public KW_PARTIAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTIAL, 0); }
	public KW_PARTITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PARTITION, 0); }
	public KW_PASSING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PASSING, 0); }
	public KW_PASSWORD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PASSWORD, 0); }
	public KW_PLANS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PLANS, 0); }
	public KW_POLICY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POLICY, 0); }
	public KW_PRECEDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRECEDING, 0); }
	public KW_PREPARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PREPARE, 0); }
	public KW_PREPARED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PREPARED, 0); }
	public KW_PRESERVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRESERVE, 0); }
	public KW_PRIOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIOR, 0); }
	public KW_PRIVILEGES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIVILEGES, 0); }
	public KW_PROCEDURAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURAL, 0); }
	public KW_PROCEDURE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURE, 0); }
	public KW_PROCEDURES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROCEDURES, 0); }
	public KW_PROGRAM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PROGRAM, 0); }
	public KW_PUBLICATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PUBLICATION, 0); }
	public KW_QUOTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_QUOTE, 0); }
	public KW_RANGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RANGE, 0); }
	public KW_READ(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_READ, 0); }
	public KW_REASSIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REASSIGN, 0); }
	public KW_RECHECK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RECHECK, 0); }
	public KW_RECURSIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RECURSIVE, 0); }
	public KW_REF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REF, 0); }
	public KW_REFERENCING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFERENCING, 0); }
	public KW_REFRESH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFRESH, 0); }
	public KW_REINDEX(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REINDEX, 0); }
	public KW_RELATIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELATIVE, 0); }
	public KW_RELEASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELEASE, 0); }
	public KW_RENAME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RENAME, 0); }
	public KW_REPEATABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPEATABLE, 0); }
	public KW_REPLACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLACE, 0); }
	public KW_REPLICA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REPLICA, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_RESTART(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTART, 0); }
	public KW_RESTRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESTRICT, 0); }
	public KW_RETURNS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RETURNS, 0); }
	public KW_REVOKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REVOKE, 0); }
	public KW_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLE, 0); }
	public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLLBACK, 0); }
	public KW_ROLLUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLLUP, 0); }
	public KW_ROUTINE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINE, 0); }
	public KW_ROUTINES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROUTINES, 0); }
	public KW_ROWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWS, 0); }
	public KW_RULE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RULE, 0); }
	public KW_SAVEPOINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SAVEPOINT, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public KW_SCHEMAS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMAS, 0); }
	public KW_SCROLL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCROLL, 0); }
	public KW_SEARCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEARCH, 0); }
	public KW_SECOND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECOND, 0); }
	public KW_SECURITY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SECURITY, 0); }
	public KW_SEQUENCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCE, 0); }
	public KW_SEQUENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SEQUENCES, 0); }
	public KW_SERIALIZABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERIALIZABLE, 0); }
	public KW_SERVER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SERVER, 0); }
	public KW_SESSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_SETS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SETS, 0); }
	public KW_SHARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SHARE, 0); }
	public KW_SHOW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SHOW, 0); }
	public KW_SIMPLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SIMPLE, 0); }
	public KW_SKIP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SKIP, 0); }
	public KW_SKIP_LOCKED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SKIP_LOCKED, 0); }
	public KW_SNAPSHOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SNAPSHOT, 0); }
	public KW_SQL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SQL, 0); }
	public KW_STABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STABLE, 0); }
	public KW_STANDALONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STANDALONE, 0); }
	public KW_START(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_START, 0); }
	public KW_STATEMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATEMENT, 0); }
	public KW_STATISTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STATISTICS, 0); }
	public KW_STDIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STDIN, 0); }
	public KW_STDOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STDOUT, 0); }
	public KW_STORAGE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORAGE, 0); }
	public KW_STORED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STORED, 0); }
	public KW_STRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRICT, 0); }
	public KW_STRIP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRIP, 0); }
	public KW_SUBSCRIPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSCRIPTION, 0); }
	public KW_SUPPORT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUPPORT, 0); }
	public KW_SYSID(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSID, 0); }
	public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSTEM, 0); }
	public KW_TABLES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLES, 0); }
	public KW_TABLESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESPACE, 0); }
	public KW_TEMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMP, 0); }
	public KW_TEMPLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPLATE, 0); }
	public KW_TEMPORARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEMPORARY, 0); }
	public KW_TEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TEXT, 0); }
	public KW_TIES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIES, 0); }
	public KW_TRANSACTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSACTION, 0); }
	public KW_TRANSFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRANSFORM, 0); }
	public KW_TRIGGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIGGER, 0); }
	public KW_TRUNCATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUNCATE, 0); }
	public KW_TRUSTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUSTED, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_TYPES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPES, 0); }
	public KW_UESCAPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UESCAPE, 0); }
	public KW_UNBOUNDED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNBOUNDED, 0); }
	public KW_UNCOMMITTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNCOMMITTED, 0); }
	public KW_UNENCRYPTED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNENCRYPTED, 0); }
	public KW_UNKNOWN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNKNOWN, 0); }
	public KW_UNLISTEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNLISTEN, 0); }
	public KW_UNLOGGED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNLOGGED, 0); }
	public KW_UNTIL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNTIL, 0); }
	public KW_UPDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_VACUUM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VACUUM, 0); }
	public KW_VALID(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALID, 0); }
	public KW_VALIDATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALIDATE, 0); }
	public KW_VALIDATOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALIDATOR, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	public KW_VARYING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARYING, 0); }
	public KW_VERSION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VERSION, 0); }
	public KW_VIEW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEW, 0); }
	public KW_VIEWS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VIEWS, 0); }
	public KW_VOLATILE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VOLATILE, 0); }
	public KW_WHITESPACE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WHITESPACE, 0); }
	public KW_WITHIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHIN, 0); }
	public KW_WITHOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITHOUT, 0); }
	public KW_WORK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WORK, 0); }
	public KW_WRAPPER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRAPPER, 0); }
	public KW_WRITE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WRITE, 0); }
	public KW_XML(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XML, 0); }
	public KW_YEAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_YEAR, 0); }
	public KW_YES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_YES, 0); }
	public KW_ZONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ZONE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_unreserved_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterUnreserved_keyword) {
			listener.enterUnreserved_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitUnreserved_keyword) {
			listener.exitUnreserved_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitUnreserved_keyword) {
			return visitor.visitUnreserved_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Col_name_keywordContext extends ParserRuleContext {
	public KW_BETWEEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BETWEEN, 0); }
	public KW_BIGINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BIGINT, 0); }
	public bit(): BitContext | undefined {
		return this.tryGetRuleContext(0, BitContext);
	}
	public KW_BOOLEAN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BOOLEAN, 0); }
	public KW_CHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHAR, 0); }
	public character(): CharacterContext | undefined {
		return this.tryGetRuleContext(0, CharacterContext);
	}
	public KW_COALESCE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COALESCE, 0); }
	public KW_DEC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEC, 0); }
	public KW_DECIMAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DECIMAL, 0); }
	public KW_EXISTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXISTS, 0); }
	public KW_EXTRACT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXTRACT, 0); }
	public KW_FLOAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FLOAT, 0); }
	public KW_GREATEST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GREATEST, 0); }
	public KW_GROUPING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUPING, 0); }
	public KW_INOUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INOUT, 0); }
	public KW_INT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INT, 0); }
	public KW_INTEGER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INTEGER, 0); }
	public KW_INTERVAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INTERVAL, 0); }
	public KW_LEAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEAST, 0); }
	public KW_NATIONAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NATIONAL, 0); }
	public KW_NCHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NCHAR, 0); }
	public KW_NONE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NONE, 0); }
	public KW_NORMALIZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NORMALIZE, 0); }
	public KW_NULLIF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULLIF, 0); }
	public numeric(): NumericContext | undefined {
		return this.tryGetRuleContext(0, NumericContext);
	}
	public KW_OUT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OUT, 0); }
	public KW_OVERLAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERLAY, 0); }
	public KW_POSITION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_POSITION, 0); }
	public KW_PRECISION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRECISION, 0); }
	public KW_REAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REAL, 0); }
	public KW_ROW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROW, 0); }
	public KW_SETOF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SETOF, 0); }
	public KW_SMALLINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SMALLINT, 0); }
	public KW_SUBSTRING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SUBSTRING, 0); }
	public KW_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIME, 0); }
	public KW_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TIMESTAMP, 0); }
	public KW_TREAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TREAT, 0); }
	public KW_TRIM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRIM, 0); }
	public KW_VALUES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUES, 0); }
	public KW_VARCHAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARCHAR, 0); }
	public KW_XMLATTRIBUTES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLATTRIBUTES, 0); }
	public KW_XMLCONCAT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLCONCAT, 0); }
	public KW_XMLELEMENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLELEMENT, 0); }
	public KW_XMLEXISTS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLEXISTS, 0); }
	public KW_XMLFOREST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLFOREST, 0); }
	public KW_XMLNAMESPACES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLNAMESPACES, 0); }
	public KW_XMLPARSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLPARSE, 0); }
	public KW_XMLPI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLPI, 0); }
	public KW_XMLROOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLROOT, 0); }
	public KW_XMLSERIALIZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLSERIALIZE, 0); }
	public KW_XMLTABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_XMLTABLE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_col_name_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCol_name_keyword) {
			listener.enterCol_name_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCol_name_keyword) {
			listener.exitCol_name_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCol_name_keyword) {
			return visitor.visitCol_name_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Type_func_name_keywordContext extends ParserRuleContext {
	public KW_AUTHORIZATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AUTHORIZATION, 0); }
	public KW_BINARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BINARY, 0); }
	public KW_COLLATION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATION, 0); }
	public KW_CONCURRENTLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONCURRENTLY, 0); }
	public KW_CROSS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CROSS, 0); }
	public KW_CURRENT_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_SCHEMA, 0); }
	public KW_FREEZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FREEZE, 0); }
	public KW_FULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FULL, 0); }
	public KW_ILIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ILIKE, 0); }
	public KW_INNER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INNER, 0); }
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IS, 0); }
	public KW_ISNULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ISNULL, 0); }
	public KW_JOIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_JOIN, 0); }
	public KW_LEFT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEFT, 0); }
	public KW_LIKE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIKE, 0); }
	public KW_NATURAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NATURAL, 0); }
	public KW_NOTNULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTNULL, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OUTER, 0); }
	public KW_OVERLAPS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERLAPS, 0); }
	public KW_RIGHT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RIGHT, 0); }
	public KW_SIMILAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SIMILAR, 0); }
	public KW_TABLESAMPLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLESAMPLE, 0); }
	public KW_VERBOSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VERBOSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_type_func_name_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterType_func_name_keyword) {
			listener.enterType_func_name_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitType_func_name_keyword) {
			listener.exitType_func_name_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitType_func_name_keyword) {
			return visitor.visitType_func_name_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Reserved_keywordContext extends ParserRuleContext {
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_ANALYSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANALYSE, 0); }
	public KW_ANALYZE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANALYZE, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AND, 0); }
	public KW_ANY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ANY, 0); }
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ARRAY, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	public KW_ASC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASC, 0); }
	public KW_ASYMMETRIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASYMMETRIC, 0); }
	public KW_BOTH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BOTH, 0); }
	public KW_CASE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CASE, 0); }
	public KW_CAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CAST, 0); }
	public KW_CHECK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHECK, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMN, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public KW_CREATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CREATE, 0); }
	public KW_CURRENT_CATALOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_CATALOG, 0); }
	public KW_CURRENT_DATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_DATE, 0); }
	public KW_CURRENT_ROLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_ROLE, 0); }
	public KW_CURRENT_TIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_TIME, 0); }
	public KW_CURRENT_TIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_TIMESTAMP, 0); }
	public KW_CURRENT_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT_USER, 0); }
	public KW_DEFERRABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFERRABLE, 0); }
	public KW_DESC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DESC, 0); }
	public KW_DISTINCT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DISTINCT, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DO, 0); }
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ELSE, 0); }
	public KW_END(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_END, 0); }
	public KW_EXCEPT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCEPT, 0); }
	public KW_FALSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FALSE, 0); }
	public KW_FETCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FETCH, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public KW_FOREIGN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOREIGN, 0); }
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_GRANT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GRANT, 0); }
	public KW_GROUP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GROUP, 0); }
	public KW_HAVING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_HAVING, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	public KW_INITIALLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INITIALLY, 0); }
	public KW_INTERSECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INTERSECT, 0); }
	public KW_LATERAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LATERAL, 0); }
	public KW_LEADING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LEADING, 0); }
	public KW_LIMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LIMIT, 0); }
	public KW_LOCALTIME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCALTIME, 0); }
	public KW_LOCALTIMESTAMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOCALTIMESTAMP, 0); }
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	public KW_OFFSET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OFFSET, 0); }
	public KW_ON(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ON, 0); }
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public KW_OR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OR, 0); }
	public KW_ORDER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ORDER, 0); }
	public KW_PLACING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PLACING, 0); }
	public KW_PRIMARY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIMARY, 0); }
	public KW_REFERENCES(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REFERENCES, 0); }
	public KW_RETURNING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RETURNING, 0); }
	public KW_SELECT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SELECT, 0); }
	public KW_SESSION_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SESSION_USER, 0); }
	public KW_SOME(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SOME, 0); }
	public KW_SYMMETRIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYMMETRIC, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public KW_THEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_THEN, 0); }
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_TRAILING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRAILING, 0); }
	public KW_TRUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TRUE, 0); }
	public KW_UNION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNION, 0); }
	public KW_UNIQUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_UNIQUE, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public KW_VARIADIC(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARIADIC, 0); }
	public KW_WHEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WHEN, 0); }
	public KW_WHERE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WHERE, 0); }
	public KW_WINDOW(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WINDOW, 0); }
	public KW_WITH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WITH, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_reserved_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterReserved_keyword) {
			listener.enterReserved_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitReserved_keyword) {
			listener.exitReserved_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitReserved_keyword) {
			return visitor.visitReserved_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Pl_functionContext extends ParserRuleContext {
	public comp_options(): Comp_optionsContext {
		return this.getRuleContext(0, Comp_optionsContext);
	}
	public pl_block(): Pl_blockContext {
		return this.getRuleContext(0, Pl_blockContext);
	}
	public opt_semi(): Opt_semiContext {
		return this.getRuleContext(0, Opt_semiContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_pl_function; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPl_function) {
			listener.enterPl_function(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPl_function) {
			listener.exitPl_function(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPl_function) {
			return visitor.visitPl_function(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Comp_optionsContext extends ParserRuleContext {
	public comp_option(): Comp_optionContext[];
	public comp_option(i: number): Comp_optionContext;
	public comp_option(i?: number): Comp_optionContext | Comp_optionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Comp_optionContext);
		} else {
			return this.getRuleContext(i, Comp_optionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_comp_options; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterComp_options) {
			listener.enterComp_options(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitComp_options) {
			listener.exitComp_options(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitComp_options) {
			return visitor.visitComp_options(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Comp_optionContext extends ParserRuleContext {
	public sharp(): SharpContext {
		return this.getRuleContext(0, SharpContext);
	}
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_DUMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DUMP, 0); }
	public KW_PRINT_STRICT_PARAMS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRINT_STRICT_PARAMS, 0); }
	public option_value(): Option_valueContext | undefined {
		return this.tryGetRuleContext(0, Option_valueContext);
	}
	public KW_VARIABLE_CONFLICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARIABLE_CONFLICT, 0); }
	public KW_ERROR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ERROR, 0); }
	public KW_USE_VARIABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USE_VARIABLE, 0); }
	public KW_USE_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USE_COLUMN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_comp_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterComp_option) {
			listener.enterComp_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitComp_option) {
			listener.exitComp_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitComp_option) {
			return visitor.visitComp_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SharpContext extends ParserRuleContext {
	public Operator(): TerminalNode { return this.getToken(PostgreSQLParser.Operator, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sharp; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSharp) {
			listener.enterSharp(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSharp) {
			listener.exitSharp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSharp) {
			return visitor.visitSharp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Option_valueContext extends ParserRuleContext {
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public reserved_keyword(): Reserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Reserved_keywordContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	public unreserved_keyword(): Unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Unreserved_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_option_value; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOption_value) {
			listener.enterOption_value(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOption_value) {
			listener.exitOption_value(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOption_value) {
			return visitor.visitOption_value(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_semiContext extends ParserRuleContext {
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_semi; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_semi) {
			listener.enterOpt_semi(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_semi) {
			listener.exitOpt_semi(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_semi) {
			return visitor.visitOpt_semi(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Pl_blockContext extends ParserRuleContext {
	public decl_sect(): Decl_sectContext {
		return this.getRuleContext(0, Decl_sectContext);
	}
	public KW_BEGIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_BEGIN, 0); }
	public proc_sect(): Proc_sectContext {
		return this.getRuleContext(0, Proc_sectContext);
	}
	public exception_sect(): Exception_sectContext {
		return this.getRuleContext(0, Exception_sectContext);
	}
	public KW_END(): TerminalNode { return this.getToken(PostgreSQLParser.KW_END, 0); }
	public opt_label(): Opt_labelContext {
		return this.getRuleContext(0, Opt_labelContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_pl_block; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPl_block) {
			listener.enterPl_block(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPl_block) {
			listener.exitPl_block(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPl_block) {
			return visitor.visitPl_block(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_sectContext extends ParserRuleContext {
	public opt_block_label(): Opt_block_labelContext {
		return this.getRuleContext(0, Opt_block_labelContext);
	}
	public decl_start(): Decl_startContext | undefined {
		return this.tryGetRuleContext(0, Decl_startContext);
	}
	public decl_stmts(): Decl_stmtsContext | undefined {
		return this.tryGetRuleContext(0, Decl_stmtsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_sect; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_sect) {
			listener.enterDecl_sect(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_sect) {
			listener.exitDecl_sect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_sect) {
			return visitor.visitDecl_sect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_startContext extends ParserRuleContext {
	public KW_DECLARE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DECLARE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_start; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_start) {
			listener.enterDecl_start(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_start) {
			listener.exitDecl_start(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_start) {
			return visitor.visitDecl_start(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_stmtsContext extends ParserRuleContext {
	public decl_stmt(): Decl_stmtContext[];
	public decl_stmt(i: number): Decl_stmtContext;
	public decl_stmt(i?: number): Decl_stmtContext | Decl_stmtContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Decl_stmtContext);
		} else {
			return this.getRuleContext(i, Decl_stmtContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_stmts; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_stmts) {
			listener.enterDecl_stmts(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_stmts) {
			listener.exitDecl_stmts(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_stmts) {
			return visitor.visitDecl_stmts(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Label_declContext extends ParserRuleContext {
	public LESS_LESS(): TerminalNode { return this.getToken(PostgreSQLParser.LESS_LESS, 0); }
	public any_identifier(): Any_identifierContext {
		return this.getRuleContext(0, Any_identifierContext);
	}
	public GREATER_GREATER(): TerminalNode { return this.getToken(PostgreSQLParser.GREATER_GREATER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_label_decl; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLabel_decl) {
			listener.enterLabel_decl(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLabel_decl) {
			listener.exitLabel_decl(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLabel_decl) {
			return visitor.visitLabel_decl(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_stmtContext extends ParserRuleContext {
	public decl_statement(): Decl_statementContext | undefined {
		return this.tryGetRuleContext(0, Decl_statementContext);
	}
	public KW_DECLARE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DECLARE, 0); }
	public label_decl(): Label_declContext | undefined {
		return this.tryGetRuleContext(0, Label_declContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_stmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_stmt) {
			listener.enterDecl_stmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_stmt) {
			listener.exitDecl_stmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_stmt) {
			return visitor.visitDecl_stmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_statementContext extends ParserRuleContext {
	public decl_varname(): Decl_varnameContext {
		return this.getRuleContext(0, Decl_varnameContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public KW_ALIAS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALIAS, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public decl_aliasitem(): Decl_aliasitemContext | undefined {
		return this.tryGetRuleContext(0, Decl_aliasitemContext);
	}
	public decl_const(): Decl_constContext | undefined {
		return this.tryGetRuleContext(0, Decl_constContext);
	}
	public decl_datatype(): Decl_datatypeContext | undefined {
		return this.tryGetRuleContext(0, Decl_datatypeContext);
	}
	public decl_collate(): Decl_collateContext | undefined {
		return this.tryGetRuleContext(0, Decl_collateContext);
	}
	public decl_notnull(): Decl_notnullContext | undefined {
		return this.tryGetRuleContext(0, Decl_notnullContext);
	}
	public decl_defval(): Decl_defvalContext | undefined {
		return this.tryGetRuleContext(0, Decl_defvalContext);
	}
	public opt_scrollable(): Opt_scrollableContext | undefined {
		return this.tryGetRuleContext(0, Opt_scrollableContext);
	}
	public KW_CURSOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURSOR, 0); }
	public decl_cursor_args(): Decl_cursor_argsContext | undefined {
		return this.tryGetRuleContext(0, Decl_cursor_argsContext);
	}
	public decl_is_for(): Decl_is_forContext | undefined {
		return this.tryGetRuleContext(0, Decl_is_forContext);
	}
	public decl_cursor_query(): Decl_cursor_queryContext | undefined {
		return this.tryGetRuleContext(0, Decl_cursor_queryContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_statement; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_statement) {
			listener.enterDecl_statement(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_statement) {
			listener.exitDecl_statement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_statement) {
			return visitor.visitDecl_statement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_scrollableContext extends ParserRuleContext {
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_SCROLL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCROLL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_scrollable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_scrollable) {
			listener.enterOpt_scrollable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_scrollable) {
			listener.exitOpt_scrollable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_scrollable) {
			return visitor.visitOpt_scrollable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_cursor_queryContext extends ParserRuleContext {
	public selectstmt(): SelectstmtContext {
		return this.getRuleContext(0, SelectstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_cursor_query; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_cursor_query) {
			listener.enterDecl_cursor_query(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_cursor_query) {
			listener.exitDecl_cursor_query(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_cursor_query) {
			return visitor.visitDecl_cursor_query(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_cursor_argsContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public decl_cursor_arglist(): Decl_cursor_arglistContext | undefined {
		return this.tryGetRuleContext(0, Decl_cursor_arglistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_cursor_args; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_cursor_args) {
			listener.enterDecl_cursor_args(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_cursor_args) {
			listener.exitDecl_cursor_args(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_cursor_args) {
			return visitor.visitDecl_cursor_args(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_cursor_arglistContext extends ParserRuleContext {
	public decl_cursor_arg(): Decl_cursor_argContext[];
	public decl_cursor_arg(i: number): Decl_cursor_argContext;
	public decl_cursor_arg(i?: number): Decl_cursor_argContext | Decl_cursor_argContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Decl_cursor_argContext);
		} else {
			return this.getRuleContext(i, Decl_cursor_argContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_cursor_arglist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_cursor_arglist) {
			listener.enterDecl_cursor_arglist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_cursor_arglist) {
			listener.exitDecl_cursor_arglist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_cursor_arglist) {
			return visitor.visitDecl_cursor_arglist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_cursor_argContext extends ParserRuleContext {
	public decl_varname(): Decl_varnameContext {
		return this.getRuleContext(0, Decl_varnameContext);
	}
	public decl_datatype(): Decl_datatypeContext {
		return this.getRuleContext(0, Decl_datatypeContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_cursor_arg; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_cursor_arg) {
			listener.enterDecl_cursor_arg(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_cursor_arg) {
			listener.exitDecl_cursor_arg(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_cursor_arg) {
			return visitor.visitDecl_cursor_arg(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_is_forContext extends ParserRuleContext {
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IS, 0); }
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_is_for; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_is_for) {
			listener.enterDecl_is_for(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_is_for) {
			listener.exitDecl_is_for(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_is_for) {
			return visitor.visitDecl_is_for(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_aliasitemContext extends ParserRuleContext {
	public PARAM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PARAM, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_aliasitem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_aliasitem) {
			listener.enterDecl_aliasitem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_aliasitem) {
			listener.exitDecl_aliasitem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_aliasitem) {
			return visitor.visitDecl_aliasitem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_varnameContext extends ParserRuleContext {
	public any_identifier(): Any_identifierContext {
		return this.getRuleContext(0, Any_identifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_varname; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_varname) {
			listener.enterDecl_varname(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_varname) {
			listener.exitDecl_varname(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_varname) {
			return visitor.visitDecl_varname(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_constContext extends ParserRuleContext {
	public KW_CONSTANT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTANT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_const; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_const) {
			listener.enterDecl_const(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_const) {
			listener.exitDecl_const(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_const) {
			return visitor.visitDecl_const(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_datatypeContext extends ParserRuleContext {
	public typename(): TypenameContext {
		return this.getRuleContext(0, TypenameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_datatype; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_datatype) {
			listener.enterDecl_datatype(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_datatype) {
			listener.exitDecl_datatype(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_datatype) {
			return visitor.visitDecl_datatype(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_collateContext extends ParserRuleContext {
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_collate; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_collate) {
			listener.enterDecl_collate(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_collate) {
			listener.exitDecl_collate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_collate) {
			return visitor.visitDecl_collate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_notnullContext extends ParserRuleContext {
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public KW_NULL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NULL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_notnull; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_notnull) {
			listener.enterDecl_notnull(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_notnull) {
			listener.exitDecl_notnull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_notnull) {
			return visitor.visitDecl_notnull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_defvalContext extends ParserRuleContext {
	public decl_defkey(): Decl_defkeyContext | undefined {
		return this.tryGetRuleContext(0, Decl_defkeyContext);
	}
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_defval; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_defval) {
			listener.enterDecl_defval(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_defval) {
			listener.exitDecl_defval(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_defval) {
			return visitor.visitDecl_defval(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Decl_defkeyContext extends ParserRuleContext {
	public assign_operator(): Assign_operatorContext | undefined {
		return this.tryGetRuleContext(0, Assign_operatorContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_decl_defkey; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDecl_defkey) {
			listener.enterDecl_defkey(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDecl_defkey) {
			listener.exitDecl_defkey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDecl_defkey) {
			return visitor.visitDecl_defkey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Assign_operatorContext extends ParserRuleContext {
	public EQUAL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.EQUAL, 0); }
	public COLON_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COLON_EQUALS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_assign_operator; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAssign_operator) {
			listener.enterAssign_operator(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAssign_operator) {
			listener.exitAssign_operator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAssign_operator) {
			return visitor.visitAssign_operator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_sectContext extends ParserRuleContext {
	public proc_stmt(): Proc_stmtContext[];
	public proc_stmt(i: number): Proc_stmtContext;
	public proc_stmt(i?: number): Proc_stmtContext | Proc_stmtContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Proc_stmtContext);
		} else {
			return this.getRuleContext(i, Proc_stmtContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_sect; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_sect) {
			listener.enterProc_sect(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_sect) {
			listener.exitProc_sect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_sect) {
			return visitor.visitProc_sect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_stmtContext extends ParserRuleContext {
	public pl_block(): Pl_blockContext | undefined {
		return this.tryGetRuleContext(0, Pl_blockContext);
	}
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SEMI, 0); }
	public stmt_return(): Stmt_returnContext | undefined {
		return this.tryGetRuleContext(0, Stmt_returnContext);
	}
	public stmt_raise(): Stmt_raiseContext | undefined {
		return this.tryGetRuleContext(0, Stmt_raiseContext);
	}
	public stmt_assign(): Stmt_assignContext | undefined {
		return this.tryGetRuleContext(0, Stmt_assignContext);
	}
	public stmt_if(): Stmt_ifContext | undefined {
		return this.tryGetRuleContext(0, Stmt_ifContext);
	}
	public stmt_case(): Stmt_caseContext | undefined {
		return this.tryGetRuleContext(0, Stmt_caseContext);
	}
	public stmt_loop(): Stmt_loopContext | undefined {
		return this.tryGetRuleContext(0, Stmt_loopContext);
	}
	public stmt_while(): Stmt_whileContext | undefined {
		return this.tryGetRuleContext(0, Stmt_whileContext);
	}
	public stmt_for(): Stmt_forContext | undefined {
		return this.tryGetRuleContext(0, Stmt_forContext);
	}
	public stmt_foreach_a(): Stmt_foreach_aContext | undefined {
		return this.tryGetRuleContext(0, Stmt_foreach_aContext);
	}
	public stmt_exit(): Stmt_exitContext | undefined {
		return this.tryGetRuleContext(0, Stmt_exitContext);
	}
	public stmt_assert(): Stmt_assertContext | undefined {
		return this.tryGetRuleContext(0, Stmt_assertContext);
	}
	public stmt_execsql(): Stmt_execsqlContext | undefined {
		return this.tryGetRuleContext(0, Stmt_execsqlContext);
	}
	public stmt_dynexecute(): Stmt_dynexecuteContext | undefined {
		return this.tryGetRuleContext(0, Stmt_dynexecuteContext);
	}
	public stmt_perform(): Stmt_performContext | undefined {
		return this.tryGetRuleContext(0, Stmt_performContext);
	}
	public stmt_call(): Stmt_callContext | undefined {
		return this.tryGetRuleContext(0, Stmt_callContext);
	}
	public stmt_getdiag(): Stmt_getdiagContext | undefined {
		return this.tryGetRuleContext(0, Stmt_getdiagContext);
	}
	public stmt_open(): Stmt_openContext | undefined {
		return this.tryGetRuleContext(0, Stmt_openContext);
	}
	public stmt_fetch(): Stmt_fetchContext | undefined {
		return this.tryGetRuleContext(0, Stmt_fetchContext);
	}
	public stmt_move(): Stmt_moveContext | undefined {
		return this.tryGetRuleContext(0, Stmt_moveContext);
	}
	public stmt_close(): Stmt_closeContext | undefined {
		return this.tryGetRuleContext(0, Stmt_closeContext);
	}
	public stmt_null(): Stmt_nullContext | undefined {
		return this.tryGetRuleContext(0, Stmt_nullContext);
	}
	public stmt_commit(): Stmt_commitContext | undefined {
		return this.tryGetRuleContext(0, Stmt_commitContext);
	}
	public stmt_rollback(): Stmt_rollbackContext | undefined {
		return this.tryGetRuleContext(0, Stmt_rollbackContext);
	}
	public stmt_set(): Stmt_setContext | undefined {
		return this.tryGetRuleContext(0, Stmt_setContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_stmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_stmt) {
			listener.enterProc_stmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_stmt) {
			listener.exitProc_stmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_stmt) {
			return visitor.visitProc_stmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_performContext extends ParserRuleContext {
	public KW_PERFORM(): TerminalNode { return this.getToken(PostgreSQLParser.KW_PERFORM, 0); }
	public expr_until_semi(): Expr_until_semiContext {
		return this.getRuleContext(0, Expr_until_semiContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_perform; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_perform) {
			listener.enterStmt_perform(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_perform) {
			listener.exitStmt_perform(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_perform) {
			return visitor.visitStmt_perform(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_callContext extends ParserRuleContext {
	public KW_CALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CALL, 0); }
	public any_identifier(): Any_identifierContext {
		return this.getRuleContext(0, Any_identifierContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public opt_expr_list(): Opt_expr_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_expr_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SEMI, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_call; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_call) {
			listener.enterStmt_call(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_call) {
			listener.exitStmt_call(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_call) {
			return visitor.visitStmt_call(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_expr_listContext extends ParserRuleContext {
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_expr_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_expr_list) {
			listener.enterOpt_expr_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_expr_list) {
			listener.exitOpt_expr_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_expr_list) {
			return visitor.visitOpt_expr_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_assignContext extends ParserRuleContext {
	public assign_var(): Assign_varContext {
		return this.getRuleContext(0, Assign_varContext);
	}
	public assign_operator(): Assign_operatorContext {
		return this.getRuleContext(0, Assign_operatorContext);
	}
	public sql_expression(): Sql_expressionContext {
		return this.getRuleContext(0, Sql_expressionContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_assign; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_assign) {
			listener.enterStmt_assign(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_assign) {
			listener.exitStmt_assign(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_assign) {
			return visitor.visitStmt_assign(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_getdiagContext extends ParserRuleContext {
	public KW_GET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_GET, 0); }
	public getdiag_area_opt(): Getdiag_area_optContext {
		return this.getRuleContext(0, Getdiag_area_optContext);
	}
	public KW_DIAGNOSTICS(): TerminalNode { return this.getToken(PostgreSQLParser.KW_DIAGNOSTICS, 0); }
	public getdiag_list(): Getdiag_listContext {
		return this.getRuleContext(0, Getdiag_listContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_getdiag; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_getdiag) {
			listener.enterStmt_getdiag(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_getdiag) {
			listener.exitStmt_getdiag(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_getdiag) {
			return visitor.visitStmt_getdiag(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Getdiag_area_optContext extends ParserRuleContext {
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_STACKED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STACKED, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_getdiag_area_opt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGetdiag_area_opt) {
			listener.enterGetdiag_area_opt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGetdiag_area_opt) {
			listener.exitGetdiag_area_opt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGetdiag_area_opt) {
			return visitor.visitGetdiag_area_opt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Getdiag_listContext extends ParserRuleContext {
	public getdiag_list_item(): Getdiag_list_itemContext[];
	public getdiag_list_item(i: number): Getdiag_list_itemContext;
	public getdiag_list_item(i?: number): Getdiag_list_itemContext | Getdiag_list_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Getdiag_list_itemContext);
		} else {
			return this.getRuleContext(i, Getdiag_list_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_getdiag_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGetdiag_list) {
			listener.enterGetdiag_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGetdiag_list) {
			listener.exitGetdiag_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGetdiag_list) {
			return visitor.visitGetdiag_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Getdiag_list_itemContext extends ParserRuleContext {
	public getdiag_target(): Getdiag_targetContext {
		return this.getRuleContext(0, Getdiag_targetContext);
	}
	public assign_operator(): Assign_operatorContext {
		return this.getRuleContext(0, Assign_operatorContext);
	}
	public getdiag_item(): Getdiag_itemContext {
		return this.getRuleContext(0, Getdiag_itemContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_getdiag_list_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGetdiag_list_item) {
			listener.enterGetdiag_list_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGetdiag_list_item) {
			listener.exitGetdiag_list_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGetdiag_list_item) {
			return visitor.visitGetdiag_list_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Getdiag_itemContext extends ParserRuleContext {
	public colid(): ColidContext {
		return this.getRuleContext(0, ColidContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_getdiag_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGetdiag_item) {
			listener.enterGetdiag_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGetdiag_item) {
			listener.exitGetdiag_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGetdiag_item) {
			return visitor.visitGetdiag_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Getdiag_targetContext extends ParserRuleContext {
	public assign_var(): Assign_varContext {
		return this.getRuleContext(0, Assign_varContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_getdiag_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterGetdiag_target) {
			listener.enterGetdiag_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitGetdiag_target) {
			listener.exitGetdiag_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitGetdiag_target) {
			return visitor.visitGetdiag_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Assign_varContext extends ParserRuleContext {
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public PARAM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PARAM, 0); }
	public OPEN_BRACKET(): TerminalNode[];
	public OPEN_BRACKET(i: number): TerminalNode;
	public OPEN_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_BRACKET);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_BRACKET, i);
		}
	}
	public expr_until_rightbracket(): Expr_until_rightbracketContext[];
	public expr_until_rightbracket(i: number): Expr_until_rightbracketContext;
	public expr_until_rightbracket(i?: number): Expr_until_rightbracketContext | Expr_until_rightbracketContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Expr_until_rightbracketContext);
		} else {
			return this.getRuleContext(i, Expr_until_rightbracketContext);
		}
	}
	public CLOSE_BRACKET(): TerminalNode[];
	public CLOSE_BRACKET(i: number): TerminalNode;
	public CLOSE_BRACKET(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_BRACKET);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_BRACKET, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_assign_var; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAssign_var) {
			listener.enterAssign_var(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAssign_var) {
			listener.exitAssign_var(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAssign_var) {
			return visitor.visitAssign_var(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_ifContext extends ParserRuleContext {
	public KW_IF(): TerminalNode[];
	public KW_IF(i: number): TerminalNode;
	public KW_IF(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_IF);
		} else {
			return this.getToken(PostgreSQLParser.KW_IF, i);
		}
	}
	public expr_until_then(): Expr_until_thenContext {
		return this.getRuleContext(0, Expr_until_thenContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_THEN, 0); }
	public proc_sect(): Proc_sectContext {
		return this.getRuleContext(0, Proc_sectContext);
	}
	public stmt_elsifs(): Stmt_elsifsContext {
		return this.getRuleContext(0, Stmt_elsifsContext);
	}
	public stmt_else(): Stmt_elseContext {
		return this.getRuleContext(0, Stmt_elseContext);
	}
	public KW_END(): TerminalNode { return this.getToken(PostgreSQLParser.KW_END, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_if; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_if) {
			listener.enterStmt_if(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_if) {
			listener.exitStmt_if(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_if) {
			return visitor.visitStmt_if(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_elsifsContext extends ParserRuleContext {
	public KW_ELSIF(): TerminalNode[];
	public KW_ELSIF(i: number): TerminalNode;
	public KW_ELSIF(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_ELSIF);
		} else {
			return this.getToken(PostgreSQLParser.KW_ELSIF, i);
		}
	}
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public KW_THEN(): TerminalNode[];
	public KW_THEN(i: number): TerminalNode;
	public KW_THEN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_THEN);
		} else {
			return this.getToken(PostgreSQLParser.KW_THEN, i);
		}
	}
	public proc_sect(): Proc_sectContext[];
	public proc_sect(i: number): Proc_sectContext;
	public proc_sect(i?: number): Proc_sectContext | Proc_sectContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Proc_sectContext);
		} else {
			return this.getRuleContext(i, Proc_sectContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_elsifs; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_elsifs) {
			listener.enterStmt_elsifs(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_elsifs) {
			listener.exitStmt_elsifs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_elsifs) {
			return visitor.visitStmt_elsifs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_elseContext extends ParserRuleContext {
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ELSE, 0); }
	public proc_sect(): Proc_sectContext | undefined {
		return this.tryGetRuleContext(0, Proc_sectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_else; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_else) {
			listener.enterStmt_else(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_else) {
			listener.exitStmt_else(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_else) {
			return visitor.visitStmt_else(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_caseContext extends ParserRuleContext {
	public KW_CASE(): TerminalNode[];
	public KW_CASE(i: number): TerminalNode;
	public KW_CASE(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_CASE);
		} else {
			return this.getToken(PostgreSQLParser.KW_CASE, i);
		}
	}
	public opt_expr_until_when(): Opt_expr_until_whenContext {
		return this.getRuleContext(0, Opt_expr_until_whenContext);
	}
	public case_when_list(): Case_when_listContext {
		return this.getRuleContext(0, Case_when_listContext);
	}
	public opt_case_else(): Opt_case_elseContext {
		return this.getRuleContext(0, Opt_case_elseContext);
	}
	public KW_END(): TerminalNode { return this.getToken(PostgreSQLParser.KW_END, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_case; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_case) {
			listener.enterStmt_case(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_case) {
			listener.exitStmt_case(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_case) {
			return visitor.visitStmt_case(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_expr_until_whenContext extends ParserRuleContext {
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_expr_until_when; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_expr_until_when) {
			listener.enterOpt_expr_until_when(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_expr_until_when) {
			listener.exitOpt_expr_until_when(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_expr_until_when) {
			return visitor.visitOpt_expr_until_when(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Case_when_listContext extends ParserRuleContext {
	public case_when(): Case_whenContext[];
	public case_when(i: number): Case_whenContext;
	public case_when(i?: number): Case_whenContext | Case_whenContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Case_whenContext);
		} else {
			return this.getRuleContext(i, Case_whenContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_case_when_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCase_when_list) {
			listener.enterCase_when_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCase_when_list) {
			listener.exitCase_when_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCase_when_list) {
			return visitor.visitCase_when_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Case_whenContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_THEN, 0); }
	public proc_sect(): Proc_sectContext {
		return this.getRuleContext(0, Proc_sectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_case_when; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCase_when) {
			listener.enterCase_when(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCase_when) {
			listener.exitCase_when(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCase_when) {
			return visitor.visitCase_when(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_case_elseContext extends ParserRuleContext {
	public KW_ELSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ELSE, 0); }
	public proc_sect(): Proc_sectContext | undefined {
		return this.tryGetRuleContext(0, Proc_sectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_case_else; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_case_else) {
			listener.enterOpt_case_else(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_case_else) {
			listener.exitOpt_case_else(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_case_else) {
			return visitor.visitOpt_case_else(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_loopContext extends ParserRuleContext {
	public opt_loop_label(): Opt_loop_labelContext {
		return this.getRuleContext(0, Opt_loop_labelContext);
	}
	public loop_body(): Loop_bodyContext {
		return this.getRuleContext(0, Loop_bodyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_loop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_loop) {
			listener.enterStmt_loop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_loop) {
			listener.exitStmt_loop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_loop) {
			return visitor.visitStmt_loop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_whileContext extends ParserRuleContext {
	public opt_loop_label(): Opt_loop_labelContext {
		return this.getRuleContext(0, Opt_loop_labelContext);
	}
	public KW_WHILE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHILE, 0); }
	public expr_until_loop(): Expr_until_loopContext {
		return this.getRuleContext(0, Expr_until_loopContext);
	}
	public loop_body(): Loop_bodyContext {
		return this.getRuleContext(0, Loop_bodyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_while; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_while) {
			listener.enterStmt_while(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_while) {
			listener.exitStmt_while(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_while) {
			return visitor.visitStmt_while(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_forContext extends ParserRuleContext {
	public opt_loop_label(): Opt_loop_labelContext {
		return this.getRuleContext(0, Opt_loop_labelContext);
	}
	public KW_FOR(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOR, 0); }
	public for_control(): For_controlContext {
		return this.getRuleContext(0, For_controlContext);
	}
	public loop_body(): Loop_bodyContext {
		return this.getRuleContext(0, Loop_bodyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_for; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_for) {
			listener.enterStmt_for(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_for) {
			listener.exitStmt_for(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_for) {
			return visitor.visitStmt_for(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_controlContext extends ParserRuleContext {
	public for_variable(): For_variableContext {
		return this.getRuleContext(0, For_variableContext);
	}
	public KW_IN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IN, 0); }
	public cursor_name(): Cursor_nameContext | undefined {
		return this.tryGetRuleContext(0, Cursor_nameContext);
	}
	public opt_cursor_parameters(): Opt_cursor_parametersContext | undefined {
		return this.tryGetRuleContext(0, Opt_cursor_parametersContext);
	}
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public explainstmt(): ExplainstmtContext | undefined {
		return this.tryGetRuleContext(0, ExplainstmtContext);
	}
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public opt_for_using_expression(): Opt_for_using_expressionContext | undefined {
		return this.tryGetRuleContext(0, Opt_for_using_expressionContext);
	}
	public opt_reverse(): Opt_reverseContext | undefined {
		return this.tryGetRuleContext(0, Opt_reverseContext);
	}
	public DOT_DOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.DOT_DOT, 0); }
	public opt_by_expression(): Opt_by_expressionContext | undefined {
		return this.tryGetRuleContext(0, Opt_by_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_control; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_control) {
			listener.enterFor_control(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_control) {
			listener.exitFor_control(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_control) {
			return visitor.visitFor_control(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_for_using_expressionContext extends ParserRuleContext {
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_for_using_expression; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_for_using_expression) {
			listener.enterOpt_for_using_expression(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_for_using_expression) {
			listener.exitOpt_for_using_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_for_using_expression) {
			return visitor.visitOpt_for_using_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_cursor_parametersContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_cursor_parameters; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_cursor_parameters) {
			listener.enterOpt_cursor_parameters(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_cursor_parameters) {
			listener.exitOpt_cursor_parameters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_cursor_parameters) {
			return visitor.visitOpt_cursor_parameters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_reverseContext extends ParserRuleContext {
	public KW_REVERSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REVERSE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_reverse; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_reverse) {
			listener.enterOpt_reverse(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_reverse) {
			listener.exitOpt_reverse(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_reverse) {
			return visitor.visitOpt_reverse(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_by_expressionContext extends ParserRuleContext {
	public KW_BY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BY, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_by_expression; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_by_expression) {
			listener.enterOpt_by_expression(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_by_expression) {
			listener.exitOpt_by_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_by_expression) {
			return visitor.visitOpt_by_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class For_variableContext extends ParserRuleContext {
	public any_name_list(): Any_name_listContext {
		return this.getRuleContext(0, Any_name_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_for_variable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterFor_variable) {
			listener.enterFor_variable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitFor_variable) {
			listener.exitFor_variable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitFor_variable) {
			return visitor.visitFor_variable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_foreach_aContext extends ParserRuleContext {
	public opt_loop_label(): Opt_loop_labelContext {
		return this.getRuleContext(0, Opt_loop_labelContext);
	}
	public KW_FOREACH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FOREACH, 0); }
	public for_variable(): For_variableContext {
		return this.getRuleContext(0, For_variableContext);
	}
	public foreach_slice(): Foreach_sliceContext {
		return this.getRuleContext(0, Foreach_sliceContext);
	}
	public KW_IN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_IN, 0); }
	public KW_ARRAY(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ARRAY, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public loop_body(): Loop_bodyContext {
		return this.getRuleContext(0, Loop_bodyContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_foreach_a; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_foreach_a) {
			listener.enterStmt_foreach_a(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_foreach_a) {
			listener.exitStmt_foreach_a(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_foreach_a) {
			return visitor.visitStmt_foreach_a(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Foreach_sliceContext extends ParserRuleContext {
	public KW_SLICE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SLICE, 0); }
	public iconst(): IconstContext | undefined {
		return this.tryGetRuleContext(0, IconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_foreach_slice; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterForeach_slice) {
			listener.enterForeach_slice(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitForeach_slice) {
			listener.exitForeach_slice(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitForeach_slice) {
			return visitor.visitForeach_slice(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_exitContext extends ParserRuleContext {
	public exit_type(): Exit_typeContext {
		return this.getRuleContext(0, Exit_typeContext);
	}
	public opt_label(): Opt_labelContext {
		return this.getRuleContext(0, Opt_labelContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public opt_exitcond(): Opt_exitcondContext | undefined {
		return this.tryGetRuleContext(0, Opt_exitcondContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_exit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_exit) {
			listener.enterStmt_exit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_exit) {
			listener.exitStmt_exit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_exit) {
			return visitor.visitStmt_exit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Exit_typeContext extends ParserRuleContext {
	public KW_EXIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXIT, 0); }
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTINUE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exit_type; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExit_type) {
			listener.enterExit_type(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExit_type) {
			listener.exitExit_type(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExit_type) {
			return visitor.visitExit_type(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_returnContext extends ParserRuleContext {
	public KW_RETURN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RETURN, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_QUERY, 0); }
	public opt_return_result(): Opt_return_resultContext | undefined {
		return this.tryGetRuleContext(0, Opt_return_resultContext);
	}
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public opt_for_using_expression(): Opt_for_using_expressionContext | undefined {
		return this.tryGetRuleContext(0, Opt_for_using_expressionContext);
	}
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_return; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_return) {
			listener.enterStmt_return(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_return) {
			listener.exitStmt_return(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_return) {
			return visitor.visitStmt_return(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_return_resultContext extends ParserRuleContext {
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_return_result; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_return_result) {
			listener.enterOpt_return_result(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_return_result) {
			listener.exitOpt_return_result(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_return_result) {
			return visitor.visitOpt_return_result(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_raiseContext extends ParserRuleContext {
	public KW_RAISE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_RAISE, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	public opt_raise_list(): Opt_raise_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_raise_listContext);
	}
	public opt_raise_using(): Opt_raise_usingContext | undefined {
		return this.tryGetRuleContext(0, Opt_raise_usingContext);
	}
	public SEMI(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.SEMI, 0); }
	public opt_stmt_raise_level(): Opt_stmt_raise_levelContext | undefined {
		return this.tryGetRuleContext(0, Opt_stmt_raise_levelContext);
	}
	public identifier(): IdentifierContext | undefined {
		return this.tryGetRuleContext(0, IdentifierContext);
	}
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SQLSTATE, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_raise; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_raise) {
			listener.enterStmt_raise(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_raise) {
			listener.exitStmt_raise(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_raise) {
			return visitor.visitStmt_raise(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_stmt_raise_levelContext extends ParserRuleContext {
	public KW_DEBUG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEBUG, 0); }
	public KW_LOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOG, 0); }
	public KW_INFO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INFO, 0); }
	public KW_NOTICE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTICE, 0); }
	public KW_WARNING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WARNING, 0); }
	public KW_EXCEPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCEPTION, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_stmt_raise_level; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_stmt_raise_level) {
			listener.enterOpt_stmt_raise_level(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_stmt_raise_level) {
			listener.exitOpt_stmt_raise_level(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_stmt_raise_level) {
			return visitor.visitOpt_stmt_raise_level(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_raise_listContext extends ParserRuleContext {
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_raise_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_raise_list) {
			listener.enterOpt_raise_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_raise_list) {
			listener.exitOpt_raise_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_raise_list) {
			return visitor.visitOpt_raise_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_raise_usingContext extends ParserRuleContext {
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public opt_raise_using_elem_list(): Opt_raise_using_elem_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_raise_using_elem_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_raise_using; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_raise_using) {
			listener.enterOpt_raise_using(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_raise_using) {
			listener.exitOpt_raise_using(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_raise_using) {
			return visitor.visitOpt_raise_using(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_raise_using_elemContext extends ParserRuleContext {
	public identifier(): IdentifierContext {
		return this.getRuleContext(0, IdentifierContext);
	}
	public EQUAL(): TerminalNode { return this.getToken(PostgreSQLParser.EQUAL, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_raise_using_elem; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_raise_using_elem) {
			listener.enterOpt_raise_using_elem(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_raise_using_elem) {
			listener.exitOpt_raise_using_elem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_raise_using_elem) {
			return visitor.visitOpt_raise_using_elem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_raise_using_elem_listContext extends ParserRuleContext {
	public opt_raise_using_elem(): Opt_raise_using_elemContext[];
	public opt_raise_using_elem(i: number): Opt_raise_using_elemContext;
	public opt_raise_using_elem(i?: number): Opt_raise_using_elemContext | Opt_raise_using_elemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opt_raise_using_elemContext);
		} else {
			return this.getRuleContext(i, Opt_raise_using_elemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_raise_using_elem_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_raise_using_elem_list) {
			listener.enterOpt_raise_using_elem_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_raise_using_elem_list) {
			listener.exitOpt_raise_using_elem_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_raise_using_elem_list) {
			return visitor.visitOpt_raise_using_elem_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_assertContext extends ParserRuleContext {
	public KW_ASSERT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ASSERT, 0); }
	public sql_expression(): Sql_expressionContext {
		return this.getRuleContext(0, Sql_expressionContext);
	}
	public opt_stmt_assert_message(): Opt_stmt_assert_messageContext {
		return this.getRuleContext(0, Opt_stmt_assert_messageContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_assert; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_assert) {
			listener.enterStmt_assert(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_assert) {
			listener.exitStmt_assert(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_assert) {
			return visitor.visitStmt_assert(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_stmt_assert_messageContext extends ParserRuleContext {
	public COMMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COMMA, 0); }
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_stmt_assert_message; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_stmt_assert_message) {
			listener.enterOpt_stmt_assert_message(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_stmt_assert_message) {
			listener.exitOpt_stmt_assert_message(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_stmt_assert_message) {
			return visitor.visitOpt_stmt_assert_message(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Loop_bodyContext extends ParserRuleContext {
	public KW_LOOP(): TerminalNode[];
	public KW_LOOP(i: number): TerminalNode;
	public KW_LOOP(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_LOOP);
		} else {
			return this.getToken(PostgreSQLParser.KW_LOOP, i);
		}
	}
	public proc_sect(): Proc_sectContext {
		return this.getRuleContext(0, Proc_sectContext);
	}
	public KW_END(): TerminalNode { return this.getToken(PostgreSQLParser.KW_END, 0); }
	public opt_label(): Opt_labelContext {
		return this.getRuleContext(0, Opt_labelContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_loop_body; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterLoop_body) {
			listener.enterLoop_body(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitLoop_body) {
			listener.exitLoop_body(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitLoop_body) {
			return visitor.visitLoop_body(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_execsqlContext extends ParserRuleContext {
	public make_execsql_stmt(): Make_execsql_stmtContext {
		return this.getRuleContext(0, Make_execsql_stmtContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_execsql; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_execsql) {
			listener.enterStmt_execsql(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_execsql) {
			listener.exitStmt_execsql(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_execsql) {
			return visitor.visitStmt_execsql(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_dynexecuteContext extends ParserRuleContext {
	public KW_EXECUTE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public opt_execute_into(): Opt_execute_intoContext | undefined {
		return this.tryGetRuleContext(0, Opt_execute_intoContext);
	}
	public opt_execute_using(): Opt_execute_usingContext | undefined {
		return this.tryGetRuleContext(0, Opt_execute_usingContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_dynexecute; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_dynexecute) {
			listener.enterStmt_dynexecute(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_dynexecute) {
			listener.exitStmt_dynexecute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_dynexecute) {
			return visitor.visitStmt_dynexecute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_execute_usingContext extends ParserRuleContext {
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public opt_execute_using_list(): Opt_execute_using_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_execute_using_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_execute_using; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_execute_using) {
			listener.enterOpt_execute_using(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_execute_using) {
			listener.exitOpt_execute_using(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_execute_using) {
			return visitor.visitOpt_execute_using(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_execute_using_listContext extends ParserRuleContext {
	public a_expr(): A_exprContext[];
	public a_expr(i: number): A_exprContext;
	public a_expr(i?: number): A_exprContext | A_exprContext[] {
		if (i === undefined) {
			return this.getRuleContexts(A_exprContext);
		} else {
			return this.getRuleContext(i, A_exprContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_execute_using_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_execute_using_list) {
			listener.enterOpt_execute_using_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_execute_using_list) {
			listener.exitOpt_execute_using_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_execute_using_list) {
			return visitor.visitOpt_execute_using_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_execute_intoContext extends ParserRuleContext {
	public KW_INTO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INTO, 0); }
	public into_target(): Into_targetContext | undefined {
		return this.tryGetRuleContext(0, Into_targetContext);
	}
	public KW_STRICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STRICT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_execute_into; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_execute_into) {
			listener.enterOpt_execute_into(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_execute_into) {
			listener.exitOpt_execute_into(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_execute_into) {
			return visitor.visitOpt_execute_into(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_openContext extends ParserRuleContext {
	public KW_OPEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_OPEN, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public cursor_variable(): Cursor_variableContext | undefined {
		return this.tryGetRuleContext(0, Cursor_variableContext);
	}
	public opt_scroll_option(): Opt_scroll_optionContext | undefined {
		return this.tryGetRuleContext(0, Opt_scroll_optionContext);
	}
	public KW_FOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FOR, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public selectstmt(): SelectstmtContext | undefined {
		return this.tryGetRuleContext(0, SelectstmtContext);
	}
	public KW_EXECUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXECUTE, 0); }
	public sql_expression(): Sql_expressionContext | undefined {
		return this.tryGetRuleContext(0, Sql_expressionContext);
	}
	public opt_open_using(): Opt_open_usingContext | undefined {
		return this.tryGetRuleContext(0, Opt_open_usingContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public opt_open_bound_list(): Opt_open_bound_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_open_bound_listContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_open; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_open) {
			listener.enterStmt_open(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_open) {
			listener.exitStmt_open(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_open) {
			return visitor.visitStmt_open(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_open_bound_list_itemContext extends ParserRuleContext {
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public COLON_EQUALS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.COLON_EQUALS, 0); }
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_open_bound_list_item; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_open_bound_list_item) {
			listener.enterOpt_open_bound_list_item(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_open_bound_list_item) {
			listener.exitOpt_open_bound_list_item(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_open_bound_list_item) {
			return visitor.visitOpt_open_bound_list_item(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_open_bound_listContext extends ParserRuleContext {
	public opt_open_bound_list_item(): Opt_open_bound_list_itemContext[];
	public opt_open_bound_list_item(i: number): Opt_open_bound_list_itemContext;
	public opt_open_bound_list_item(i?: number): Opt_open_bound_list_itemContext | Opt_open_bound_list_itemContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Opt_open_bound_list_itemContext);
		} else {
			return this.getRuleContext(i, Opt_open_bound_list_itemContext);
		}
	}
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_open_bound_list; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_open_bound_list) {
			listener.enterOpt_open_bound_list(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_open_bound_list) {
			listener.exitOpt_open_bound_list(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_open_bound_list) {
			return visitor.visitOpt_open_bound_list(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_open_usingContext extends ParserRuleContext {
	public KW_USING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USING, 0); }
	public expr_list(): Expr_listContext | undefined {
		return this.tryGetRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_open_using; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_open_using) {
			listener.enterOpt_open_using(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_open_using) {
			listener.exitOpt_open_using(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_open_using) {
			return visitor.visitOpt_open_using(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_scroll_optionContext extends ParserRuleContext {
	public opt_scroll_option_no(): Opt_scroll_option_noContext | undefined {
		return this.tryGetRuleContext(0, Opt_scroll_option_noContext);
	}
	public KW_SCROLL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCROLL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_scroll_option; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_scroll_option) {
			listener.enterOpt_scroll_option(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_scroll_option) {
			listener.exitOpt_scroll_option(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_scroll_option) {
			return visitor.visitOpt_scroll_option(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_scroll_option_noContext extends ParserRuleContext {
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_scroll_option_no; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_scroll_option_no) {
			listener.enterOpt_scroll_option_no(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_scroll_option_no) {
			listener.exitOpt_scroll_option_no(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_scroll_option_no) {
			return visitor.visitOpt_scroll_option_no(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_fetchContext extends ParserRuleContext {
	public _direction!: Opt_fetch_directionContext;
	public KW_FETCH(): TerminalNode { return this.getToken(PostgreSQLParser.KW_FETCH, 0); }
	public opt_cursor_from(): Opt_cursor_fromContext {
		return this.getRuleContext(0, Opt_cursor_fromContext);
	}
	public cursor_variable(): Cursor_variableContext {
		return this.getRuleContext(0, Cursor_variableContext);
	}
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public into_target(): Into_targetContext {
		return this.getRuleContext(0, Into_targetContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public opt_fetch_direction(): Opt_fetch_directionContext | undefined {
		return this.tryGetRuleContext(0, Opt_fetch_directionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_fetch; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_fetch) {
			listener.enterStmt_fetch(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_fetch) {
			listener.exitStmt_fetch(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_fetch) {
			return visitor.visitStmt_fetch(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Into_targetContext extends ParserRuleContext {
	public expr_list(): Expr_listContext {
		return this.getRuleContext(0, Expr_listContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_into_target; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterInto_target) {
			listener.enterInto_target(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitInto_target) {
			listener.exitInto_target(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitInto_target) {
			return visitor.visitInto_target(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_cursor_fromContext extends ParserRuleContext {
	public KW_FROM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FROM, 0); }
	public KW_IN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IN, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_cursor_from; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_cursor_from) {
			listener.enterOpt_cursor_from(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_cursor_from) {
			listener.exitOpt_cursor_from(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_cursor_from) {
			return visitor.visitOpt_cursor_from(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_fetch_directionContext extends ParserRuleContext {
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	public KW_PRIOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIOR, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LAST, 0); }
	public KW_ABSOLUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABSOLUTE, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_RELATIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELATIVE, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	public KW_FORWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORWARD, 0); }
	public KW_BACKWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BACKWARD, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_fetch_direction; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_fetch_direction) {
			listener.enterOpt_fetch_direction(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_fetch_direction) {
			listener.exitOpt_fetch_direction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_fetch_direction) {
			return visitor.visitOpt_fetch_direction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_moveContext extends ParserRuleContext {
	public KW_MOVE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MOVE, 0); }
	public cursor_variable(): Cursor_variableContext {
		return this.getRuleContext(0, Cursor_variableContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public opt_fetch_direction(): Opt_fetch_directionContext | undefined {
		return this.tryGetRuleContext(0, Opt_fetch_directionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_move; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_move) {
			listener.enterStmt_move(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_move) {
			listener.exitStmt_move(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_move) {
			return visitor.visitStmt_move(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MergestmtContext extends ParserRuleContext {
	public KW_MERGE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MERGE, 0); }
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public table_name(): Table_nameContext {
		return this.getRuleContext(0, Table_nameContext);
	}
	public KW_USING(): TerminalNode { return this.getToken(PostgreSQLParser.KW_USING, 0); }
	public data_source(): Data_sourceContext {
		return this.getRuleContext(0, Data_sourceContext);
	}
	public KW_ON(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ON, 0); }
	public join_condition(): Join_conditionContext {
		return this.getRuleContext(0, Join_conditionContext);
	}
	public with_clause(): With_clauseContext | undefined {
		return this.tryGetRuleContext(0, With_clauseContext);
	}
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public merge_when_clause(): Merge_when_clauseContext[];
	public merge_when_clause(i: number): Merge_when_clauseContext;
	public merge_when_clause(i?: number): Merge_when_clauseContext | Merge_when_clauseContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Merge_when_clauseContext);
		} else {
			return this.getRuleContext(i, Merge_when_clauseContext);
		}
	}
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_mergestmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMergestmt) {
			listener.enterMergestmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMergestmt) {
			listener.exitMergestmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMergestmt) {
			return visitor.visitMergestmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Data_sourceContext extends ParserRuleContext {
	public table_name(): Table_nameContext | undefined {
		return this.tryGetRuleContext(0, Table_nameContext);
	}
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public select_no_parens(): Select_no_parensContext | undefined {
		return this.tryGetRuleContext(0, Select_no_parensContext);
	}
	public values_clause(): Values_clauseContext | undefined {
		return this.tryGetRuleContext(0, Values_clauseContext);
	}
	public KW_ONLY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ONLY, 0); }
	public STAR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.STAR, 0); }
	public KW_AS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AS, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_data_source; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterData_source) {
			listener.enterData_source(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitData_source) {
			listener.exitData_source(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitData_source) {
			return visitor.visitData_source(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Join_conditionContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_join_condition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterJoin_condition) {
			listener.enterJoin_condition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitJoin_condition) {
			listener.exitJoin_condition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitJoin_condition) {
			return visitor.visitJoin_condition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Merge_when_clauseContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public KW_MATCHED(): TerminalNode { return this.getToken(PostgreSQLParser.KW_MATCHED, 0); }
	public KW_THEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_THEN, 0); }
	public merge_update(): Merge_updateContext | undefined {
		return this.tryGetRuleContext(0, Merge_updateContext);
	}
	public KW_DELETE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DELETE, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DO, 0); }
	public KW_NOTHING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTHING, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AND, 0); }
	public a_expr(): A_exprContext | undefined {
		return this.tryGetRuleContext(0, A_exprContext);
	}
	public KW_NOT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOT, 0); }
	public merge_insert(): Merge_insertContext | undefined {
		return this.tryGetRuleContext(0, Merge_insertContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_merge_when_clause; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMerge_when_clause) {
			listener.enterMerge_when_clause(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMerge_when_clause) {
			listener.exitMerge_when_clause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMerge_when_clause) {
			return visitor.visitMerge_when_clause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Merge_insertContext extends ParserRuleContext {
	public KW_INSERT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INSERT, 0); }
	public default_values_or_values(): Default_values_or_valuesContext {
		return this.getRuleContext(0, Default_values_or_valuesContext);
	}
	public OPEN_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public columnlist(): ColumnlistContext | undefined {
		return this.tryGetRuleContext(0, ColumnlistContext);
	}
	public CLOSE_PAREN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public KW_OVERRIDING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OVERRIDING, 0); }
	public KW_VALUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VALUE, 0); }
	public KW_SYSTEM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SYSTEM, 0); }
	public KW_USER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_merge_insert; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMerge_insert) {
			listener.enterMerge_insert(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMerge_insert) {
			listener.exitMerge_insert(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMerge_insert) {
			return visitor.visitMerge_insert(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Merge_updateContext extends ParserRuleContext {
	public KW_UPDATE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_UPDATE, 0); }
	public KW_SET(): TerminalNode { return this.getToken(PostgreSQLParser.KW_SET, 0); }
	public column_name(): Column_nameContext[];
	public column_name(i: number): Column_nameContext;
	public column_name(i?: number): Column_nameContext | Column_nameContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Column_nameContext);
		} else {
			return this.getRuleContext(i, Column_nameContext);
		}
	}
	public EQUAL(): TerminalNode[];
	public EQUAL(i: number): TerminalNode;
	public EQUAL(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.EQUAL);
		} else {
			return this.getToken(PostgreSQLParser.EQUAL, i);
		}
	}
	public exprofdefault(): ExprofdefaultContext[];
	public exprofdefault(i: number): ExprofdefaultContext;
	public exprofdefault(i?: number): ExprofdefaultContext | ExprofdefaultContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExprofdefaultContext);
		} else {
			return this.getRuleContext(i, ExprofdefaultContext);
		}
	}
	public OPEN_PAREN(): TerminalNode[];
	public OPEN_PAREN(i: number): TerminalNode;
	public OPEN_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.OPEN_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.OPEN_PAREN, i);
		}
	}
	public columnlist(): ColumnlistContext[];
	public columnlist(i: number): ColumnlistContext;
	public columnlist(i?: number): ColumnlistContext | ColumnlistContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ColumnlistContext);
		} else {
			return this.getRuleContext(i, ColumnlistContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode[];
	public CLOSE_PAREN(i: number): TerminalNode;
	public CLOSE_PAREN(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.CLOSE_PAREN);
		} else {
			return this.getToken(PostgreSQLParser.CLOSE_PAREN, i);
		}
	}
	public exprofdefaultlist(): ExprofdefaultlistContext[];
	public exprofdefaultlist(i: number): ExprofdefaultlistContext;
	public exprofdefaultlist(i?: number): ExprofdefaultlistContext | ExprofdefaultlistContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExprofdefaultlistContext);
		} else {
			return this.getRuleContext(i, ExprofdefaultlistContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_merge_update; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMerge_update) {
			listener.enterMerge_update(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMerge_update) {
			listener.exitMerge_update(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMerge_update) {
			return visitor.visitMerge_update(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Default_values_or_valuesContext extends ParserRuleContext {
	public KW_VALUES(): TerminalNode { return this.getToken(PostgreSQLParser.KW_VALUES, 0); }
	public exprofdefaultlist(): ExprofdefaultlistContext | undefined {
		return this.tryGetRuleContext(0, ExprofdefaultlistContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_default_values_or_values; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterDefault_values_or_values) {
			listener.enterDefault_values_or_values(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitDefault_values_or_values) {
			listener.exitDefault_values_or_values(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitDefault_values_or_values) {
			return visitor.visitDefault_values_or_values(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExprofdefaultlistContext extends ParserRuleContext {
	public OPEN_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.OPEN_PAREN, 0); }
	public exprofdefault(): ExprofdefaultContext[];
	public exprofdefault(i: number): ExprofdefaultContext;
	public exprofdefault(i?: number): ExprofdefaultContext | ExprofdefaultContext[] {
		if (i === undefined) {
			return this.getRuleContexts(ExprofdefaultContext);
		} else {
			return this.getRuleContext(i, ExprofdefaultContext);
		}
	}
	public CLOSE_PAREN(): TerminalNode { return this.getToken(PostgreSQLParser.CLOSE_PAREN, 0); }
	public COMMA(): TerminalNode[];
	public COMMA(i: number): TerminalNode;
	public COMMA(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.COMMA);
		} else {
			return this.getToken(PostgreSQLParser.COMMA, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exprofdefaultlist; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExprofdefaultlist) {
			listener.enterExprofdefaultlist(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExprofdefaultlist) {
			listener.exitExprofdefaultlist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExprofdefaultlist) {
			return visitor.visitExprofdefaultlist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExprofdefaultContext extends ParserRuleContext {
	public sortby(): SortbyContext | undefined {
		return this.tryGetRuleContext(0, SortbyContext);
	}
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exprofdefault; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExprofdefault) {
			listener.enterExprofdefault(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExprofdefault) {
			listener.exitExprofdefault(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExprofdefault) {
			return visitor.visitExprofdefault(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_closeContext extends ParserRuleContext {
	public KW_CLOSE(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CLOSE, 0); }
	public cursor_variable(): Cursor_variableContext {
		return this.getRuleContext(0, Cursor_variableContext);
	}
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_close; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_close) {
			listener.enterStmt_close(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_close) {
			listener.exitStmt_close(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_close) {
			return visitor.visitStmt_close(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_nullContext extends ParserRuleContext {
	public KW_NULL(): TerminalNode { return this.getToken(PostgreSQLParser.KW_NULL, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_null; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_null) {
			listener.enterStmt_null(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_null) {
			listener.exitStmt_null(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_null) {
			return visitor.visitStmt_null(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_commitContext extends ParserRuleContext {
	public KW_COMMIT(): TerminalNode { return this.getToken(PostgreSQLParser.KW_COMMIT, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext | undefined {
		return this.tryGetRuleContext(0, Plsql_opt_transaction_chainContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_commit; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_commit) {
			listener.enterStmt_commit(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_commit) {
			listener.exitStmt_commit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_commit) {
			return visitor.visitStmt_commit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_rollbackContext extends ParserRuleContext {
	public KW_ROLLBACK(): TerminalNode { return this.getToken(PostgreSQLParser.KW_ROLLBACK, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public plsql_opt_transaction_chain(): Plsql_opt_transaction_chainContext | undefined {
		return this.tryGetRuleContext(0, Plsql_opt_transaction_chainContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_rollback; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_rollback) {
			listener.enterStmt_rollback(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_rollback) {
			listener.exitStmt_rollback(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_rollback) {
			return visitor.visitStmt_rollback(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Plsql_opt_transaction_chainContext extends ParserRuleContext {
	public KW_AND(): TerminalNode { return this.getToken(PostgreSQLParser.KW_AND, 0); }
	public KW_CHAIN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_CHAIN, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsql_opt_transaction_chain; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsql_opt_transaction_chain) {
			listener.enterPlsql_opt_transaction_chain(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsql_opt_transaction_chain) {
			listener.exitPlsql_opt_transaction_chain(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsql_opt_transaction_chain) {
			return visitor.visitPlsql_opt_transaction_chain(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Stmt_setContext extends ParserRuleContext {
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public any_name(): Any_nameContext | undefined {
		return this.tryGetRuleContext(0, Any_nameContext);
	}
	public KW_TO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TO, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public SEMI(): TerminalNode { return this.getToken(PostgreSQLParser.SEMI, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_ALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALL, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_stmt_set; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterStmt_set) {
			listener.enterStmt_set(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitStmt_set) {
			listener.exitStmt_set(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitStmt_set) {
			return visitor.visitStmt_set(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Cursor_variableContext extends ParserRuleContext {
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public PARAM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.PARAM, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_cursor_variable; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterCursor_variable) {
			listener.enterCursor_variable(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitCursor_variable) {
			listener.exitCursor_variable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitCursor_variable) {
			return visitor.visitCursor_variable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Exception_sectContext extends ParserRuleContext {
	public KW_EXCEPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCEPTION, 0); }
	public proc_exceptions(): Proc_exceptionsContext | undefined {
		return this.tryGetRuleContext(0, Proc_exceptionsContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_exception_sect; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterException_sect) {
			listener.enterException_sect(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitException_sect) {
			listener.exitException_sect(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitException_sect) {
			return visitor.visitException_sect(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_exceptionsContext extends ParserRuleContext {
	public proc_exception(): Proc_exceptionContext[];
	public proc_exception(i: number): Proc_exceptionContext;
	public proc_exception(i?: number): Proc_exceptionContext | Proc_exceptionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Proc_exceptionContext);
		} else {
			return this.getRuleContext(i, Proc_exceptionContext);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_exceptions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_exceptions) {
			listener.enterProc_exceptions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_exceptions) {
			listener.exitProc_exceptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_exceptions) {
			return visitor.visitProc_exceptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_exceptionContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public proc_conditions(): Proc_conditionsContext {
		return this.getRuleContext(0, Proc_conditionsContext);
	}
	public KW_THEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_THEN, 0); }
	public proc_sect(): Proc_sectContext {
		return this.getRuleContext(0, Proc_sectContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_exception; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_exception) {
			listener.enterProc_exception(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_exception) {
			listener.exitProc_exception(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_exception) {
			return visitor.visitProc_exception(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_conditionsContext extends ParserRuleContext {
	public proc_condition(): Proc_conditionContext[];
	public proc_condition(i: number): Proc_conditionContext;
	public proc_condition(i?: number): Proc_conditionContext | Proc_conditionContext[] {
		if (i === undefined) {
			return this.getRuleContexts(Proc_conditionContext);
		} else {
			return this.getRuleContext(i, Proc_conditionContext);
		}
	}
	public KW_OR(): TerminalNode[];
	public KW_OR(i: number): TerminalNode;
	public KW_OR(i?: number): TerminalNode | TerminalNode[] {
		if (i === undefined) {
			return this.getTokens(PostgreSQLParser.KW_OR);
		} else {
			return this.getToken(PostgreSQLParser.KW_OR, i);
		}
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_conditions; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_conditions) {
			listener.enterProc_conditions(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_conditions) {
			listener.exitProc_conditions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_conditions) {
			return visitor.visitProc_conditions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Proc_conditionContext extends ParserRuleContext {
	public any_identifier(): Any_identifierContext | undefined {
		return this.tryGetRuleContext(0, Any_identifierContext);
	}
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SQLSTATE, 0); }
	public sconst(): SconstContext | undefined {
		return this.tryGetRuleContext(0, SconstContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_proc_condition; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterProc_condition) {
			listener.enterProc_condition(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitProc_condition) {
			listener.exitProc_condition(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitProc_condition) {
			return visitor.visitProc_condition(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_block_labelContext extends ParserRuleContext {
	public label_decl(): Label_declContext | undefined {
		return this.tryGetRuleContext(0, Label_declContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_block_label; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_block_label) {
			listener.enterOpt_block_label(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_block_label) {
			listener.exitOpt_block_label(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_block_label) {
			return visitor.visitOpt_block_label(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_loop_labelContext extends ParserRuleContext {
	public label_decl(): Label_declContext | undefined {
		return this.tryGetRuleContext(0, Label_declContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_loop_label; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_loop_label) {
			listener.enterOpt_loop_label(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_loop_label) {
			listener.exitOpt_loop_label(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_loop_label) {
			return visitor.visitOpt_loop_label(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_labelContext extends ParserRuleContext {
	public any_identifier(): Any_identifierContext | undefined {
		return this.tryGetRuleContext(0, Any_identifierContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_label; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_label) {
			listener.enterOpt_label(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_label) {
			listener.exitOpt_label(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_label) {
			return visitor.visitOpt_label(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_exitcondContext extends ParserRuleContext {
	public KW_WHEN(): TerminalNode { return this.getToken(PostgreSQLParser.KW_WHEN, 0); }
	public expr_until_semi(): Expr_until_semiContext {
		return this.getRuleContext(0, Expr_until_semiContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_exitcond; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_exitcond) {
			listener.enterOpt_exitcond(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_exitcond) {
			listener.exitOpt_exitcond(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_exitcond) {
			return visitor.visitOpt_exitcond(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Any_identifierContext extends ParserRuleContext {
	public colid(): ColidContext | undefined {
		return this.tryGetRuleContext(0, ColidContext);
	}
	public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | undefined {
		return this.tryGetRuleContext(0, Plsql_unreserved_keywordContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_any_identifier; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterAny_identifier) {
			listener.enterAny_identifier(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitAny_identifier) {
			listener.exitAny_identifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitAny_identifier) {
			return visitor.visitAny_identifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Plsql_unreserved_keywordContext extends ParserRuleContext {
	public KW_ABSOLUTE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ABSOLUTE, 0); }
	public KW_ALIAS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ALIAS, 0); }
	public KW_AND(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_AND, 0); }
	public KW_ARRAY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ARRAY, 0); }
	public KW_ASSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ASSERT, 0); }
	public KW_BACKWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_BACKWARD, 0); }
	public KW_CALL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CALL, 0); }
	public KW_CHAIN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CHAIN, 0); }
	public KW_CLOSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CLOSE, 0); }
	public KW_COLLATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLLATE, 0); }
	public KW_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COLUMN, 0); }
	public KW_COMMIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_COMMIT, 0); }
	public KW_CONSTANT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTANT, 0); }
	public KW_CONSTRAINT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONSTRAINT, 0); }
	public KW_CONTINUE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CONTINUE, 0); }
	public KW_CURRENT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURRENT, 0); }
	public KW_CURSOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_CURSOR, 0); }
	public KW_DEBUG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEBUG, 0); }
	public KW_DEFAULT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DEFAULT, 0); }
	public KW_DIAGNOSTICS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DIAGNOSTICS, 0); }
	public KW_DO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DO, 0); }
	public KW_DUMP(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_DUMP, 0); }
	public KW_ELSIF(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ELSIF, 0); }
	public KW_ERROR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ERROR, 0); }
	public KW_EXCEPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXCEPTION, 0); }
	public KW_EXIT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_EXIT, 0); }
	public KW_FETCH(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FETCH, 0); }
	public KW_FIRST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FIRST, 0); }
	public KW_FORWARD(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_FORWARD, 0); }
	public KW_GET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_GET, 0); }
	public KW_INFO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INFO, 0); }
	public KW_INSERT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_INSERT, 0); }
	public KW_IS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_IS, 0); }
	public KW_LAST(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LAST, 0); }
	public KW_LOG(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_LOG, 0); }
	public KW_MOVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_MOVE, 0); }
	public KW_NEXT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NEXT, 0); }
	public KW_NO(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NO, 0); }
	public KW_NOTICE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_NOTICE, 0); }
	public KW_OPEN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPEN, 0); }
	public KW_OPTION(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OPTION, 0); }
	public KW_PERFORM(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PERFORM, 0); }
	public KW_PRINT_STRICT_PARAMS(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRINT_STRICT_PARAMS, 0); }
	public KW_PRIOR(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_PRIOR, 0); }
	public KW_QUERY(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_QUERY, 0); }
	public KW_RAISE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RAISE, 0); }
	public KW_RELATIVE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RELATIVE, 0); }
	public KW_RESET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RESET, 0); }
	public KW_RETURN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_RETURN, 0); }
	public KW_REVERSE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_REVERSE, 0); }
	public KW_ROLLBACK(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROLLBACK, 0); }
	public KW_ROWTYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_ROWTYPE, 0); }
	public KW_SCHEMA(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCHEMA, 0); }
	public KW_SCROLL(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SCROLL, 0); }
	public KW_SET(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SET, 0); }
	public KW_SLICE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SLICE, 0); }
	public KW_SQLSTATE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_SQLSTATE, 0); }
	public KW_STACKED(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_STACKED, 0); }
	public KW_TABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TABLE, 0); }
	public KW_TYPE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_TYPE, 0); }
	public KW_USE_COLUMN(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USE_COLUMN, 0); }
	public KW_USE_VARIABLE(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_USE_VARIABLE, 0); }
	public KW_VARIABLE_CONFLICT(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_VARIABLE_CONFLICT, 0); }
	public KW_WARNING(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_WARNING, 0); }
	public KW_OUTER(): TerminalNode | undefined { return this.tryGetToken(PostgreSQLParser.KW_OUTER, 0); }
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_plsql_unreserved_keyword; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterPlsql_unreserved_keyword) {
			listener.enterPlsql_unreserved_keyword(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitPlsql_unreserved_keyword) {
			listener.exitPlsql_unreserved_keyword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitPlsql_unreserved_keyword) {
			return visitor.visitPlsql_unreserved_keyword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Sql_expressionContext extends ParserRuleContext {
	public opt_target_list(): Opt_target_listContext | undefined {
		return this.tryGetRuleContext(0, Opt_target_listContext);
	}
	public into_clause(): Into_clauseContext | undefined {
		return this.tryGetRuleContext(0, Into_clauseContext);
	}
	public from_clause(): From_clauseContext | undefined {
		return this.tryGetRuleContext(0, From_clauseContext);
	}
	public where_clause(): Where_clauseContext | undefined {
		return this.tryGetRuleContext(0, Where_clauseContext);
	}
	public group_clause(): Group_clauseContext | undefined {
		return this.tryGetRuleContext(0, Group_clauseContext);
	}
	public having_clause(): Having_clauseContext | undefined {
		return this.tryGetRuleContext(0, Having_clauseContext);
	}
	public window_clause(): Window_clauseContext | undefined {
		return this.tryGetRuleContext(0, Window_clauseContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_sql_expression; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterSql_expression) {
			listener.enterSql_expression(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitSql_expression) {
			listener.exitSql_expression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitSql_expression) {
			return visitor.visitSql_expression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expr_until_thenContext extends ParserRuleContext {
	public sql_expression(): Sql_expressionContext {
		return this.getRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_expr_until_then; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExpr_until_then) {
			listener.enterExpr_until_then(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExpr_until_then) {
			listener.exitExpr_until_then(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExpr_until_then) {
			return visitor.visitExpr_until_then(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expr_until_semiContext extends ParserRuleContext {
	public sql_expression(): Sql_expressionContext {
		return this.getRuleContext(0, Sql_expressionContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_expr_until_semi; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExpr_until_semi) {
			listener.enterExpr_until_semi(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExpr_until_semi) {
			listener.exitExpr_until_semi(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExpr_until_semi) {
			return visitor.visitExpr_until_semi(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expr_until_rightbracketContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_expr_until_rightbracket; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExpr_until_rightbracket) {
			listener.enterExpr_until_rightbracket(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExpr_until_rightbracket) {
			listener.exitExpr_until_rightbracket(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExpr_until_rightbracket) {
			return visitor.visitExpr_until_rightbracket(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expr_until_loopContext extends ParserRuleContext {
	public a_expr(): A_exprContext {
		return this.getRuleContext(0, A_exprContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_expr_until_loop; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterExpr_until_loop) {
			listener.enterExpr_until_loop(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitExpr_until_loop) {
			listener.exitExpr_until_loop(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitExpr_until_loop) {
			return visitor.visitExpr_until_loop(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Make_execsql_stmtContext extends ParserRuleContext {
	public stmt(): StmtContext {
		return this.getRuleContext(0, StmtContext);
	}
	public opt_returning_clause_into(): Opt_returning_clause_intoContext | undefined {
		return this.tryGetRuleContext(0, Opt_returning_clause_intoContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_make_execsql_stmt; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterMake_execsql_stmt) {
			listener.enterMake_execsql_stmt(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitMake_execsql_stmt) {
			listener.exitMake_execsql_stmt(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitMake_execsql_stmt) {
			return visitor.visitMake_execsql_stmt(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Opt_returning_clause_intoContext extends ParserRuleContext {
	public KW_INTO(): TerminalNode { return this.getToken(PostgreSQLParser.KW_INTO, 0); }
	public opt_strict(): Opt_strictContext {
		return this.getRuleContext(0, Opt_strictContext);
	}
	public into_target(): Into_targetContext {
		return this.getRuleContext(0, Into_targetContext);
	}
	constructor(parent: ParserRuleContext | undefined, invokingState: number) {
		super(parent, invokingState);
	}
	// @Override
	public get ruleIndex(): number { return PostgreSQLParser.RULE_opt_returning_clause_into; }
	// @Override
	public enterRule(listener: PostgreSQLParserListener): void {
		if (listener.enterOpt_returning_clause_into) {
			listener.enterOpt_returning_clause_into(this);
		}
	}
	// @Override
	public exitRule(listener: PostgreSQLParserListener): void {
		if (listener.exitOpt_returning_clause_into) {
			listener.exitOpt_returning_clause_into(this);
		}
	}
	// @Override
	public accept<Result>(visitor: PostgreSQLParserVisitor<Result>): Result {
		if (visitor.visitOpt_returning_clause_into) {
			return visitor.visitOpt_returning_clause_into(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


