diff --git a/src/parser/bison_parser.cpp b/src/parser/bison_parser.cpp index 7a2f3d7a..4e5f4a7e 100644 --- a/src/parser/bison_parser.cpp +++ b/src/parser/bison_parser.cpp @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison implementation for Yacc-like parsers in C @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30704 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -126,293 +126,7 @@ int yyerror(YYLTYPE* llocp, SQLParserResult* result, yyscan_t scanner, const cha # endif # endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_HSQL_BISON_PARSER_H_INCLUDED -# define YY_HSQL_BISON_PARSER_H_INCLUDED -/* Debug traces. */ -#ifndef HSQL_DEBUG -# if defined YYDEBUG -#if YYDEBUG -# define HSQL_DEBUG 1 -# else -# define HSQL_DEBUG 0 -# endif -# else /* ! defined YYDEBUG */ -# define HSQL_DEBUG 0 -# endif /* ! defined YYDEBUG */ -#endif /* ! defined HSQL_DEBUG */ -#if HSQL_DEBUG -extern int hsql_debug; -#endif -/* "%code requires" blocks. */ -#line 35 "bison_parser.y" - -// %code requires block - -#include "../sql/statements.h" -#include "../SQLParserResult.h" -#include "parser_typedef.h" - -// Auto update column and line number -#define YY_USER_ACTION \ - yylloc->first_line = yylloc->last_line; \ - yylloc->first_column = yylloc->last_column; \ - for(int i = 0; yytext[i] != '\0'; i++) { \ - yylloc->total_column++; \ - yylloc->string_length++; \ - if(yytext[i] == '\n') { \ - yylloc->last_line++; \ - yylloc->last_column = 0; \ - } \ - else { \ - yylloc->last_column++; \ - } \ - } - -#line 174 "bison_parser.cpp" - -/* Token kinds. */ -#ifndef HSQL_TOKENTYPE -# define HSQL_TOKENTYPE - enum hsql_tokentype - { - SQL_HSQL_EMPTY = -2, - SQL_YYEOF = 0, /* "end of file" */ - SQL_HSQL_error = 256, /* error */ - SQL_HSQL_UNDEF = 257, /* "invalid token" */ - SQL_IDENTIFIER = 258, /* IDENTIFIER */ - SQL_STRING = 259, /* STRING */ - SQL_FLOATVAL = 260, /* FLOATVAL */ - SQL_INTVAL = 261, /* INTVAL */ - SQL_DEALLOCATE = 262, /* DEALLOCATE */ - SQL_PARAMETERS = 263, /* PARAMETERS */ - SQL_INTERSECT = 264, /* INTERSECT */ - SQL_TEMPORARY = 265, /* TEMPORARY */ - SQL_TIMESTAMP = 266, /* TIMESTAMP */ - SQL_DISTINCT = 267, /* DISTINCT */ - SQL_NVARCHAR = 268, /* NVARCHAR */ - SQL_RESTRICT = 269, /* RESTRICT */ - SQL_TRUNCATE = 270, /* TRUNCATE */ - SQL_ANALYZE = 271, /* ANALYZE */ - SQL_BETWEEN = 272, /* BETWEEN */ - SQL_CASCADE = 273, /* CASCADE */ - SQL_COLUMNS = 274, /* COLUMNS */ - SQL_CONTROL = 275, /* CONTROL */ - SQL_DEFAULT = 276, /* DEFAULT */ - SQL_EXECUTE = 277, /* EXECUTE */ - SQL_EXPLAIN = 278, /* EXPLAIN */ - SQL_INTEGER = 279, /* INTEGER */ - SQL_NATURAL = 280, /* NATURAL */ - SQL_PREPARE = 281, /* PREPARE */ - SQL_PRIMARY = 282, /* PRIMARY */ - SQL_SCHEMAS = 283, /* SCHEMAS */ - SQL_SPATIAL = 284, /* SPATIAL */ - SQL_VARCHAR = 285, /* VARCHAR */ - SQL_VIRTUAL = 286, /* VIRTUAL */ - SQL_DESCRIBE = 287, /* DESCRIBE */ - SQL_BEFORE = 288, /* BEFORE */ - SQL_COLUMN = 289, /* COLUMN */ - SQL_CREATE = 290, /* CREATE */ - SQL_DELETE = 291, /* DELETE */ - SQL_DIRECT = 292, /* DIRECT */ - SQL_DOUBLE = 293, /* DOUBLE */ - SQL_ESCAPE = 294, /* ESCAPE */ - SQL_EXCEPT = 295, /* EXCEPT */ - SQL_EXISTS = 296, /* EXISTS */ - SQL_EXTRACT = 297, /* EXTRACT */ - SQL_CAST = 298, /* CAST */ - SQL_FORMAT = 299, /* FORMAT */ - SQL_GLOBAL = 300, /* GLOBAL */ - SQL_HAVING = 301, /* HAVING */ - SQL_IMPORT = 302, /* IMPORT */ - SQL_INSERT = 303, /* INSERT */ - SQL_ISNULL = 304, /* ISNULL */ - SQL_OFFSET = 305, /* OFFSET */ - SQL_RENAME = 306, /* RENAME */ - SQL_SCHEMA = 307, /* SCHEMA */ - SQL_SELECT = 308, /* SELECT */ - SQL_SORTED = 309, /* SORTED */ - SQL_TABLES = 310, /* TABLES */ - SQL_UNIQUE = 311, /* UNIQUE */ - SQL_UNLOAD = 312, /* UNLOAD */ - SQL_UPDATE = 313, /* UPDATE */ - SQL_VALUES = 314, /* VALUES */ - SQL_AFTER = 315, /* AFTER */ - SQL_ALTER = 316, /* ALTER */ - SQL_CROSS = 317, /* CROSS */ - SQL_DELTA = 318, /* DELTA */ - SQL_FLOAT = 319, /* FLOAT */ - SQL_GROUP = 320, /* GROUP */ - SQL_INDEX = 321, /* INDEX */ - SQL_INNER = 322, /* INNER */ - SQL_LIMIT = 323, /* LIMIT */ - SQL_LOCAL = 324, /* LOCAL */ - SQL_MERGE = 325, /* MERGE */ - SQL_MINUS = 326, /* MINUS */ - SQL_ORDER = 327, /* ORDER */ - SQL_OUTER = 328, /* OUTER */ - SQL_RIGHT = 329, /* RIGHT */ - SQL_TABLE = 330, /* TABLE */ - SQL_UNION = 331, /* UNION */ - SQL_USING = 332, /* USING */ - SQL_WHERE = 333, /* WHERE */ - SQL_CALL = 334, /* CALL */ - SQL_CASE = 335, /* CASE */ - SQL_CHAR = 336, /* CHAR */ - SQL_COPY = 337, /* COPY */ - SQL_DATE = 338, /* DATE */ - SQL_DATETIME = 339, /* DATETIME */ - SQL_DESC = 340, /* DESC */ - SQL_DROP = 341, /* DROP */ - SQL_ELSE = 342, /* ELSE */ - SQL_FILE = 343, /* FILE */ - SQL_FROM = 344, /* FROM */ - SQL_FULL = 345, /* FULL */ - SQL_HASH = 346, /* HASH */ - SQL_HINT = 347, /* HINT */ - SQL_INTO = 348, /* INTO */ - SQL_JOIN = 349, /* JOIN */ - SQL_LEFT = 350, /* LEFT */ - SQL_LIKE = 351, /* LIKE */ - SQL_LOAD = 352, /* LOAD */ - SQL_LONG = 353, /* LONG */ - SQL_NULL = 354, /* NULL */ - SQL_PLAN = 355, /* PLAN */ - SQL_SHOW = 356, /* SHOW */ - SQL_TEXT = 357, /* TEXT */ - SQL_THEN = 358, /* THEN */ - SQL_TIME = 359, /* TIME */ - SQL_VIEW = 360, /* VIEW */ - SQL_WHEN = 361, /* WHEN */ - SQL_WITH = 362, /* WITH */ - SQL_ADD = 363, /* ADD */ - SQL_ALL = 364, /* ALL */ - SQL_AND = 365, /* AND */ - SQL_ASC = 366, /* ASC */ - SQL_END = 367, /* END */ - SQL_FOR = 368, /* FOR */ - SQL_INT = 369, /* INT */ - SQL_KEY = 370, /* KEY */ - SQL_NOT = 371, /* NOT */ - SQL_OFF = 372, /* OFF */ - SQL_SET = 373, /* SET */ - SQL_TOP = 374, /* TOP */ - SQL_AS = 375, /* AS */ - SQL_BY = 376, /* BY */ - SQL_IF = 377, /* IF */ - SQL_IN = 378, /* IN */ - SQL_IS = 379, /* IS */ - SQL_OF = 380, /* OF */ - SQL_ON = 381, /* ON */ - SQL_OR = 382, /* OR */ - SQL_TO = 383, /* TO */ - SQL_ARRAY = 384, /* ARRAY */ - SQL_CONCAT = 385, /* CONCAT */ - SQL_ILIKE = 386, /* ILIKE */ - SQL_SECOND = 387, /* SECOND */ - SQL_MINUTE = 388, /* MINUTE */ - SQL_HOUR = 389, /* HOUR */ - SQL_DAY = 390, /* DAY */ - SQL_MONTH = 391, /* MONTH */ - SQL_YEAR = 392, /* YEAR */ - SQL_TRUE = 393, /* TRUE */ - SQL_FALSE = 394, /* FALSE */ - SQL_TRANSACTION = 395, /* TRANSACTION */ - SQL_BEGIN = 396, /* BEGIN */ - SQL_COMMIT = 397, /* COMMIT */ - SQL_ROLLBACK = 398, /* ROLLBACK */ - SQL_EQUALS = 399, /* EQUALS */ - SQL_NOTEQUALS = 400, /* NOTEQUALS */ - SQL_LESS = 401, /* LESS */ - SQL_GREATER = 402, /* GREATER */ - SQL_LESSEQ = 403, /* LESSEQ */ - SQL_GREATEREQ = 404, /* GREATEREQ */ - SQL_NOTNULL = 405, /* NOTNULL */ - SQL_UMINUS = 406 /* UMINUS */ - }; - typedef enum hsql_tokentype hsql_token_kind_t; -#endif - -/* Value type. */ -#if ! defined HSQL_STYPE && ! defined HSQL_STYPE_IS_DECLARED -union HSQL_STYPE -{ -#line 95 "bison_parser.y" - - double fval; - int64_t ival; - char* sval; - uintmax_t uval; - bool bval; - - hsql::SQLStatement* statement; - hsql::SelectStatement* select_stmt; - hsql::ImportStatement* import_stmt; - hsql::ExportStatement* export_stmt; - hsql::CreateStatement* create_stmt; - hsql::InsertStatement* insert_stmt; - hsql::DeleteStatement* delete_stmt; - hsql::UpdateStatement* update_stmt; - hsql::DropStatement* drop_stmt; - hsql::PrepareStatement* prep_stmt; - hsql::ExecuteStatement* exec_stmt; - hsql::ShowStatement* show_stmt; - hsql::TransactionStatement* transaction_stmt; - - hsql::TableName table_name; - hsql::TableRef* table; - hsql::Expr* expr; - hsql::OrderDescription* order; - hsql::OrderType order_type; - hsql::WithDescription* with_description_t; - hsql::DatetimeField datetime_field; - hsql::LimitDescription* limit; - hsql::ColumnDefinition* column_t; - hsql::ColumnType column_type_t; - hsql::ImportType import_type_t; - hsql::GroupByDescription* group_t; - hsql::UpdateClause* update_t; - hsql::Alias* alias_t; - hsql::SetOperation* set_operator_t; - - std::vector* stmt_vec; - - std::vector* str_vec; - std::vector* table_vec; - std::vector* column_vec; - std::vector* update_vec; - std::vector* expr_vec; - std::vector* order_vec; - std::vector* with_description_vec; - -#line 390 "bison_parser.cpp" - -}; -typedef union HSQL_STYPE HSQL_STYPE; -# define HSQL_STYPE_IS_TRIVIAL 1 -# define HSQL_STYPE_IS_DECLARED 1 -#endif - -/* Location type. */ -#if ! defined HSQL_LTYPE && ! defined HSQL_LTYPE_IS_DECLARED -typedef struct HSQL_LTYPE HSQL_LTYPE; -struct HSQL_LTYPE -{ - int first_line; - int first_column; - int last_line; - int last_column; -}; -# define HSQL_LTYPE_IS_DECLARED 1 -# define HSQL_LTYPE_IS_TRIVIAL 1 -#endif - - - -int hsql_parse (hsql::SQLParserResult* result, yyscan_t scanner); - -#endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED */ +#include "bison_parser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -1015,6 +729,7 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 474 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 406 @@ -2177,31 +1892,31 @@ yydestruct (const char *yymsg, YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yykind) { - case 3: /* IDENTIFIER */ + case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2184 "bison_parser.cpp" +#line 1899 "bison_parser.cpp" break; - case 4: /* STRING */ + case YYSYMBOL_STRING: /* STRING */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2190 "bison_parser.cpp" +#line 1905 "bison_parser.cpp" break; - case 5: /* FLOATVAL */ + case YYSYMBOL_FLOATVAL: /* FLOATVAL */ #line 147 "bison_parser.y" { } -#line 2196 "bison_parser.cpp" +#line 1911 "bison_parser.cpp" break; - case 6: /* INTVAL */ + case YYSYMBOL_INTVAL: /* INTVAL */ #line 147 "bison_parser.y" { } -#line 2202 "bison_parser.cpp" +#line 1917 "bison_parser.cpp" break; - case 171: /* statement_list */ + case YYSYMBOL_statement_list: /* statement_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).stmt_vec)) != nullptr) { @@ -2211,22 +1926,22 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).stmt_vec)); } -#line 2215 "bison_parser.cpp" +#line 1930 "bison_parser.cpp" break; - case 172: /* statement */ + case YYSYMBOL_statement: /* statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2221 "bison_parser.cpp" +#line 1936 "bison_parser.cpp" break; - case 173: /* preparable_statement */ + case YYSYMBOL_preparable_statement: /* preparable_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).statement)); } -#line 2227 "bison_parser.cpp" +#line 1942 "bison_parser.cpp" break; - case 174: /* opt_hints */ + case YYSYMBOL_opt_hints: /* opt_hints */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2236,10 +1951,10 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2240 "bison_parser.cpp" +#line 1955 "bison_parser.cpp" break; - case 175: /* hint_list */ + case YYSYMBOL_hint_list: /* hint_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2249,88 +1964,88 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2253 "bison_parser.cpp" +#line 1968 "bison_parser.cpp" break; - case 176: /* hint */ + case YYSYMBOL_hint: /* hint */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2259 "bison_parser.cpp" +#line 1974 "bison_parser.cpp" break; - case 177: /* transaction_statement */ + case YYSYMBOL_transaction_statement: /* transaction_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).transaction_stmt)); } -#line 2265 "bison_parser.cpp" +#line 1980 "bison_parser.cpp" break; - case 179: /* prepare_statement */ + case YYSYMBOL_prepare_statement: /* prepare_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).prep_stmt)); } -#line 2271 "bison_parser.cpp" +#line 1986 "bison_parser.cpp" break; - case 180: /* prepare_target_query */ + case YYSYMBOL_prepare_target_query: /* prepare_target_query */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2277 "bison_parser.cpp" +#line 1992 "bison_parser.cpp" break; - case 181: /* execute_statement */ + case YYSYMBOL_execute_statement: /* execute_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).exec_stmt)); } -#line 2283 "bison_parser.cpp" +#line 1998 "bison_parser.cpp" break; - case 182: /* import_statement */ + case YYSYMBOL_import_statement: /* import_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).import_stmt)); } -#line 2289 "bison_parser.cpp" +#line 2004 "bison_parser.cpp" break; - case 183: /* file_type */ + case YYSYMBOL_file_type: /* file_type */ #line 147 "bison_parser.y" { } -#line 2295 "bison_parser.cpp" +#line 2010 "bison_parser.cpp" break; - case 184: /* file_path */ + case YYSYMBOL_file_path: /* file_path */ #line 149 "bison_parser.y" { free( (((*yyvaluep).sval)) ); } -#line 2301 "bison_parser.cpp" +#line 2016 "bison_parser.cpp" break; - case 185: /* opt_file_type */ + case YYSYMBOL_opt_file_type: /* opt_file_type */ #line 147 "bison_parser.y" { } -#line 2307 "bison_parser.cpp" +#line 2022 "bison_parser.cpp" break; - case 186: /* export_statement */ + case YYSYMBOL_export_statement: /* export_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).export_stmt)); } -#line 2313 "bison_parser.cpp" +#line 2028 "bison_parser.cpp" break; - case 187: /* show_statement */ + case YYSYMBOL_show_statement: /* show_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).show_stmt)); } -#line 2319 "bison_parser.cpp" +#line 2034 "bison_parser.cpp" break; - case 188: /* create_statement */ + case YYSYMBOL_create_statement: /* create_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).create_stmt)); } -#line 2325 "bison_parser.cpp" +#line 2040 "bison_parser.cpp" break; - case 189: /* opt_not_exists */ + case YYSYMBOL_opt_not_exists: /* opt_not_exists */ #line 147 "bison_parser.y" { } -#line 2331 "bison_parser.cpp" +#line 2046 "bison_parser.cpp" break; - case 190: /* column_def_commalist */ + case YYSYMBOL_column_def_commalist: /* column_def_commalist */ #line 150 "bison_parser.y" { if ((((*yyvaluep).column_vec)) != nullptr) { @@ -2340,58 +2055,58 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).column_vec)); } -#line 2344 "bison_parser.cpp" +#line 2059 "bison_parser.cpp" break; - case 191: /* column_def */ + case YYSYMBOL_column_def: /* column_def */ #line 158 "bison_parser.y" { delete (((*yyvaluep).column_t)); } -#line 2350 "bison_parser.cpp" +#line 2065 "bison_parser.cpp" break; - case 192: /* column_type */ + case YYSYMBOL_column_type: /* column_type */ #line 147 "bison_parser.y" { } -#line 2356 "bison_parser.cpp" +#line 2071 "bison_parser.cpp" break; - case 193: /* opt_column_nullable */ + case YYSYMBOL_opt_column_nullable: /* opt_column_nullable */ #line 147 "bison_parser.y" { } -#line 2362 "bison_parser.cpp" +#line 2077 "bison_parser.cpp" break; - case 194: /* drop_statement */ + case YYSYMBOL_drop_statement: /* drop_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).drop_stmt)); } -#line 2368 "bison_parser.cpp" +#line 2083 "bison_parser.cpp" break; - case 195: /* opt_exists */ + case YYSYMBOL_opt_exists: /* opt_exists */ #line 147 "bison_parser.y" { } -#line 2374 "bison_parser.cpp" +#line 2089 "bison_parser.cpp" break; - case 196: /* delete_statement */ + case YYSYMBOL_delete_statement: /* delete_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2380 "bison_parser.cpp" +#line 2095 "bison_parser.cpp" break; - case 197: /* truncate_statement */ + case YYSYMBOL_truncate_statement: /* truncate_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).delete_stmt)); } -#line 2386 "bison_parser.cpp" +#line 2101 "bison_parser.cpp" break; - case 198: /* insert_statement */ + case YYSYMBOL_insert_statement: /* insert_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).insert_stmt)); } -#line 2392 "bison_parser.cpp" +#line 2107 "bison_parser.cpp" break; - case 199: /* opt_column_list */ + case YYSYMBOL_opt_column_list: /* opt_column_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { @@ -2401,16 +2116,16 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2405 "bison_parser.cpp" +#line 2120 "bison_parser.cpp" break; - case 200: /* update_statement */ + case YYSYMBOL_update_statement: /* update_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).update_stmt)); } -#line 2411 "bison_parser.cpp" +#line 2126 "bison_parser.cpp" break; - case 201: /* update_clause_commalist */ + case YYSYMBOL_update_clause_commalist: /* update_clause_commalist */ #line 150 "bison_parser.y" { if ((((*yyvaluep).update_vec)) != nullptr) { @@ -2420,76 +2135,76 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).update_vec)); } -#line 2424 "bison_parser.cpp" +#line 2139 "bison_parser.cpp" break; - case 202: /* update_clause */ + case YYSYMBOL_update_clause: /* update_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).update_t)); } -#line 2430 "bison_parser.cpp" +#line 2145 "bison_parser.cpp" break; - case 203: /* select_statement */ + case YYSYMBOL_select_statement: /* select_statement */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2436 "bison_parser.cpp" +#line 2151 "bison_parser.cpp" break; - case 204: /* select_within_set_operation */ + case YYSYMBOL_select_within_set_operation: /* select_within_set_operation */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2442 "bison_parser.cpp" +#line 2157 "bison_parser.cpp" break; - case 205: /* select_within_set_operation_no_parentheses */ + case YYSYMBOL_select_within_set_operation_no_parentheses: /* select_within_set_operation_no_parentheses */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2448 "bison_parser.cpp" +#line 2163 "bison_parser.cpp" break; - case 206: /* select_with_paren */ + case YYSYMBOL_select_with_paren: /* select_with_paren */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2454 "bison_parser.cpp" +#line 2169 "bison_parser.cpp" break; - case 207: /* select_no_paren */ + case YYSYMBOL_select_no_paren: /* select_no_paren */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2460 "bison_parser.cpp" +#line 2175 "bison_parser.cpp" break; - case 208: /* set_operator */ + case YYSYMBOL_set_operator: /* set_operator */ #line 158 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2466 "bison_parser.cpp" +#line 2181 "bison_parser.cpp" break; - case 209: /* set_type */ + case YYSYMBOL_set_type: /* set_type */ #line 158 "bison_parser.y" { delete (((*yyvaluep).set_operator_t)); } -#line 2472 "bison_parser.cpp" +#line 2187 "bison_parser.cpp" break; - case 210: /* opt_all */ + case YYSYMBOL_opt_all: /* opt_all */ #line 147 "bison_parser.y" { } -#line 2478 "bison_parser.cpp" +#line 2193 "bison_parser.cpp" break; - case 211: /* select_clause */ + case YYSYMBOL_select_clause: /* select_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).select_stmt)); } -#line 2484 "bison_parser.cpp" +#line 2199 "bison_parser.cpp" break; - case 212: /* opt_distinct */ + case YYSYMBOL_opt_distinct: /* opt_distinct */ #line 147 "bison_parser.y" { } -#line 2490 "bison_parser.cpp" +#line 2205 "bison_parser.cpp" break; - case 213: /* select_list */ + case YYSYMBOL_select_list: /* select_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2499,40 +2214,40 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2503 "bison_parser.cpp" +#line 2218 "bison_parser.cpp" break; - case 214: /* opt_from_clause */ + case YYSYMBOL_opt_from_clause: /* opt_from_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2509 "bison_parser.cpp" +#line 2224 "bison_parser.cpp" break; - case 215: /* from_clause */ + case YYSYMBOL_from_clause: /* from_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2515 "bison_parser.cpp" +#line 2230 "bison_parser.cpp" break; - case 216: /* opt_where */ + case YYSYMBOL_opt_where: /* opt_where */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2521 "bison_parser.cpp" +#line 2236 "bison_parser.cpp" break; - case 217: /* opt_group */ + case YYSYMBOL_opt_group: /* opt_group */ #line 158 "bison_parser.y" { delete (((*yyvaluep).group_t)); } -#line 2527 "bison_parser.cpp" +#line 2242 "bison_parser.cpp" break; - case 218: /* opt_having */ + case YYSYMBOL_opt_having: /* opt_having */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2533 "bison_parser.cpp" +#line 2248 "bison_parser.cpp" break; - case 219: /* opt_order */ + case YYSYMBOL_opt_order: /* opt_order */ #line 150 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -2542,10 +2257,10 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2546 "bison_parser.cpp" +#line 2261 "bison_parser.cpp" break; - case 220: /* order_list */ + case YYSYMBOL_order_list: /* order_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).order_vec)) != nullptr) { @@ -2555,34 +2270,34 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).order_vec)); } -#line 2559 "bison_parser.cpp" +#line 2274 "bison_parser.cpp" break; - case 221: /* order_desc */ + case YYSYMBOL_order_desc: /* order_desc */ #line 158 "bison_parser.y" { delete (((*yyvaluep).order)); } -#line 2565 "bison_parser.cpp" +#line 2280 "bison_parser.cpp" break; - case 222: /* opt_order_type */ + case YYSYMBOL_opt_order_type: /* opt_order_type */ #line 147 "bison_parser.y" { } -#line 2571 "bison_parser.cpp" +#line 2286 "bison_parser.cpp" break; - case 223: /* opt_top */ + case YYSYMBOL_opt_top: /* opt_top */ #line 158 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2577 "bison_parser.cpp" +#line 2292 "bison_parser.cpp" break; - case 224: /* opt_limit */ + case YYSYMBOL_opt_limit: /* opt_limit */ #line 158 "bison_parser.y" { delete (((*yyvaluep).limit)); } -#line 2583 "bison_parser.cpp" +#line 2298 "bison_parser.cpp" break; - case 225: /* expr_list */ + case YYSYMBOL_expr_list: /* expr_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2592,10 +2307,10 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2596 "bison_parser.cpp" +#line 2311 "bison_parser.cpp" break; - case 226: /* opt_literal_list */ + case YYSYMBOL_opt_literal_list: /* opt_literal_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2605,10 +2320,10 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2609 "bison_parser.cpp" +#line 2324 "bison_parser.cpp" break; - case 227: /* literal_list */ + case YYSYMBOL_literal_list: /* literal_list */ #line 150 "bison_parser.y" { if ((((*yyvaluep).expr_vec)) != nullptr) { @@ -2618,190 +2333,190 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).expr_vec)); } -#line 2622 "bison_parser.cpp" +#line 2337 "bison_parser.cpp" break; - case 228: /* expr_alias */ + case YYSYMBOL_expr_alias: /* expr_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2628 "bison_parser.cpp" +#line 2343 "bison_parser.cpp" break; - case 229: /* expr */ + case YYSYMBOL_expr: /* expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2634 "bison_parser.cpp" +#line 2349 "bison_parser.cpp" break; - case 230: /* operand */ + case YYSYMBOL_operand: /* operand */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2640 "bison_parser.cpp" +#line 2355 "bison_parser.cpp" break; - case 231: /* scalar_expr */ + case YYSYMBOL_scalar_expr: /* scalar_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2646 "bison_parser.cpp" +#line 2361 "bison_parser.cpp" break; - case 232: /* unary_expr */ + case YYSYMBOL_unary_expr: /* unary_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2652 "bison_parser.cpp" +#line 2367 "bison_parser.cpp" break; - case 233: /* binary_expr */ + case YYSYMBOL_binary_expr: /* binary_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2658 "bison_parser.cpp" +#line 2373 "bison_parser.cpp" break; - case 234: /* logic_expr */ + case YYSYMBOL_logic_expr: /* logic_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2664 "bison_parser.cpp" +#line 2379 "bison_parser.cpp" break; - case 235: /* in_expr */ + case YYSYMBOL_in_expr: /* in_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2670 "bison_parser.cpp" +#line 2385 "bison_parser.cpp" break; - case 236: /* case_expr */ + case YYSYMBOL_case_expr: /* case_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2676 "bison_parser.cpp" +#line 2391 "bison_parser.cpp" break; - case 237: /* case_list */ + case YYSYMBOL_case_list: /* case_list */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2682 "bison_parser.cpp" +#line 2397 "bison_parser.cpp" break; - case 238: /* exists_expr */ + case YYSYMBOL_exists_expr: /* exists_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2688 "bison_parser.cpp" +#line 2403 "bison_parser.cpp" break; - case 239: /* comp_expr */ + case YYSYMBOL_comp_expr: /* comp_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2694 "bison_parser.cpp" +#line 2409 "bison_parser.cpp" break; - case 240: /* function_expr */ + case YYSYMBOL_function_expr: /* function_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2700 "bison_parser.cpp" +#line 2415 "bison_parser.cpp" break; - case 241: /* extract_expr */ + case YYSYMBOL_extract_expr: /* extract_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2706 "bison_parser.cpp" +#line 2421 "bison_parser.cpp" break; - case 242: /* cast_expr */ + case YYSYMBOL_cast_expr: /* cast_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2712 "bison_parser.cpp" +#line 2427 "bison_parser.cpp" break; - case 243: /* datetime_field */ + case YYSYMBOL_datetime_field: /* datetime_field */ #line 147 "bison_parser.y" { } -#line 2718 "bison_parser.cpp" +#line 2433 "bison_parser.cpp" break; - case 244: /* array_expr */ + case YYSYMBOL_array_expr: /* array_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2724 "bison_parser.cpp" +#line 2439 "bison_parser.cpp" break; - case 245: /* array_index */ + case YYSYMBOL_array_index: /* array_index */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2730 "bison_parser.cpp" +#line 2445 "bison_parser.cpp" break; - case 246: /* between_expr */ + case YYSYMBOL_between_expr: /* between_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2736 "bison_parser.cpp" +#line 2451 "bison_parser.cpp" break; - case 247: /* column_name */ + case YYSYMBOL_column_name: /* column_name */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2742 "bison_parser.cpp" +#line 2457 "bison_parser.cpp" break; - case 248: /* literal */ + case YYSYMBOL_literal: /* literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2748 "bison_parser.cpp" +#line 2463 "bison_parser.cpp" break; - case 249: /* string_literal */ + case YYSYMBOL_string_literal: /* string_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2754 "bison_parser.cpp" +#line 2469 "bison_parser.cpp" break; - case 250: /* bool_literal */ + case YYSYMBOL_bool_literal: /* bool_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2760 "bison_parser.cpp" +#line 2475 "bison_parser.cpp" break; - case 251: /* num_literal */ + case YYSYMBOL_num_literal: /* num_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2766 "bison_parser.cpp" +#line 2481 "bison_parser.cpp" break; - case 252: /* int_literal */ + case YYSYMBOL_int_literal: /* int_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2772 "bison_parser.cpp" +#line 2487 "bison_parser.cpp" break; - case 253: /* null_literal */ + case YYSYMBOL_null_literal: /* null_literal */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2778 "bison_parser.cpp" +#line 2493 "bison_parser.cpp" break; - case 254: /* param_expr */ + case YYSYMBOL_param_expr: /* param_expr */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2784 "bison_parser.cpp" +#line 2499 "bison_parser.cpp" break; - case 255: /* table_ref */ + case YYSYMBOL_table_ref: /* table_ref */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2790 "bison_parser.cpp" +#line 2505 "bison_parser.cpp" break; - case 256: /* table_ref_atomic */ + case YYSYMBOL_table_ref_atomic: /* table_ref_atomic */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2796 "bison_parser.cpp" +#line 2511 "bison_parser.cpp" break; - case 257: /* nonjoin_table_ref_atomic */ + case YYSYMBOL_nonjoin_table_ref_atomic: /* nonjoin_table_ref_atomic */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2802 "bison_parser.cpp" +#line 2517 "bison_parser.cpp" break; - case 258: /* table_ref_commalist */ + case YYSYMBOL_table_ref_commalist: /* table_ref_commalist */ #line 150 "bison_parser.y" { if ((((*yyvaluep).table_vec)) != nullptr) { @@ -2811,94 +2526,94 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).table_vec)); } -#line 2815 "bison_parser.cpp" +#line 2530 "bison_parser.cpp" break; - case 259: /* table_ref_name */ + case YYSYMBOL_table_ref_name: /* table_ref_name */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2821 "bison_parser.cpp" +#line 2536 "bison_parser.cpp" break; - case 260: /* table_ref_name_no_alias */ + case YYSYMBOL_table_ref_name_no_alias: /* table_ref_name_no_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2827 "bison_parser.cpp" +#line 2542 "bison_parser.cpp" break; - case 261: /* table_name */ + case YYSYMBOL_table_name: /* table_name */ #line 148 "bison_parser.y" { free( (((*yyvaluep).table_name).name) ); free( (((*yyvaluep).table_name).schema) ); } -#line 2833 "bison_parser.cpp" +#line 2548 "bison_parser.cpp" break; - case 262: /* table_alias */ + case YYSYMBOL_table_alias: /* table_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2839 "bison_parser.cpp" +#line 2554 "bison_parser.cpp" break; - case 263: /* opt_table_alias */ + case YYSYMBOL_opt_table_alias: /* opt_table_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2845 "bison_parser.cpp" +#line 2560 "bison_parser.cpp" break; - case 264: /* alias */ + case YYSYMBOL_alias: /* alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2851 "bison_parser.cpp" +#line 2566 "bison_parser.cpp" break; - case 265: /* opt_alias */ + case YYSYMBOL_opt_alias: /* opt_alias */ #line 158 "bison_parser.y" { delete (((*yyvaluep).alias_t)); } -#line 2857 "bison_parser.cpp" +#line 2572 "bison_parser.cpp" break; - case 266: /* opt_with_clause */ + case YYSYMBOL_opt_with_clause: /* opt_with_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2863 "bison_parser.cpp" +#line 2578 "bison_parser.cpp" break; - case 267: /* with_clause */ + case YYSYMBOL_with_clause: /* with_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2869 "bison_parser.cpp" +#line 2584 "bison_parser.cpp" break; - case 268: /* with_description_list */ + case YYSYMBOL_with_description_list: /* with_description_list */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_vec)); } -#line 2875 "bison_parser.cpp" +#line 2590 "bison_parser.cpp" break; - case 269: /* with_description */ + case YYSYMBOL_with_description: /* with_description */ #line 158 "bison_parser.y" { delete (((*yyvaluep).with_description_t)); } -#line 2881 "bison_parser.cpp" +#line 2596 "bison_parser.cpp" break; - case 270: /* join_clause */ + case YYSYMBOL_join_clause: /* join_clause */ #line 158 "bison_parser.y" { delete (((*yyvaluep).table)); } -#line 2887 "bison_parser.cpp" +#line 2602 "bison_parser.cpp" break; - case 271: /* opt_join_type */ + case YYSYMBOL_opt_join_type: /* opt_join_type */ #line 147 "bison_parser.y" { } -#line 2893 "bison_parser.cpp" +#line 2608 "bison_parser.cpp" break; - case 272: /* join_condition */ + case YYSYMBOL_join_condition: /* join_condition */ #line 158 "bison_parser.y" { delete (((*yyvaluep).expr)); } -#line 2899 "bison_parser.cpp" +#line 2614 "bison_parser.cpp" break; - case 274: /* ident_commalist */ + case YYSYMBOL_ident_commalist: /* ident_commalist */ #line 150 "bison_parser.y" { if ((((*yyvaluep).str_vec)) != nullptr) { @@ -2908,7 +2623,7 @@ yydestruct (const char *yymsg, } delete (((*yyvaluep).str_vec)); } -#line 2912 "bison_parser.cpp" +#line 2627 "bison_parser.cpp" break; default: @@ -2929,7 +2644,7 @@ yydestruct (const char *yymsg, int yyparse (hsql::SQLParserResult* result, yyscan_t scanner) { -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; @@ -2948,42 +2663,37 @@ static YYLTYPE yyloc_default YYLTYPE yylloc = yyloc_default; /* Number of syntax errors so far. */ - int yynerrs; + int yynerrs = 0; - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. + int yyerrstatus = 0; - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; - /* The location stack. */ + /* The location stack: array, bottom, top. */ YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls; - YYLTYPE *yylsp; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp = yyls; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3004,16 +2714,6 @@ YYLTYPE yylloc = yyloc_default; Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yylsp = yyls = yylsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = SQL_HSQL_EMPTY; /* Cause a token to be read. */ @@ -3030,7 +2730,7 @@ YYLTYPE yylloc = yyloc_default; yylloc.string_length = 0; } -#line 3034 "bison_parser.cpp" +#line 2734 "bison_parser.cpp" yylsp[0] = yylloc; goto yysetstate; @@ -3239,7 +2939,7 @@ YYLTYPE yylloc = yyloc_default; YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* input: statement_list opt_semicolon */ #line 269 "bison_parser.y" { for (SQLStatement* stmt : *(yyvsp[-1].stmt_vec)) { @@ -3258,10 +2958,10 @@ YYLTYPE yylloc = yyloc_default; } delete (yyvsp[-1].stmt_vec); } -#line 3262 "bison_parser.cpp" +#line 2962 "bison_parser.cpp" break; - case 3: + case 3: /* statement_list: statement */ #line 290 "bison_parser.y" { (yyvsp[0].statement)->stringLength = yylloc.string_length; @@ -3269,10 +2969,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.stmt_vec) = new std::vector(); (yyval.stmt_vec)->push_back((yyvsp[0].statement)); } -#line 3273 "bison_parser.cpp" +#line 2973 "bison_parser.cpp" break; - case 4: + case 4: /* statement_list: statement_list ';' statement */ #line 296 "bison_parser.y" { (yyvsp[0].statement)->stringLength = yylloc.string_length; @@ -3280,202 +2980,202 @@ YYLTYPE yylloc = yyloc_default; (yyvsp[-2].stmt_vec)->push_back((yyvsp[0].statement)); (yyval.stmt_vec) = (yyvsp[-2].stmt_vec); } -#line 3284 "bison_parser.cpp" +#line 2984 "bison_parser.cpp" break; - case 5: + case 5: /* statement: prepare_statement opt_hints */ #line 305 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].prep_stmt); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3293 "bison_parser.cpp" +#line 2993 "bison_parser.cpp" break; - case 6: + case 6: /* statement: preparable_statement opt_hints */ #line 309 "bison_parser.y" { (yyval.statement) = (yyvsp[-1].statement); (yyval.statement)->hints = (yyvsp[0].expr_vec); } -#line 3302 "bison_parser.cpp" +#line 3002 "bison_parser.cpp" break; - case 7: + case 7: /* statement: show_statement */ #line 313 "bison_parser.y" { (yyval.statement) = (yyvsp[0].show_stmt); } -#line 3310 "bison_parser.cpp" +#line 3010 "bison_parser.cpp" break; - case 8: + case 8: /* statement: import_statement */ #line 316 "bison_parser.y" { (yyval.statement) = (yyvsp[0].import_stmt); } -#line 3318 "bison_parser.cpp" +#line 3018 "bison_parser.cpp" break; - case 9: + case 9: /* statement: export_statement */ #line 319 "bison_parser.y" { (yyval.statement) = (yyvsp[0].export_stmt); } -#line 3326 "bison_parser.cpp" +#line 3026 "bison_parser.cpp" break; - case 10: + case 10: /* preparable_statement: select_statement */ #line 326 "bison_parser.y" { (yyval.statement) = (yyvsp[0].select_stmt); } -#line 3332 "bison_parser.cpp" +#line 3032 "bison_parser.cpp" break; - case 11: + case 11: /* preparable_statement: create_statement */ #line 327 "bison_parser.y" { (yyval.statement) = (yyvsp[0].create_stmt); } -#line 3338 "bison_parser.cpp" +#line 3038 "bison_parser.cpp" break; - case 12: + case 12: /* preparable_statement: insert_statement */ #line 328 "bison_parser.y" { (yyval.statement) = (yyvsp[0].insert_stmt); } -#line 3344 "bison_parser.cpp" +#line 3044 "bison_parser.cpp" break; - case 13: + case 13: /* preparable_statement: delete_statement */ #line 329 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3350 "bison_parser.cpp" +#line 3050 "bison_parser.cpp" break; - case 14: + case 14: /* preparable_statement: truncate_statement */ #line 330 "bison_parser.y" { (yyval.statement) = (yyvsp[0].delete_stmt); } -#line 3356 "bison_parser.cpp" +#line 3056 "bison_parser.cpp" break; - case 15: + case 15: /* preparable_statement: update_statement */ #line 331 "bison_parser.y" { (yyval.statement) = (yyvsp[0].update_stmt); } -#line 3362 "bison_parser.cpp" +#line 3062 "bison_parser.cpp" break; - case 16: + case 16: /* preparable_statement: drop_statement */ #line 332 "bison_parser.y" { (yyval.statement) = (yyvsp[0].drop_stmt); } -#line 3368 "bison_parser.cpp" +#line 3068 "bison_parser.cpp" break; - case 17: + case 17: /* preparable_statement: execute_statement */ #line 333 "bison_parser.y" { (yyval.statement) = (yyvsp[0].exec_stmt); } -#line 3374 "bison_parser.cpp" +#line 3074 "bison_parser.cpp" break; - case 18: + case 18: /* preparable_statement: transaction_statement */ #line 334 "bison_parser.y" { (yyval.statement) = (yyvsp[0].transaction_stmt); } -#line 3380 "bison_parser.cpp" +#line 3080 "bison_parser.cpp" break; - case 19: + case 19: /* opt_hints: WITH HINT '(' hint_list ')' */ #line 343 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[-1].expr_vec); } -#line 3386 "bison_parser.cpp" +#line 3086 "bison_parser.cpp" break; - case 20: + case 20: /* opt_hints: %empty */ #line 344 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 3392 "bison_parser.cpp" +#line 3092 "bison_parser.cpp" break; - case 21: + case 21: /* hint_list: hint */ #line 349 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 3398 "bison_parser.cpp" +#line 3098 "bison_parser.cpp" break; - case 22: + case 22: /* hint_list: hint_list ',' hint */ #line 350 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 3404 "bison_parser.cpp" +#line 3104 "bison_parser.cpp" break; - case 23: + case 23: /* hint: IDENTIFIER */ #line 354 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[0].sval); } -#line 3413 "bison_parser.cpp" +#line 3113 "bison_parser.cpp" break; - case 24: + case 24: /* hint: IDENTIFIER '(' literal_list ')' */ #line 358 "bison_parser.y" { (yyval.expr) = Expr::make(kExprHint); (yyval.expr)->name = (yyvsp[-3].sval); (yyval.expr)->exprList = (yyvsp[-1].expr_vec); } -#line 3423 "bison_parser.cpp" +#line 3123 "bison_parser.cpp" break; - case 25: + case 25: /* transaction_statement: BEGIN opt_transaction_keyword */ #line 370 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kBeginTransaction); } -#line 3431 "bison_parser.cpp" +#line 3131 "bison_parser.cpp" break; - case 26: + case 26: /* transaction_statement: ROLLBACK opt_transaction_keyword */ #line 373 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kRollbackTransaction); } -#line 3439 "bison_parser.cpp" +#line 3139 "bison_parser.cpp" break; - case 27: + case 27: /* transaction_statement: COMMIT opt_transaction_keyword */ #line 376 "bison_parser.y" { (yyval.transaction_stmt) = new TransactionStatement(kCommitTransaction); } -#line 3447 "bison_parser.cpp" +#line 3147 "bison_parser.cpp" break; - case 30: + case 30: /* prepare_statement: PREPARE IDENTIFIER FROM prepare_target_query */ #line 390 "bison_parser.y" { (yyval.prep_stmt) = new PrepareStatement(); (yyval.prep_stmt)->name = (yyvsp[-2].sval); (yyval.prep_stmt)->query = (yyvsp[0].sval); } -#line 3457 "bison_parser.cpp" +#line 3157 "bison_parser.cpp" break; - case 32: + case 32: /* execute_statement: EXECUTE IDENTIFIER */ #line 400 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[0].sval); } -#line 3466 "bison_parser.cpp" +#line 3166 "bison_parser.cpp" break; - case 33: + case 33: /* execute_statement: EXECUTE IDENTIFIER '(' opt_literal_list ')' */ #line 404 "bison_parser.y" { (yyval.exec_stmt) = new ExecuteStatement(); (yyval.exec_stmt)->name = (yyvsp[-3].sval); (yyval.exec_stmt)->parameters = (yyvsp[-1].expr_vec); } -#line 3476 "bison_parser.cpp" +#line 3176 "bison_parser.cpp" break; - case 34: + case 34: /* import_statement: IMPORT FROM file_type FILE file_path INTO table_name */ #line 418 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[-4].import_type_t)); @@ -3483,10 +3183,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3487 "bison_parser.cpp" +#line 3187 "bison_parser.cpp" break; - case 35: + case 35: /* import_statement: COPY table_name FROM file_path opt_file_type */ #line 424 "bison_parser.y" { (yyval.import_stmt) = new ImportStatement((yyvsp[0].import_type_t)); @@ -3494,10 +3194,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.import_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.import_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3498 "bison_parser.cpp" +#line 3198 "bison_parser.cpp" break; - case 36: + case 36: /* file_type: IDENTIFIER */ #line 433 "bison_parser.y" { if (strcasecmp((yyvsp[0].sval), "csv") == 0) { @@ -3513,30 +3213,30 @@ YYLTYPE yylloc = yyloc_default; } free((yyvsp[0].sval)); } -#line 3517 "bison_parser.cpp" +#line 3217 "bison_parser.cpp" break; - case 37: + case 37: /* file_path: string_literal */ #line 450 "bison_parser.y" { (yyval.sval) = strdup((yyvsp[0].expr)->name); delete (yyvsp[0].expr); } -#line 3523 "bison_parser.cpp" +#line 3223 "bison_parser.cpp" break; - case 38: + case 38: /* opt_file_type: WITH FORMAT file_type */ #line 454 "bison_parser.y" { (yyval.import_type_t) = (yyvsp[0].import_type_t); } -#line 3531 "bison_parser.cpp" +#line 3231 "bison_parser.cpp" break; - case 39: + case 39: /* opt_file_type: %empty */ #line 457 "bison_parser.y" { (yyval.import_type_t) = kImportAuto; } -#line 3537 "bison_parser.cpp" +#line 3237 "bison_parser.cpp" break; - case 40: + case 40: /* export_statement: COPY table_name TO file_path opt_file_type */ #line 466 "bison_parser.y" { (yyval.export_stmt) = new ExportStatement((yyvsp[0].import_type_t)); @@ -3544,38 +3244,38 @@ YYLTYPE yylloc = yyloc_default; (yyval.export_stmt)->schema = (yyvsp[-3].table_name).schema; (yyval.export_stmt)->tableName = (yyvsp[-3].table_name).name; } -#line 3548 "bison_parser.cpp" +#line 3248 "bison_parser.cpp" break; - case 41: + case 41: /* show_statement: SHOW TABLES */ #line 480 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowTables); } -#line 3556 "bison_parser.cpp" +#line 3256 "bison_parser.cpp" break; - case 42: + case 42: /* show_statement: SHOW COLUMNS table_name */ #line 483 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 3566 "bison_parser.cpp" +#line 3266 "bison_parser.cpp" break; - case 43: + case 43: /* show_statement: DESCRIBE table_name */ #line 488 "bison_parser.y" { (yyval.show_stmt) = new ShowStatement(kShowColumns); (yyval.show_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.show_stmt)->name = (yyvsp[0].table_name).name; } -#line 3576 "bison_parser.cpp" +#line 3276 "bison_parser.cpp" break; - case 44: + case 44: /* create_statement: CREATE TABLE opt_not_exists table_name FROM IDENTIFIER FILE file_path */ #line 502 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTableFromTbl); @@ -3590,10 +3290,10 @@ YYLTYPE yylloc = yyloc_default; free((yyvsp[-2].sval)); (yyval.create_stmt)->filePath = (yyvsp[0].sval); } -#line 3594 "bison_parser.cpp" +#line 3294 "bison_parser.cpp" break; - case 45: + case 45: /* create_statement: CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' */ #line 515 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); @@ -3602,10 +3302,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-3].table_name).name; (yyval.create_stmt)->columns = (yyvsp[-1].column_vec); } -#line 3606 "bison_parser.cpp" +#line 3306 "bison_parser.cpp" break; - case 46: + case 46: /* create_statement: CREATE TABLE opt_not_exists table_name AS select_statement */ #line 522 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateTable); @@ -3614,10 +3314,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->tableName = (yyvsp[-2].table_name).name; (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3618 "bison_parser.cpp" +#line 3318 "bison_parser.cpp" break; - case 47: + case 47: /* create_statement: CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement */ #line 529 "bison_parser.y" { (yyval.create_stmt) = new CreateStatement(kCreateView); @@ -3627,120 +3327,120 @@ YYLTYPE yylloc = yyloc_default; (yyval.create_stmt)->viewColumns = (yyvsp[-2].str_vec); (yyval.create_stmt)->select = (yyvsp[0].select_stmt); } -#line 3631 "bison_parser.cpp" +#line 3331 "bison_parser.cpp" break; - case 48: + case 48: /* opt_not_exists: IF NOT EXISTS */ #line 540 "bison_parser.y" { (yyval.bval) = true; } -#line 3637 "bison_parser.cpp" +#line 3337 "bison_parser.cpp" break; - case 49: + case 49: /* opt_not_exists: %empty */ #line 541 "bison_parser.y" { (yyval.bval) = false; } -#line 3643 "bison_parser.cpp" +#line 3343 "bison_parser.cpp" break; - case 50: + case 50: /* column_def_commalist: column_def */ #line 545 "bison_parser.y" { (yyval.column_vec) = new std::vector(); (yyval.column_vec)->push_back((yyvsp[0].column_t)); } -#line 3649 "bison_parser.cpp" +#line 3349 "bison_parser.cpp" break; - case 51: + case 51: /* column_def_commalist: column_def_commalist ',' column_def */ #line 546 "bison_parser.y" { (yyvsp[-2].column_vec)->push_back((yyvsp[0].column_t)); (yyval.column_vec) = (yyvsp[-2].column_vec); } -#line 3655 "bison_parser.cpp" +#line 3355 "bison_parser.cpp" break; - case 52: + case 52: /* column_def: IDENTIFIER column_type opt_column_nullable */ #line 550 "bison_parser.y" { (yyval.column_t) = new ColumnDefinition((yyvsp[-2].sval), (yyvsp[-1].column_type_t), (yyvsp[0].bval)); } -#line 3663 "bison_parser.cpp" +#line 3363 "bison_parser.cpp" break; - case 53: + case 53: /* column_type: INT */ #line 556 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3669 "bison_parser.cpp" +#line 3369 "bison_parser.cpp" break; - case 54: + case 54: /* column_type: INTEGER */ #line 557 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::INT}; } -#line 3675 "bison_parser.cpp" +#line 3375 "bison_parser.cpp" break; - case 55: + case 55: /* column_type: LONG */ #line 558 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::LONG}; } -#line 3681 "bison_parser.cpp" +#line 3381 "bison_parser.cpp" break; - case 56: + case 56: /* column_type: FLOAT */ #line 559 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::FLOAT}; } -#line 3687 "bison_parser.cpp" +#line 3387 "bison_parser.cpp" break; - case 57: + case 57: /* column_type: DOUBLE */ #line 560 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DOUBLE}; } -#line 3693 "bison_parser.cpp" +#line 3393 "bison_parser.cpp" break; - case 58: + case 58: /* column_type: VARCHAR '(' INTVAL ')' */ #line 561 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::VARCHAR, (yyvsp[-1].ival)}; } -#line 3699 "bison_parser.cpp" +#line 3399 "bison_parser.cpp" break; - case 59: + case 59: /* column_type: CHAR '(' INTVAL ')' */ #line 562 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::CHAR, (yyvsp[-1].ival)}; } -#line 3705 "bison_parser.cpp" +#line 3405 "bison_parser.cpp" break; - case 60: + case 60: /* column_type: TEXT */ #line 563 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::TEXT}; } -#line 3711 "bison_parser.cpp" +#line 3411 "bison_parser.cpp" break; - case 61: + case 61: /* column_type: DATETIME */ #line 564 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATETIME}; } -#line 3717 "bison_parser.cpp" +#line 3417 "bison_parser.cpp" break; - case 62: + case 62: /* column_type: DATE */ #line 565 "bison_parser.y" { (yyval.column_type_t) = ColumnType{DataType::DATE}; } -#line 3723 "bison_parser.cpp" +#line 3423 "bison_parser.cpp" break; - case 63: + case 63: /* opt_column_nullable: NULL */ #line 569 "bison_parser.y" { (yyval.bval) = true; } -#line 3729 "bison_parser.cpp" +#line 3429 "bison_parser.cpp" break; - case 64: + case 64: /* opt_column_nullable: NOT NULL */ #line 570 "bison_parser.y" { (yyval.bval) = false; } -#line 3735 "bison_parser.cpp" +#line 3435 "bison_parser.cpp" break; - case 65: + case 65: /* opt_column_nullable: %empty */ #line 571 "bison_parser.y" { (yyval.bval) = false; } -#line 3741 "bison_parser.cpp" +#line 3441 "bison_parser.cpp" break; - case 66: + case 66: /* drop_statement: DROP TABLE opt_exists table_name */ #line 581 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropTable); @@ -3748,10 +3448,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3752 "bison_parser.cpp" +#line 3452 "bison_parser.cpp" break; - case 67: + case 67: /* drop_statement: DROP VIEW opt_exists table_name */ #line 587 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropView); @@ -3759,32 +3459,32 @@ YYLTYPE yylloc = yyloc_default; (yyval.drop_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.drop_stmt)->name = (yyvsp[0].table_name).name; } -#line 3763 "bison_parser.cpp" +#line 3463 "bison_parser.cpp" break; - case 68: + case 68: /* drop_statement: DEALLOCATE PREPARE IDENTIFIER */ #line 593 "bison_parser.y" { (yyval.drop_stmt) = new DropStatement(kDropPreparedStatement); (yyval.drop_stmt)->ifExists = false; (yyval.drop_stmt)->name = (yyvsp[0].sval); } -#line 3773 "bison_parser.cpp" +#line 3473 "bison_parser.cpp" break; - case 69: + case 69: /* opt_exists: IF EXISTS */ #line 601 "bison_parser.y" { (yyval.bval) = true; } -#line 3779 "bison_parser.cpp" +#line 3479 "bison_parser.cpp" break; - case 70: + case 70: /* opt_exists: %empty */ #line 602 "bison_parser.y" { (yyval.bval) = false; } -#line 3785 "bison_parser.cpp" +#line 3485 "bison_parser.cpp" break; - case 71: + case 71: /* delete_statement: DELETE FROM table_name opt_where */ #line 611 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); @@ -3792,20 +3492,20 @@ YYLTYPE yylloc = yyloc_default; (yyval.delete_stmt)->tableName = (yyvsp[-1].table_name).name; (yyval.delete_stmt)->expr = (yyvsp[0].expr); } -#line 3796 "bison_parser.cpp" +#line 3496 "bison_parser.cpp" break; - case 72: + case 72: /* truncate_statement: TRUNCATE table_name */ #line 620 "bison_parser.y" { (yyval.delete_stmt) = new DeleteStatement(); (yyval.delete_stmt)->schema = (yyvsp[0].table_name).schema; (yyval.delete_stmt)->tableName = (yyvsp[0].table_name).name; } -#line 3806 "bison_parser.cpp" +#line 3506 "bison_parser.cpp" break; - case 73: + case 73: /* insert_statement: INSERT INTO table_name opt_column_list VALUES '(' literal_list ')' */ #line 633 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertValues); @@ -3814,10 +3514,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-4].str_vec); (yyval.insert_stmt)->values = (yyvsp[-1].expr_vec); } -#line 3818 "bison_parser.cpp" +#line 3518 "bison_parser.cpp" break; - case 74: + case 74: /* insert_statement: INSERT INTO table_name opt_column_list select_no_paren */ #line 640 "bison_parser.y" { (yyval.insert_stmt) = new InsertStatement(kInsertSelect); @@ -3826,22 +3526,22 @@ YYLTYPE yylloc = yyloc_default; (yyval.insert_stmt)->columns = (yyvsp[-1].str_vec); (yyval.insert_stmt)->select = (yyvsp[0].select_stmt); } -#line 3830 "bison_parser.cpp" +#line 3530 "bison_parser.cpp" break; - case 75: + case 75: /* opt_column_list: '(' ident_commalist ')' */ #line 651 "bison_parser.y" { (yyval.str_vec) = (yyvsp[-1].str_vec); } -#line 3836 "bison_parser.cpp" +#line 3536 "bison_parser.cpp" break; - case 76: + case 76: /* opt_column_list: %empty */ #line 652 "bison_parser.y" { (yyval.str_vec) = nullptr; } -#line 3842 "bison_parser.cpp" +#line 3542 "bison_parser.cpp" break; - case 77: + case 77: /* update_statement: UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where */ #line 662 "bison_parser.y" { (yyval.update_stmt) = new UpdateStatement(); @@ -3849,50 +3549,50 @@ YYLTYPE yylloc = yyloc_default; (yyval.update_stmt)->updates = (yyvsp[-1].update_vec); (yyval.update_stmt)->where = (yyvsp[0].expr); } -#line 3853 "bison_parser.cpp" +#line 3553 "bison_parser.cpp" break; - case 78: + case 78: /* update_clause_commalist: update_clause */ #line 671 "bison_parser.y" { (yyval.update_vec) = new std::vector(); (yyval.update_vec)->push_back((yyvsp[0].update_t)); } -#line 3859 "bison_parser.cpp" +#line 3559 "bison_parser.cpp" break; - case 79: + case 79: /* update_clause_commalist: update_clause_commalist ',' update_clause */ #line 672 "bison_parser.y" { (yyvsp[-2].update_vec)->push_back((yyvsp[0].update_t)); (yyval.update_vec) = (yyvsp[-2].update_vec); } -#line 3865 "bison_parser.cpp" +#line 3565 "bison_parser.cpp" break; - case 80: + case 80: /* update_clause: IDENTIFIER '=' expr */ #line 676 "bison_parser.y" { (yyval.update_t) = new UpdateClause(); (yyval.update_t)->column = (yyvsp[-2].sval); (yyval.update_t)->value = (yyvsp[0].expr); } -#line 3875 "bison_parser.cpp" +#line 3575 "bison_parser.cpp" break; - case 81: + case 81: /* select_statement: opt_with_clause select_with_paren */ #line 688 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3884 "bison_parser.cpp" +#line 3584 "bison_parser.cpp" break; - case 82: + case 82: /* select_statement: opt_with_clause select_no_paren */ #line 692 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); (yyval.select_stmt)->withDescriptions = (yyvsp[-1].with_description_vec); } -#line 3893 "bison_parser.cpp" +#line 3593 "bison_parser.cpp" break; - case 83: + case 83: /* select_statement: opt_with_clause select_with_paren set_operator select_within_set_operation opt_order opt_limit */ #line 696 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); @@ -3905,16 +3605,16 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); (yyval.select_stmt)->withDescriptions = (yyvsp[-5].with_description_vec); } -#line 3909 "bison_parser.cpp" +#line 3609 "bison_parser.cpp" break; - case 86: + case 86: /* select_within_set_operation_no_parentheses: select_clause */ #line 714 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[0].select_stmt); } -#line 3915 "bison_parser.cpp" +#line 3615 "bison_parser.cpp" break; - case 87: + case 87: /* select_within_set_operation_no_parentheses: select_clause set_operator select_within_set_operation */ #line 715 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); @@ -3924,22 +3624,22 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->push_back((yyvsp[-1].set_operator_t)); (yyval.select_stmt)->setOperations->back()->nestedSelectStatement = (yyvsp[0].select_stmt); } -#line 3928 "bison_parser.cpp" +#line 3628 "bison_parser.cpp" break; - case 88: + case 88: /* select_with_paren: '(' select_no_paren ')' */ #line 726 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3934 "bison_parser.cpp" +#line 3634 "bison_parser.cpp" break; - case 89: + case 89: /* select_with_paren: '(' select_with_paren ')' */ #line 727 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-1].select_stmt); } -#line 3940 "bison_parser.cpp" +#line 3640 "bison_parser.cpp" break; - case 90: + case 90: /* select_no_paren: select_clause opt_order opt_limit */ #line 731 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-2].select_stmt); @@ -3951,10 +3651,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->limit = (yyvsp[0].limit); } } -#line 3955 "bison_parser.cpp" +#line 3655 "bison_parser.cpp" break; - case 91: + case 91: /* select_no_paren: select_clause set_operator select_within_set_operation opt_order opt_limit */ #line 741 "bison_parser.y" { (yyval.select_stmt) = (yyvsp[-4].select_stmt); @@ -3966,62 +3666,62 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->setOperations->back()->resultOrder = (yyvsp[-1].order_vec); (yyval.select_stmt)->setOperations->back()->resultLimit = (yyvsp[0].limit); } -#line 3970 "bison_parser.cpp" +#line 3670 "bison_parser.cpp" break; - case 92: + case 92: /* set_operator: set_type opt_all */ #line 754 "bison_parser.y" { (yyval.set_operator_t) = (yyvsp[-1].set_operator_t); (yyval.set_operator_t)->isAll = (yyvsp[0].bval); } -#line 3979 "bison_parser.cpp" +#line 3679 "bison_parser.cpp" break; - case 93: + case 93: /* set_type: UNION */ #line 761 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetUnion; } -#line 3988 "bison_parser.cpp" +#line 3688 "bison_parser.cpp" break; - case 94: + case 94: /* set_type: INTERSECT */ #line 765 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetIntersect; } -#line 3997 "bison_parser.cpp" +#line 3697 "bison_parser.cpp" break; - case 95: + case 95: /* set_type: EXCEPT */ #line 769 "bison_parser.y" { (yyval.set_operator_t) = new SetOperation(); (yyval.set_operator_t)->setType = SetType::kSetExcept; } -#line 4006 "bison_parser.cpp" +#line 3706 "bison_parser.cpp" break; - case 96: + case 96: /* opt_all: ALL */ #line 776 "bison_parser.y" { (yyval.bval) = true; } -#line 4014 "bison_parser.cpp" +#line 3714 "bison_parser.cpp" break; - case 97: + case 97: /* opt_all: %empty */ #line 779 "bison_parser.y" { (yyval.bval) = false; } -#line 4022 "bison_parser.cpp" +#line 3722 "bison_parser.cpp" break; - case 98: + case 98: /* select_clause: SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group */ #line 785 "bison_parser.y" { (yyval.select_stmt) = new SelectStatement(); @@ -4032,212 +3732,212 @@ YYLTYPE yylloc = yyloc_default; (yyval.select_stmt)->whereClause = (yyvsp[-1].expr); (yyval.select_stmt)->groupBy = (yyvsp[0].group_t); } -#line 4036 "bison_parser.cpp" +#line 3736 "bison_parser.cpp" break; - case 99: + case 99: /* opt_distinct: DISTINCT */ #line 797 "bison_parser.y" { (yyval.bval) = true; } -#line 4042 "bison_parser.cpp" +#line 3742 "bison_parser.cpp" break; - case 100: + case 100: /* opt_distinct: %empty */ #line 798 "bison_parser.y" { (yyval.bval) = false; } -#line 4048 "bison_parser.cpp" +#line 3748 "bison_parser.cpp" break; - case 102: + case 102: /* opt_from_clause: from_clause */ #line 806 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4054 "bison_parser.cpp" +#line 3754 "bison_parser.cpp" break; - case 103: + case 103: /* opt_from_clause: %empty */ #line 807 "bison_parser.y" { (yyval.table) = nullptr; } -#line 4060 "bison_parser.cpp" +#line 3760 "bison_parser.cpp" break; - case 104: + case 104: /* from_clause: FROM table_ref */ #line 811 "bison_parser.y" { (yyval.table) = (yyvsp[0].table); } -#line 4066 "bison_parser.cpp" +#line 3766 "bison_parser.cpp" break; - case 105: + case 105: /* opt_where: WHERE expr */ #line 816 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4072 "bison_parser.cpp" +#line 3772 "bison_parser.cpp" break; - case 106: + case 106: /* opt_where: %empty */ #line 817 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4078 "bison_parser.cpp" +#line 3778 "bison_parser.cpp" break; - case 107: + case 107: /* opt_group: GROUP BY expr_list opt_having */ #line 821 "bison_parser.y" { (yyval.group_t) = new GroupByDescription(); (yyval.group_t)->columns = (yyvsp[-1].expr_vec); (yyval.group_t)->having = (yyvsp[0].expr); } -#line 4088 "bison_parser.cpp" +#line 3788 "bison_parser.cpp" break; - case 108: + case 108: /* opt_group: %empty */ #line 826 "bison_parser.y" { (yyval.group_t) = nullptr; } -#line 4094 "bison_parser.cpp" +#line 3794 "bison_parser.cpp" break; - case 109: + case 109: /* opt_having: HAVING expr */ #line 830 "bison_parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 4100 "bison_parser.cpp" +#line 3800 "bison_parser.cpp" break; - case 110: + case 110: /* opt_having: %empty */ #line 831 "bison_parser.y" { (yyval.expr) = nullptr; } -#line 4106 "bison_parser.cpp" +#line 3806 "bison_parser.cpp" break; - case 111: + case 111: /* opt_order: ORDER BY order_list */ #line 835 "bison_parser.y" { (yyval.order_vec) = (yyvsp[0].order_vec); } -#line 4112 "bison_parser.cpp" +#line 3812 "bison_parser.cpp" break; - case 112: + case 112: /* opt_order: %empty */ #line 836 "bison_parser.y" { (yyval.order_vec) = nullptr; } -#line 4118 "bison_parser.cpp" +#line 3818 "bison_parser.cpp" break; - case 113: + case 113: /* order_list: order_desc */ #line 840 "bison_parser.y" { (yyval.order_vec) = new std::vector(); (yyval.order_vec)->push_back((yyvsp[0].order)); } -#line 4124 "bison_parser.cpp" +#line 3824 "bison_parser.cpp" break; - case 114: + case 114: /* order_list: order_list ',' order_desc */ #line 841 "bison_parser.y" { (yyvsp[-2].order_vec)->push_back((yyvsp[0].order)); (yyval.order_vec) = (yyvsp[-2].order_vec); } -#line 4130 "bison_parser.cpp" +#line 3830 "bison_parser.cpp" break; - case 115: + case 115: /* order_desc: expr opt_order_type */ #line 845 "bison_parser.y" { (yyval.order) = new OrderDescription((yyvsp[0].order_type), (yyvsp[-1].expr)); } -#line 4136 "bison_parser.cpp" +#line 3836 "bison_parser.cpp" break; - case 116: + case 116: /* opt_order_type: ASC */ #line 849 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4142 "bison_parser.cpp" +#line 3842 "bison_parser.cpp" break; - case 117: + case 117: /* opt_order_type: DESC */ #line 850 "bison_parser.y" { (yyval.order_type) = kOrderDesc; } -#line 4148 "bison_parser.cpp" +#line 3848 "bison_parser.cpp" break; - case 118: + case 118: /* opt_order_type: %empty */ #line 851 "bison_parser.y" { (yyval.order_type) = kOrderAsc; } -#line 4154 "bison_parser.cpp" +#line 3854 "bison_parser.cpp" break; - case 119: + case 119: /* opt_top: TOP int_literal */ #line 857 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4160 "bison_parser.cpp" +#line 3860 "bison_parser.cpp" break; - case 120: + case 120: /* opt_top: %empty */ #line 858 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4166 "bison_parser.cpp" +#line 3866 "bison_parser.cpp" break; - case 121: + case 121: /* opt_limit: LIMIT expr */ #line 862 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[0].expr), nullptr); } -#line 4172 "bison_parser.cpp" +#line 3872 "bison_parser.cpp" break; - case 122: + case 122: /* opt_limit: OFFSET expr */ #line 863 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4178 "bison_parser.cpp" +#line 3878 "bison_parser.cpp" break; - case 123: + case 123: /* opt_limit: LIMIT expr OFFSET expr */ #line 864 "bison_parser.y" { (yyval.limit) = new LimitDescription((yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4184 "bison_parser.cpp" +#line 3884 "bison_parser.cpp" break; - case 124: + case 124: /* opt_limit: LIMIT ALL */ #line 865 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, nullptr); } -#line 4190 "bison_parser.cpp" +#line 3890 "bison_parser.cpp" break; - case 125: + case 125: /* opt_limit: LIMIT ALL OFFSET expr */ #line 866 "bison_parser.y" { (yyval.limit) = new LimitDescription(nullptr, (yyvsp[0].expr)); } -#line 4196 "bison_parser.cpp" +#line 3896 "bison_parser.cpp" break; - case 126: + case 126: /* opt_limit: %empty */ #line 867 "bison_parser.y" { (yyval.limit) = nullptr; } -#line 4202 "bison_parser.cpp" +#line 3902 "bison_parser.cpp" break; - case 127: + case 127: /* expr_list: expr_alias */ #line 874 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4208 "bison_parser.cpp" +#line 3908 "bison_parser.cpp" break; - case 128: + case 128: /* expr_list: expr_list ',' expr_alias */ #line 875 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4214 "bison_parser.cpp" +#line 3914 "bison_parser.cpp" break; - case 129: + case 129: /* opt_literal_list: literal_list */ #line 879 "bison_parser.y" { (yyval.expr_vec) = (yyvsp[0].expr_vec); } -#line 4220 "bison_parser.cpp" +#line 3920 "bison_parser.cpp" break; - case 130: + case 130: /* opt_literal_list: %empty */ #line 880 "bison_parser.y" { (yyval.expr_vec) = nullptr; } -#line 4226 "bison_parser.cpp" +#line 3926 "bison_parser.cpp" break; - case 131: + case 131: /* literal_list: literal */ #line 884 "bison_parser.y" { (yyval.expr_vec) = new std::vector(); (yyval.expr_vec)->push_back((yyvsp[0].expr)); } -#line 4232 "bison_parser.cpp" +#line 3932 "bison_parser.cpp" break; - case 132: + case 132: /* literal_list: literal_list ',' literal */ #line 885 "bison_parser.y" { (yyvsp[-2].expr_vec)->push_back((yyvsp[0].expr)); (yyval.expr_vec) = (yyvsp[-2].expr_vec); } -#line 4238 "bison_parser.cpp" +#line 3938 "bison_parser.cpp" break; - case 133: + case 133: /* expr_alias: expr opt_alias */ #line 889 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); @@ -4246,386 +3946,386 @@ YYLTYPE yylloc = yyloc_default; delete (yyvsp[0].alias_t); } } -#line 4250 "bison_parser.cpp" +#line 3950 "bison_parser.cpp" break; - case 139: + case 139: /* operand: '(' expr ')' */ #line 907 "bison_parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4256 "bison_parser.cpp" +#line 3956 "bison_parser.cpp" break; - case 149: + case 149: /* operand: '(' select_no_paren ')' */ #line 917 "bison_parser.y" { (yyval.expr) = Expr::makeSelect((yyvsp[-1].select_stmt)); } -#line 4262 "bison_parser.cpp" +#line 3962 "bison_parser.cpp" break; - case 152: + case 152: /* unary_expr: '-' operand */ #line 926 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpUnaryMinus, (yyvsp[0].expr)); } -#line 4268 "bison_parser.cpp" +#line 3968 "bison_parser.cpp" break; - case 153: + case 153: /* unary_expr: NOT operand */ #line 927 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, (yyvsp[0].expr)); } -#line 4274 "bison_parser.cpp" +#line 3974 "bison_parser.cpp" break; - case 154: + case 154: /* unary_expr: operand ISNULL */ #line 928 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-1].expr)); } -#line 4280 "bison_parser.cpp" +#line 3980 "bison_parser.cpp" break; - case 155: + case 155: /* unary_expr: operand IS NULL */ #line 929 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpIsNull, (yyvsp[-2].expr)); } -#line 4286 "bison_parser.cpp" +#line 3986 "bison_parser.cpp" break; - case 156: + case 156: /* unary_expr: operand IS NOT NULL */ #line 930 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeOpUnary(kOpIsNull, (yyvsp[-3].expr))); } -#line 4292 "bison_parser.cpp" +#line 3992 "bison_parser.cpp" break; - case 158: + case 158: /* binary_expr: operand '-' operand */ #line 935 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpMinus, (yyvsp[0].expr)); } -#line 4298 "bison_parser.cpp" +#line 3998 "bison_parser.cpp" break; - case 159: + case 159: /* binary_expr: operand '+' operand */ #line 936 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPlus, (yyvsp[0].expr)); } -#line 4304 "bison_parser.cpp" +#line 4004 "bison_parser.cpp" break; - case 160: + case 160: /* binary_expr: operand '/' operand */ #line 937 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpSlash, (yyvsp[0].expr)); } -#line 4310 "bison_parser.cpp" +#line 4010 "bison_parser.cpp" break; - case 161: + case 161: /* binary_expr: operand '*' operand */ #line 938 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAsterisk, (yyvsp[0].expr)); } -#line 4316 "bison_parser.cpp" +#line 4016 "bison_parser.cpp" break; - case 162: + case 162: /* binary_expr: operand '%' operand */ #line 939 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpPercentage, (yyvsp[0].expr)); } -#line 4322 "bison_parser.cpp" +#line 4022 "bison_parser.cpp" break; - case 163: + case 163: /* binary_expr: operand '^' operand */ #line 940 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpCaret, (yyvsp[0].expr)); } -#line 4328 "bison_parser.cpp" +#line 4028 "bison_parser.cpp" break; - case 164: + case 164: /* binary_expr: operand LIKE operand */ #line 941 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLike, (yyvsp[0].expr)); } -#line 4334 "bison_parser.cpp" +#line 4034 "bison_parser.cpp" break; - case 165: + case 165: /* binary_expr: operand NOT LIKE operand */ #line 942 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-3].expr), kOpNotLike, (yyvsp[0].expr)); } -#line 4340 "bison_parser.cpp" +#line 4040 "bison_parser.cpp" break; - case 166: + case 166: /* binary_expr: operand ILIKE operand */ #line 943 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpILike, (yyvsp[0].expr)); } -#line 4346 "bison_parser.cpp" +#line 4046 "bison_parser.cpp" break; - case 167: + case 167: /* binary_expr: operand CONCAT operand */ #line 944 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpConcat, (yyvsp[0].expr)); } -#line 4352 "bison_parser.cpp" +#line 4052 "bison_parser.cpp" break; - case 168: + case 168: /* logic_expr: expr AND expr */ #line 948 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpAnd, (yyvsp[0].expr)); } -#line 4358 "bison_parser.cpp" +#line 4058 "bison_parser.cpp" break; - case 169: + case 169: /* logic_expr: expr OR expr */ #line 949 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpOr, (yyvsp[0].expr)); } -#line 4364 "bison_parser.cpp" +#line 4064 "bison_parser.cpp" break; - case 170: + case 170: /* in_expr: operand IN '(' expr_list ')' */ #line 953 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].expr_vec)); } -#line 4370 "bison_parser.cpp" +#line 4070 "bison_parser.cpp" break; - case 171: + case 171: /* in_expr: operand NOT IN '(' expr_list ')' */ #line 954 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].expr_vec))); } -#line 4376 "bison_parser.cpp" +#line 4076 "bison_parser.cpp" break; - case 172: + case 172: /* in_expr: operand IN '(' select_no_paren ')' */ #line 955 "bison_parser.y" { (yyval.expr) = Expr::makeInOperator((yyvsp[-4].expr), (yyvsp[-1].select_stmt)); } -#line 4382 "bison_parser.cpp" +#line 4082 "bison_parser.cpp" break; - case 173: + case 173: /* in_expr: operand NOT IN '(' select_no_paren ')' */ #line 956 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeInOperator((yyvsp[-5].expr), (yyvsp[-1].select_stmt))); } -#line 4388 "bison_parser.cpp" +#line 4088 "bison_parser.cpp" break; - case 174: + case 174: /* case_expr: CASE expr case_list END */ #line 962 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-2].expr), (yyvsp[-1].expr), nullptr); } -#line 4394 "bison_parser.cpp" +#line 4094 "bison_parser.cpp" break; - case 175: + case 175: /* case_expr: CASE expr case_list ELSE expr END */ #line 963 "bison_parser.y" { (yyval.expr) = Expr::makeCase((yyvsp[-4].expr), (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4400 "bison_parser.cpp" +#line 4100 "bison_parser.cpp" break; - case 176: + case 176: /* case_expr: CASE case_list END */ #line 964 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-1].expr), nullptr); } -#line 4406 "bison_parser.cpp" +#line 4106 "bison_parser.cpp" break; - case 177: + case 177: /* case_expr: CASE case_list ELSE expr END */ #line 965 "bison_parser.y" { (yyval.expr) = Expr::makeCase(nullptr, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4412 "bison_parser.cpp" +#line 4112 "bison_parser.cpp" break; - case 178: + case 178: /* case_list: WHEN expr THEN expr */ #line 969 "bison_parser.y" { (yyval.expr) = Expr::makeCaseList(Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4418 "bison_parser.cpp" +#line 4118 "bison_parser.cpp" break; - case 179: + case 179: /* case_list: case_list WHEN expr THEN expr */ #line 970 "bison_parser.y" { (yyval.expr) = Expr::caseListAppend((yyvsp[-4].expr), Expr::makeCaseListElement((yyvsp[-2].expr), (yyvsp[0].expr))); } -#line 4424 "bison_parser.cpp" +#line 4124 "bison_parser.cpp" break; - case 180: + case 180: /* exists_expr: EXISTS '(' select_no_paren ')' */ #line 974 "bison_parser.y" { (yyval.expr) = Expr::makeExists((yyvsp[-1].select_stmt)); } -#line 4430 "bison_parser.cpp" +#line 4130 "bison_parser.cpp" break; - case 181: + case 181: /* exists_expr: NOT EXISTS '(' select_no_paren ')' */ #line 975 "bison_parser.y" { (yyval.expr) = Expr::makeOpUnary(kOpNot, Expr::makeExists((yyvsp[-1].select_stmt))); } -#line 4436 "bison_parser.cpp" +#line 4136 "bison_parser.cpp" break; - case 182: + case 182: /* comp_expr: operand '=' operand */ #line 979 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4442 "bison_parser.cpp" +#line 4142 "bison_parser.cpp" break; - case 183: + case 183: /* comp_expr: operand EQUALS operand */ #line 980 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpEquals, (yyvsp[0].expr)); } -#line 4448 "bison_parser.cpp" +#line 4148 "bison_parser.cpp" break; - case 184: + case 184: /* comp_expr: operand NOTEQUALS operand */ #line 981 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpNotEquals, (yyvsp[0].expr)); } -#line 4454 "bison_parser.cpp" +#line 4154 "bison_parser.cpp" break; - case 185: + case 185: /* comp_expr: operand '<' operand */ #line 982 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLess, (yyvsp[0].expr)); } -#line 4460 "bison_parser.cpp" +#line 4160 "bison_parser.cpp" break; - case 186: + case 186: /* comp_expr: operand '>' operand */ #line 983 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreater, (yyvsp[0].expr)); } -#line 4466 "bison_parser.cpp" +#line 4166 "bison_parser.cpp" break; - case 187: + case 187: /* comp_expr: operand LESSEQ operand */ #line 984 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpLessEq, (yyvsp[0].expr)); } -#line 4472 "bison_parser.cpp" +#line 4172 "bison_parser.cpp" break; - case 188: + case 188: /* comp_expr: operand GREATEREQ operand */ #line 985 "bison_parser.y" { (yyval.expr) = Expr::makeOpBinary((yyvsp[-2].expr), kOpGreaterEq, (yyvsp[0].expr)); } -#line 4478 "bison_parser.cpp" +#line 4178 "bison_parser.cpp" break; - case 189: + case 189: /* function_expr: IDENTIFIER '(' ')' */ #line 989 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-2].sval), new std::vector(), false); } -#line 4484 "bison_parser.cpp" +#line 4184 "bison_parser.cpp" break; - case 190: + case 190: /* function_expr: IDENTIFIER '(' opt_distinct expr_list ')' */ #line 990 "bison_parser.y" { (yyval.expr) = Expr::makeFunctionRef((yyvsp[-4].sval), (yyvsp[-1].expr_vec), (yyvsp[-2].bval)); } -#line 4490 "bison_parser.cpp" +#line 4190 "bison_parser.cpp" break; - case 191: + case 191: /* extract_expr: EXTRACT '(' datetime_field FROM expr ')' */ #line 994 "bison_parser.y" { (yyval.expr) = Expr::makeExtract((yyvsp[-3].datetime_field), (yyvsp[-1].expr)); } -#line 4496 "bison_parser.cpp" +#line 4196 "bison_parser.cpp" break; - case 192: + case 192: /* cast_expr: CAST '(' expr AS column_type ')' */ #line 998 "bison_parser.y" { (yyval.expr) = Expr::makeCast((yyvsp[-3].expr), (yyvsp[-1].column_type_t)); } -#line 4502 "bison_parser.cpp" +#line 4202 "bison_parser.cpp" break; - case 193: + case 193: /* datetime_field: SECOND */ #line 1002 "bison_parser.y" { (yyval.datetime_field) = kDatetimeSecond; } -#line 4508 "bison_parser.cpp" +#line 4208 "bison_parser.cpp" break; - case 194: + case 194: /* datetime_field: MINUTE */ #line 1003 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMinute; } -#line 4514 "bison_parser.cpp" +#line 4214 "bison_parser.cpp" break; - case 195: + case 195: /* datetime_field: HOUR */ #line 1004 "bison_parser.y" { (yyval.datetime_field) = kDatetimeHour; } -#line 4520 "bison_parser.cpp" +#line 4220 "bison_parser.cpp" break; - case 196: + case 196: /* datetime_field: DAY */ #line 1005 "bison_parser.y" { (yyval.datetime_field) = kDatetimeDay; } -#line 4526 "bison_parser.cpp" +#line 4226 "bison_parser.cpp" break; - case 197: + case 197: /* datetime_field: MONTH */ #line 1006 "bison_parser.y" { (yyval.datetime_field) = kDatetimeMonth; } -#line 4532 "bison_parser.cpp" +#line 4232 "bison_parser.cpp" break; - case 198: + case 198: /* datetime_field: YEAR */ #line 1007 "bison_parser.y" { (yyval.datetime_field) = kDatetimeYear; } -#line 4538 "bison_parser.cpp" +#line 4238 "bison_parser.cpp" break; - case 199: + case 199: /* array_expr: ARRAY '[' expr_list ']' */ #line 1011 "bison_parser.y" { (yyval.expr) = Expr::makeArray((yyvsp[-1].expr_vec)); } -#line 4544 "bison_parser.cpp" +#line 4244 "bison_parser.cpp" break; - case 200: + case 200: /* array_index: operand '[' int_literal ']' */ #line 1015 "bison_parser.y" { (yyval.expr) = Expr::makeArrayIndex((yyvsp[-3].expr), (yyvsp[-1].expr)->ival); } -#line 4550 "bison_parser.cpp" +#line 4250 "bison_parser.cpp" break; - case 201: + case 201: /* between_expr: operand BETWEEN operand AND operand */ #line 1019 "bison_parser.y" { (yyval.expr) = Expr::makeBetween((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4556 "bison_parser.cpp" +#line 4256 "bison_parser.cpp" break; - case 202: + case 202: /* column_name: IDENTIFIER */ #line 1023 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[0].sval)); } -#line 4562 "bison_parser.cpp" +#line 4262 "bison_parser.cpp" break; - case 203: + case 203: /* column_name: IDENTIFIER '.' IDENTIFIER */ #line 1024 "bison_parser.y" { (yyval.expr) = Expr::makeColumnRef((yyvsp[-2].sval), (yyvsp[0].sval)); } -#line 4568 "bison_parser.cpp" +#line 4268 "bison_parser.cpp" break; - case 204: + case 204: /* column_name: '*' */ #line 1025 "bison_parser.y" { (yyval.expr) = Expr::makeStar(); } -#line 4574 "bison_parser.cpp" +#line 4274 "bison_parser.cpp" break; - case 205: + case 205: /* column_name: IDENTIFIER '.' '*' */ #line 1026 "bison_parser.y" { (yyval.expr) = Expr::makeStar((yyvsp[-2].sval)); } -#line 4580 "bison_parser.cpp" +#line 4280 "bison_parser.cpp" break; - case 211: + case 211: /* string_literal: STRING */ #line 1038 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].sval)); } -#line 4586 "bison_parser.cpp" +#line 4286 "bison_parser.cpp" break; - case 212: + case 212: /* bool_literal: TRUE */ #line 1042 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(true); } -#line 4592 "bison_parser.cpp" +#line 4292 "bison_parser.cpp" break; - case 213: + case 213: /* bool_literal: FALSE */ #line 1043 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral(false); } -#line 4598 "bison_parser.cpp" +#line 4298 "bison_parser.cpp" break; - case 214: + case 214: /* num_literal: FLOATVAL */ #line 1047 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].fval)); } -#line 4604 "bison_parser.cpp" +#line 4304 "bison_parser.cpp" break; - case 216: + case 216: /* int_literal: INTVAL */ #line 1052 "bison_parser.y" { (yyval.expr) = Expr::makeLiteral((yyvsp[0].ival)); } -#line 4610 "bison_parser.cpp" +#line 4310 "bison_parser.cpp" break; - case 217: + case 217: /* null_literal: NULL */ #line 1056 "bison_parser.y" { (yyval.expr) = Expr::makeNullLiteral(); } -#line 4616 "bison_parser.cpp" +#line 4316 "bison_parser.cpp" break; - case 218: + case 218: /* param_expr: '?' */ #line 1060 "bison_parser.y" { (yyval.expr) = Expr::makeParameter(yylloc.total_column); (yyval.expr)->ival2 = yyloc.param_list.size(); yyloc.param_list.push_back((yyval.expr)); } -#line 4626 "bison_parser.cpp" +#line 4326 "bison_parser.cpp" break; - case 220: + case 220: /* table_ref: table_ref_commalist ',' table_ref_atomic */ #line 1073 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); @@ -4633,10 +4333,10 @@ YYLTYPE yylloc = yyloc_default; tbl->list = (yyvsp[-2].table_vec); (yyval.table) = tbl; } -#line 4637 "bison_parser.cpp" +#line 4337 "bison_parser.cpp" break; - case 224: + case 224: /* nonjoin_table_ref_atomic: '(' select_statement ')' opt_table_alias */ #line 1089 "bison_parser.y" { auto tbl = new TableRef(kTableSelect); @@ -4644,22 +4344,22 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4648 "bison_parser.cpp" +#line 4348 "bison_parser.cpp" break; - case 225: + case 225: /* table_ref_commalist: table_ref_atomic */ #line 1098 "bison_parser.y" { (yyval.table_vec) = new std::vector(); (yyval.table_vec)->push_back((yyvsp[0].table)); } -#line 4654 "bison_parser.cpp" +#line 4354 "bison_parser.cpp" break; - case 226: + case 226: /* table_ref_commalist: table_ref_commalist ',' table_ref_atomic */ #line 1099 "bison_parser.y" { (yyvsp[-2].table_vec)->push_back((yyvsp[0].table)); (yyval.table_vec) = (yyvsp[-2].table_vec); } -#line 4660 "bison_parser.cpp" +#line 4360 "bison_parser.cpp" break; - case 227: + case 227: /* table_ref_name: table_name opt_table_alias */ #line 1104 "bison_parser.y" { auto tbl = new TableRef(kTableName); @@ -4668,102 +4368,102 @@ YYLTYPE yylloc = yyloc_default; tbl->alias = (yyvsp[0].alias_t); (yyval.table) = tbl; } -#line 4672 "bison_parser.cpp" +#line 4372 "bison_parser.cpp" break; - case 228: + case 228: /* table_ref_name_no_alias: table_name */ #line 1115 "bison_parser.y" { (yyval.table) = new TableRef(kTableName); (yyval.table)->schema = (yyvsp[0].table_name).schema; (yyval.table)->name = (yyvsp[0].table_name).name; } -#line 4682 "bison_parser.cpp" +#line 4382 "bison_parser.cpp" break; - case 229: + case 229: /* table_name: IDENTIFIER */ #line 1124 "bison_parser.y" { (yyval.table_name).schema = nullptr; (yyval.table_name).name = (yyvsp[0].sval);} -#line 4688 "bison_parser.cpp" +#line 4388 "bison_parser.cpp" break; - case 230: + case 230: /* table_name: IDENTIFIER '.' IDENTIFIER */ #line 1125 "bison_parser.y" { (yyval.table_name).schema = (yyvsp[-2].sval); (yyval.table_name).name = (yyvsp[0].sval); } -#line 4694 "bison_parser.cpp" +#line 4394 "bison_parser.cpp" break; - case 232: + case 232: /* table_alias: AS IDENTIFIER '(' ident_commalist ')' */ #line 1131 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[-3].sval), (yyvsp[-1].str_vec)); } -#line 4700 "bison_parser.cpp" +#line 4400 "bison_parser.cpp" break; - case 234: + case 234: /* opt_table_alias: %empty */ #line 1137 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4706 "bison_parser.cpp" +#line 4406 "bison_parser.cpp" break; - case 235: + case 235: /* alias: AS IDENTIFIER */ #line 1142 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4712 "bison_parser.cpp" +#line 4412 "bison_parser.cpp" break; - case 236: + case 236: /* alias: IDENTIFIER */ #line 1143 "bison_parser.y" { (yyval.alias_t) = new Alias((yyvsp[0].sval)); } -#line 4718 "bison_parser.cpp" +#line 4418 "bison_parser.cpp" break; - case 238: + case 238: /* opt_alias: %empty */ #line 1149 "bison_parser.y" { (yyval.alias_t) = nullptr; } -#line 4724 "bison_parser.cpp" +#line 4424 "bison_parser.cpp" break; - case 240: + case 240: /* opt_with_clause: %empty */ #line 1159 "bison_parser.y" { (yyval.with_description_vec) = nullptr; } -#line 4730 "bison_parser.cpp" +#line 4430 "bison_parser.cpp" break; - case 241: + case 241: /* with_clause: WITH with_description_list */ #line 1163 "bison_parser.y" { (yyval.with_description_vec) = (yyvsp[0].with_description_vec); } -#line 4736 "bison_parser.cpp" +#line 4436 "bison_parser.cpp" break; - case 242: + case 242: /* with_description_list: with_description */ #line 1167 "bison_parser.y" { (yyval.with_description_vec) = new std::vector(); (yyval.with_description_vec)->push_back((yyvsp[0].with_description_t)); } -#line 4745 "bison_parser.cpp" +#line 4445 "bison_parser.cpp" break; - case 243: + case 243: /* with_description_list: with_description_list ',' with_description */ #line 1171 "bison_parser.y" { (yyvsp[-2].with_description_vec)->push_back((yyvsp[0].with_description_t)); (yyval.with_description_vec) = (yyvsp[-2].with_description_vec); } -#line 4754 "bison_parser.cpp" +#line 4454 "bison_parser.cpp" break; - case 244: + case 244: /* with_description: IDENTIFIER AS select_with_paren */ #line 1178 "bison_parser.y" { (yyval.with_description_t) = new WithDescription(); (yyval.with_description_t)->alias = (yyvsp[-2].sval); (yyval.with_description_t)->select = (yyvsp[0].select_stmt); } -#line 4764 "bison_parser.cpp" +#line 4464 "bison_parser.cpp" break; - case 245: + case 245: /* join_clause: table_ref_atomic NATURAL JOIN nonjoin_table_ref_atomic */ #line 1192 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); @@ -4772,10 +4472,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->left = (yyvsp[-3].table); (yyval.table)->join->right = (yyvsp[0].table); } -#line 4776 "bison_parser.cpp" +#line 4476 "bison_parser.cpp" break; - case 246: + case 246: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic ON join_condition */ #line 1200 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); @@ -4785,10 +4485,10 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->right = (yyvsp[-2].table); (yyval.table)->join->condition = (yyvsp[0].expr); } -#line 4789 "bison_parser.cpp" +#line 4489 "bison_parser.cpp" break; - case 247: + case 247: /* join_clause: table_ref_atomic opt_join_type JOIN table_ref_atomic USING '(' column_name ')' */ #line 1210 "bison_parser.y" { (yyval.table) = new TableRef(kTableJoin); @@ -4805,83 +4505,83 @@ YYLTYPE yylloc = yyloc_default; (yyval.table)->join->condition = Expr::makeOpBinary(left_col, kOpEquals, right_col); delete (yyvsp[-1].expr); } -#line 4809 "bison_parser.cpp" +#line 4509 "bison_parser.cpp" break; - case 248: + case 248: /* opt_join_type: INNER */ #line 1228 "bison_parser.y" { (yyval.uval) = kJoinInner; } -#line 4815 "bison_parser.cpp" +#line 4515 "bison_parser.cpp" break; - case 249: + case 249: /* opt_join_type: LEFT OUTER */ #line 1229 "bison_parser.y" { (yyval.uval) = kJoinLeft; } -#line 4821 "bison_parser.cpp" +#line 4521 "bison_parser.cpp" break; - case 250: + case 250: /* opt_join_type: LEFT */ #line 1230 "bison_parser.y" { (yyval.uval) = kJoinLeft; } -#line 4827 "bison_parser.cpp" +#line 4527 "bison_parser.cpp" break; - case 251: + case 251: /* opt_join_type: RIGHT OUTER */ #line 1231 "bison_parser.y" { (yyval.uval) = kJoinRight; } -#line 4833 "bison_parser.cpp" +#line 4533 "bison_parser.cpp" break; - case 252: + case 252: /* opt_join_type: RIGHT */ #line 1232 "bison_parser.y" { (yyval.uval) = kJoinRight; } -#line 4839 "bison_parser.cpp" +#line 4539 "bison_parser.cpp" break; - case 253: + case 253: /* opt_join_type: FULL OUTER */ #line 1233 "bison_parser.y" { (yyval.uval) = kJoinFull; } -#line 4845 "bison_parser.cpp" +#line 4545 "bison_parser.cpp" break; - case 254: + case 254: /* opt_join_type: OUTER */ #line 1234 "bison_parser.y" { (yyval.uval) = kJoinFull; } -#line 4851 "bison_parser.cpp" +#line 4551 "bison_parser.cpp" break; - case 255: + case 255: /* opt_join_type: FULL */ #line 1235 "bison_parser.y" { (yyval.uval) = kJoinFull; } -#line 4857 "bison_parser.cpp" +#line 4557 "bison_parser.cpp" break; - case 256: + case 256: /* opt_join_type: CROSS */ #line 1236 "bison_parser.y" { (yyval.uval) = kJoinCross; } -#line 4863 "bison_parser.cpp" +#line 4563 "bison_parser.cpp" break; - case 257: + case 257: /* opt_join_type: %empty */ #line 1237 "bison_parser.y" { (yyval.uval) = kJoinInner; } -#line 4869 "bison_parser.cpp" +#line 4569 "bison_parser.cpp" break; - case 261: + case 261: /* ident_commalist: IDENTIFIER */ #line 1257 "bison_parser.y" { (yyval.str_vec) = new std::vector(); (yyval.str_vec)->push_back((yyvsp[0].sval)); } -#line 4875 "bison_parser.cpp" +#line 4575 "bison_parser.cpp" break; - case 262: + case 262: /* ident_commalist: ident_commalist ',' IDENTIFIER */ #line 1258 "bison_parser.y" { (yyvsp[-2].str_vec)->push_back((yyvsp[0].sval)); (yyval.str_vec) = (yyvsp[-2].str_vec); } -#line 4881 "bison_parser.cpp" +#line 4581 "bison_parser.cpp" break; -#line 4885 "bison_parser.cpp" +#line 4585 "bison_parser.cpp" default: break; } @@ -5076,13 +4776,13 @@ YYLTYPE yylloc = yyloc_default; yyexhaustedlab: yyerror (&yylloc, result, scanner, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != SQL_HSQL_EMPTY) { diff --git a/src/parser/bison_parser.h b/src/parser/bison_parser.h index 7e872075..aa7b6558 100644 --- a/src/parser/bison_parser.h +++ b/src/parser/bison_parser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison interface for Yacc-like parsers in C diff --git a/src/parser/flex_lexer.cpp b/src/parser/flex_lexer.cpp index a26105cf..f1305f36 100644 --- a/src/parser/flex_lexer.cpp +++ b/src/parser/flex_lexer.cpp @@ -573,8 +573,8 @@ static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 158 -#define YY_END_OF_BUFFER 159 +#define YY_NUM_RULES 159 +#define YY_END_OF_BUFFER 160 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -582,28 +582,28 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1082] = +static const flex_int16_t yy_accept[1120] = { 0, - 0, 0, 155, 155, 2, 2, 159, 157, 4, 4, - 157, 157, 147, 153, 147, 147, 150, 147, 147, 147, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 147, 155, 156, 2, 2, 3, + 0, 0, 156, 156, 2, 2, 160, 158, 4, 4, + 158, 158, 147, 154, 147, 147, 151, 147, 147, 147, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 147, 156, 157, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 142, 0, 1, 150, - 149, 148, 144, 143, 141, 145, 152, 152, 152, 152, - - 152, 152, 120, 152, 121, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 122, - 152, 152, 123, 124, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 125, 126, 127, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 128, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 146, 155, 154, 2, 2, - 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 4, 142, 0, 1, 0, + 149, 148, 151, 144, 143, 141, 145, 153, 153, 153, + + 153, 153, 153, 120, 153, 121, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 122, 153, 153, 123, 124, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 125, 126, 127, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 128, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 146, 156, 155, 2, + 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -613,19 +613,19 @@ static const flex_int16_t yy_accept[1082] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 151, 148, 108, 152, 109, 152, 152, 110, 152, 111, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 132, 152, 152, 152, 152, 152, 152, - - 152, 152, 152, 112, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 113, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 114, 152, 152, - 115, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 116, 152, 152, 117, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 118, 152, - 152, 152, 152, 152, 152, 152, 152, 119, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 152, 0, 148, 108, 153, 109, 153, 153, + 110, 153, 111, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 132, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 112, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 113, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 114, 153, 153, 115, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 116, 153, 153, 117, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 118, 153, 153, 153, 153, 153, 153, 153, 153, + 119, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -637,20 +637,20 @@ static const flex_int16_t yy_accept[1082] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 152, 152, 152, 152, 152, 152, 152, 78, - - 152, 79, 41, 80, 152, 152, 152, 81, 152, 152, - 82, 152, 152, 152, 152, 84, 152, 152, 152, 85, - 86, 152, 152, 152, 152, 152, 152, 152, 87, 152, - 152, 88, 89, 152, 152, 90, 152, 91, 131, 152, - 152, 152, 152, 152, 152, 92, 152, 93, 94, 95, - 152, 97, 152, 98, 152, 152, 152, 152, 99, 152, - 152, 152, 152, 152, 100, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 101, 152, 152, 152, 152, 102, - 103, 104, 152, 135, 152, 152, 152, 152, 152, 152, - 152, 152, 105, 152, 106, 152, 107, 134, 2, 2, - - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 153, 153, 153, + + 153, 153, 153, 153, 78, 153, 79, 41, 80, 153, + 153, 153, 81, 153, 153, 82, 153, 153, 153, 153, + 84, 153, 153, 153, 85, 86, 153, 153, 153, 153, + 153, 153, 153, 87, 153, 153, 88, 89, 153, 153, + 90, 153, 91, 131, 153, 153, 153, 153, 153, 153, + 92, 153, 93, 94, 95, 153, 97, 153, 98, 153, + 153, 153, 153, 99, 153, 153, 153, 153, 153, 100, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 101, + 153, 153, 153, 153, 102, 103, 104, 153, 135, 153, + 153, 153, 153, 153, 153, 153, 153, 105, 153, 106, + + 153, 107, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -661,15 +661,15 @@ static const flex_int16_t yy_accept[1082] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 58, 59, 152, 60, 152, 138, - 152, 152, 152, 152, 152, 152, 61, 152, 152, 152, - 152, 62, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 136, 63, 152, 152, 64, 152, 96, 152, - 65, 66, 152, 152, 152, 152, 67, 68, 69, 70, - 152, 133, 152, 152, 152, 71, 72, 152, 152, 152, - 152, 152, 73, 152, 152, 152, 152, 152, 152, 74, - 152, 152, 152, 152, 75, 152, 152, 152, 76, 152, - 152, 152, 77, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 58, 59, 153, 60, 153, 138, 153, 153, 153, + 153, 153, 153, 61, 153, 153, 153, 153, 62, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 136, + 63, 153, 153, 64, 153, 96, 153, 65, 66, 153, + 153, 153, 153, 67, 68, 69, 70, 153, 133, 153, + 153, 153, 71, 72, 153, 153, 153, 153, 153, 73, + 153, 153, 153, 153, 153, 153, 74, 153, 153, 153, + 153, 75, 153, 153, 153, 76, 153, 153, 153, 77, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -678,31 +678,35 @@ static const flex_int16_t yy_accept[1082] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 152, 31, 152, 152, 32, 140, 152, 33, - 152, 152, 152, 34, 152, 35, 152, 36, 37, 38, - 152, 39, 152, 152, 42, 43, 44, 45, 46, 152, - 152, 47, 130, 152, 152, 48, 152, 152, 152, 49, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 153, 31, 153, 153, 32, 140, 153, 33, 153, + 153, 153, 34, 153, 35, 153, 36, 37, 38, 153, + 39, 153, 153, 42, 43, 44, 45, 46, 153, 153, - 152, 152, 50, 129, 51, 52, 152, 53, 152, 152, - 152, 152, 54, 55, 56, 57, 152, 152, 2, 2, + 47, 130, 153, 153, 48, 153, 153, 153, 49, 153, + 153, 50, 129, 51, 52, 153, 53, 153, 153, 153, + 153, 54, 55, 56, 57, 153, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 15, 16, 17, 18, 19, 152, - 152, 20, 152, 152, 21, 22, 40, 23, 152, 24, - 152, 152, 25, 26, 152, 152, 27, 28, 152, 152, + 2, 2, 2, 2, 0, 15, 16, 17, 18, 19, + 153, 153, 20, 153, 153, 21, 22, 40, 23, 153, - 152, 152, 29, 30, 2, 2, 2, 2, 2, 2, + 24, 153, 153, 25, 26, 153, 153, 27, 28, 153, + 153, 153, 153, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 83, 152, 10, 11, 152, 12, - 152, 13, 139, 152, 152, 152, 14, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 83, 153, 10, + 11, 153, 12, 153, 13, 139, 153, 153, 153, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 152, 7, 152, 8, 9, 152, 2, 2, 2, 2, - 2, 2, 5, 6, 152, 2, 2, 2, 137, 2, - 0 + 2, 2, 2, 2, 0, 153, 7, 153, 8, 9, + 153, 2, 2, 2, 2, 2, 2, 2, 0, 5, + 6, 153, 2, 2, 2, 2, 0, 137, 2, 2, + + 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 2, 150, 2, 0 } ; static const YY_CHAR yy_ec[256] = @@ -711,16 +715,16 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 1, 1, 6, 1, 7, 6, - 6, 6, 6, 6, 8, 9, 6, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 6, 6, 11, - 12, 13, 6, 1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 6, 1, 6, 6, 40, 1, 41, 42, 43, 44, - - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 6, 67, 6, 1, 1, 1, 1, 1, + 6, 6, 6, 6, 8, 9, 6, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 6, 6, 20, + 21, 22, 6, 1, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 6, 1, 6, 6, 49, 1, 50, 51, 52, 53, + + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 6, 76, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -737,163 +741,169 @@ static const YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static const YY_CHAR yy_meta[68] = +static const YY_CHAR yy_meta[77] = { 0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, - 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, + 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 1 + 5, 5, 5, 5, 5, 1 } ; -static const flex_int16_t yy_base[1089] = +static const flex_int16_t yy_base[1127] = { 0, - 0, 0, 422, 414, 67, 0, 410, 4309, 133, 135, - 368, 0, 4309, 4309, 131, 345, 133, 132, 312, 300, - 129, 129, 137, 135, 145, 196, 171, 184, 188, 124, - 141, 183, 228, 230, 236, 235, 0, 250, 280, 323, - 257, 194, 231, 144, 243, 0, 297, 0, 259, 272, - 276, 276, 0, 0, 161, 259, 293, 294, 247, 224, - 381, 448, 502, 554, 602, 654, 301, 377, 702, 302, - 304, 379, 440, 754, 802, 449, 358, 453, 852, 904, - 499, 524, 553, 366, 164, 312, 4309, 221, 4309, 308, - 212, 209, 4309, 4309, 4309, 4309, 0, 147, 267, 296, - - 317, 302, 322, 450, 0, 318, 338, 552, 391, 439, - 596, 406, 341, 386, 384, 403, 457, 641, 451, 454, - 454, 453, 464, 487, 493, 494, 492, 498, 495, 0, - 510, 505, 691, 509, 544, 532, 561, 560, 608, 556, - 563, 569, 583, 592, 601, 617, 614, 0, 621, 611, - 615, 636, 665, 637, 655, 653, 659, 700, 676, 680, - 703, 707, 700, 712, 706, 707, 732, 749, 725, 736, - 745, 759, 757, 745, 765, 4309, 0, 4309, 0, 360, - 0, 212, 0, 364, 193, 190, 0, 0, 0, 0, - 762, 793, 790, 824, 847, 794, 856, 891, 806, 895, - - 905, 953, 930, 939, 1005, 955, 956, 984, 896, 1009, - 1017, 1067, 1007, 1023, 1048, 1049, 1053, 1059, 1081, 1097, - 1099, 1102, 1115, 993, 1121, 1112, 1170, 1127, 1133, 1083, - 1155, 1181, 1195, 1210, 1224, 1225, 1221, 1238, 1239, 1247, - 1172, 1151, 1255, 1249, 1277, 1283, 1288, 1298, 1293, 1309, - 1311, 1344, 1347, 1333, 1352, 1365, 1368, 1350, 1382, 1393, - 1405, 1419, 1407, 1418, 1444, 1442, 1416, 1441, 1474, 0, - 4309, 145, 0, 768, 0, 769, 766, 0, 812, 0, - 838, 853, 841, 853, 1460, 848, 869, 913, 932, 938, - 967, 951, 970, 0, 964, 1022, 1161, 1026, 1047, 1046, - - 1080, 1156, 1186, 0, 1209, 1229, 1237, 1264, 1292, 1287, - 1287, 1354, 1387, 1400, 1451, 1465, 1476, 1460, 1474, 1475, - 1465, 1468, 1484, 1482, 1493, 1495, 1496, 1505, 1482, 1500, - 0, 1495, 1511, 1508, 1514, 1518, 1514, 1516, 1508, 1511, - 1511, 0, 1521, 1516, 1516, 1531, 1533, 1538, 1526, 1533, - 1538, 1551, 1533, 1546, 1543, 1552, 1549, 1563, 0, 1546, - 1550, 1551, 1560, 1557, 1554, 1561, 1572, 0, 1569, 1580, - 1571, 1572, 1588, 1576, 1571, 1590, 1580, 1585, 1593, 1598, - 1590, 0, 140, 1604, 1617, 1618, 1619, 1634, 1620, 1636, - 1622, 1650, 1653, 1658, 1655, 1692, 1686, 1688, 1701, 1696, - - 1671, 1724, 1732, 1710, 1722, 1754, 1745, 1740, 1758, 1750, - 1775, 1789, 1780, 1776, 1784, 1810, 1794, 1826, 1815, 1825, - 1834, 1844, 1828, 1843, 1860, 1869, 1879, 1897, 1882, 1900, - 1888, 1918, 1923, 1922, 1931, 1912, 1934, 1937, 1946, 1971, - 1976, 1952, 1962, 1974, 1986, 2008, 2019, 2000, 2024, 2016, - 2010, 2038, 2040, 2041, 2049, 2050, 2072, 2073, 2078, 2086, - 2083, 2082, 2084, 2108, 2112, 2127, 2116, 2138, 2124, 2126, - 2149, 2137, 2162, 2180, 2170, 2168, 2192, 2166, 2178, 2202, - 2221, 2206, 2224, 2235, 2247, 2250, 2265, 2260, 2264, 2289, - 2300, 2288, 1608, 1639, 1746, 1818, 1827, 1840, 1878, 0, - - 1887, 0, 0, 0, 1876, 1936, 1935, 0, 1938, 1981, - 2099, 2111, 2156, 2217, 2246, 2233, 2256, 2268, 2279, 0, - 0, 2284, 2285, 2288, 2295, 2318, 2321, 2318, 0, 2304, - 2325, 0, 0, 2328, 2315, 0, 2323, 0, 0, 2333, - 2321, 2319, 2326, 2327, 2341, 0, 2335, 0, 0, 0, - 2334, 0, 2343, 0, 2352, 2341, 2354, 2345, 0, 2364, - 2363, 2351, 2355, 2363, 0, 2376, 2377, 2366, 2362, 2363, - 2383, 2378, 2378, 2390, 0, 2392, 2389, 2394, 2386, 0, - 0, 2383, 2389, 0, 2406, 2397, 2392, 2413, 2395, 2409, - 2412, 2413, 0, 2401, 0, 2418, 0, 0, 2427, 2428, - - 2422, 2426, 2450, 2451, 2432, 2456, 2461, 2462, 2465, 2466, - 2491, 2496, 2494, 2495, 2504, 2525, 2517, 2528, 2520, 2550, - 2533, 2558, 2576, 2579, 2561, 2573, 2582, 2604, 2607, 2612, - 2621, 2617, 2647, 2630, 2633, 2646, 2656, 2638, 2662, 2675, - 2681, 2684, 2687, 2686, 2690, 2700, 2705, 2716, 2726, 2729, - 2738, 2721, 2750, 2744, 2754, 2755, 2772, 2759, 2783, 2780, - 2788, 2798, 2821, 2796, 2811, 2822, 2826, 2837, 2852, 2854, - 2855, 2860, 2870, 2878, 2891, 2888, 2909, 2912, 2914, 2924, - 2926, 2928, 2954, 2937, 2942, 2940, 2943, 2966, 2968, 2945, - 2978, 2991, 2994, 3006, 2997, 3020, 2996, 3028, 3030, 3036, - - 3034, 3042, 3045, 3046, 0, 0, 2509, 0, 2584, 0, - 2587, 2590, 2613, 2657, 2687, 2805, 0, 2830, 2834, 2860, - 2900, 0, 2973, 2993, 3023, 3051, 3060, 3049, 3053, 3056, - 3067, 3076, 0, 0, 3061, 3073, 0, 3080, 0, 3069, - 0, 0, 3070, 3086, 3074, 3083, 0, 0, 0, 0, - 3094, 0, 3100, 3096, 3085, 0, 0, 3102, 3091, 3092, - 3106, 3104, 0, 3114, 3118, 3117, 3103, 3120, 3124, 3108, - 3111, 3110, 3132, 3134, 0, 3134, 3137, 3138, 0, 3125, - 3144, 3146, 0, 3144, 3148, 3153, 3150, 3156, 3158, 3159, - 3182, 3184, 3172, 3207, 3196, 3198, 3222, 3228, 3230, 3212, - - 3213, 3247, 3241, 3262, 3246, 3252, 3270, 3276, 3281, 3280, - 3304, 3286, 3305, 3315, 3314, 3316, 3338, 3319, 3344, 3349, - 3350, 3353, 3354, 3378, 3382, 3379, 3383, 3384, 3387, 3388, - 3393, 3421, 3433, 3412, 3418, 3422, 3423, 3451, 3461, 3446, - 3452, 3455, 3489, 3490, 3477, 3500, 3506, 3511, 3521, 3530, - 3525, 3555, 3560, 3467, 3519, 3564, 3549, 3554, 3559, 3565, - 3593, 3594, 3162, 0, 3179, 3194, 3222, 0, 3303, 0, - 3312, 3347, 3442, 0, 3498, 0, 3498, 0, 0, 0, - 3544, 0, 3586, 3582, 0, 0, 0, 0, 0, 3585, - 3599, 0, 0, 3596, 3608, 0, 3590, 3608, 3589, 0, - - 3612, 3617, 3603, 0, 0, 0, 3611, 0, 3623, 3627, - 3629, 3613, 0, 0, 0, 0, 3616, 3626, 3638, 3639, - 3643, 3647, 3648, 3649, 3657, 3651, 3653, 3683, 3672, 3682, - 3715, 3693, 3707, 3697, 3701, 3706, 3711, 3716, 3737, 3741, - 3725, 3747, 3749, 3750, 3751, 3766, 3755, 3760, 3765, 3801, - 3795, 3789, 3790, 3799, 3800, 3803, 3831, 3840, 3825, 3814, - 3843, 3844, 3855, 3849, 3857, 3883, 3888, 3885, 3854, 3894, - 3897, 3898, 3909, 3919, 0, 0, 0, 0, 0, 3868, - 3897, 0, 3907, 3896, 0, 0, 0, 0, 3918, 0, - 3910, 3928, 0, 0, 3916, 3927, 0, 0, 3924, 3932, - - 3927, 3947, 0, 0, 3948, 3951, 3952, 3957, 3961, 3962, - 3963, 3965, 3973, 3976, 3987, 3997, 4001, 4002, 4013, 4005, - 4026, 4015, 4016, 4027, 4030, 4031, 4041, 4055, 4056, 4059, - 4065, 4070, 4071, 4081, 0, 4069, 0, 0, 4072, 0, - 4076, 0, 0, 4073, 4084, 4095, 0, 4104, 4110, 4109, - 4113, 4119, 4115, 4145, 4121, 4123, 4127, 4144, 4149, 4159, - 4105, 0, 4149, 0, 0, 4157, 4173, 4175, 4183, 4178, - 4181, 4189, 0, 0, 4168, 4187, 4211, 4212, 0, 4213, - 4309, 4278, 4283, 135, 4288, 4293, 4298, 4303 + 0, 0, 709, 681, 76, 0, 668, 4466, 151, 153, + 643, 0, 4466, 4466, 149, 148, 160, 159, 625, 619, + 156, 156, 164, 162, 172, 223, 198, 211, 215, 151, + 168, 210, 255, 257, 263, 262, 0, 277, 307, 350, + 284, 221, 258, 171, 540, 0, 600, 0, 295, 308, + 561, 576, 0, 0, 331, 408, 419, 321, 542, 512, + 438, 514, 568, 620, 668, 720, 328, 426, 768, 329, + 311, 434, 500, 820, 868, 505, 421, 513, 918, 970, + 515, 570, 455, 423, 450, 351, 4466, 520, 4466, 512, + 1035, 1045, 1056, 4466, 4466, 4466, 4466, 0, 174, 282, + + 336, 520, 296, 315, 557, 0, 345, 334, 568, 511, + 327, 611, 569, 345, 419, 421, 441, 444, 631, 469, + 515, 520, 552, 557, 562, 563, 574, 609, 578, 605, + 0, 618, 616, 665, 619, 628, 616, 637, 664, 685, + 631, 657, 667, 663, 669, 678, 690, 689, 0, 693, + 681, 685, 722, 722, 720, 726, 724, 729, 737, 727, + 725, 743, 749, 762, 772, 766, 767, 784, 779, 785, + 781, 785, 818, 787, 775, 798, 4466, 0, 4466, 0, + 389, 0, 512, 0, 499, 1066, 1076, 1087, 0, 0, + 0, 0, 806, 824, 855, 859, 913, 860, 878, 922, + + 872, 961, 962, 1080, 957, 1081, 1133, 1084, 1083, 1085, + 1121, 1137, 1119, 1187, 952, 1145, 1149, 1170, 1189, 1181, + 1193, 1211, 1227, 1223, 1219, 1222, 1233, 1245, 1294, 1275, + 1285, 1277, 1290, 1307, 1347, 1306, 1339, 1349, 1362, 1364, + 1361, 1397, 1398, 1360, 1401, 1414, 1392, 1435, 1433, 1443, + 1447, 1465, 1451, 1468, 1403, 1487, 1501, 1489, 1503, 1505, + 1531, 1506, 1541, 1555, 1520, 1556, 1572, 1577, 1554, 1580, + 1598, 0, 4466, 498, 1645, 0, 822, 0, 829, 827, + 0, 839, 0, 828, 879, 872, 907, 1640, 907, 910, + 919, 929, 956, 982, 973, 1082, 0, 1079, 1097, 1323, + + 1152, 1151, 1140, 1176, 1213, 1252, 0, 1259, 1261, 1275, + 1284, 1294, 1331, 1337, 1363, 1419, 1438, 1461, 1470, 1494, + 1492, 1539, 1539, 1578, 1583, 1608, 1605, 1616, 1626, 1639, + 1644, 1630, 1638, 0, 1633, 1649, 1646, 1652, 1656, 1654, + 1655, 1642, 1644, 1644, 0, 1654, 1649, 1649, 1664, 1668, + 1673, 1661, 1661, 1672, 1696, 1678, 1691, 1691, 1700, 1691, + 1702, 0, 1685, 1689, 1690, 1699, 1697, 1694, 1701, 1711, + 0, 1703, 1713, 1704, 1705, 1721, 1709, 1707, 1726, 1708, + 1719, 1739, 1743, 1734, 0, 495, 1779, 1756, 1757, 1758, + 1760, 1781, 1772, 1786, 1790, 1802, 1794, 1800, 1816, 1840, + + 1831, 1826, 1848, 1857, 1832, 1866, 1874, 1834, 1870, 1885, + 1880, 1891, 1910, 1896, 1909, 1925, 1920, 1914, 1926, 1948, + 1939, 1962, 1950, 1974, 1963, 1965, 1978, 1984, 2014, 2015, + 1993, 2019, 2017, 2045, 2032, 2053, 2054, 2051, 2076, 2070, + 2082, 2085, 2104, 2091, 2099, 2110, 2125, 2116, 2144, 2150, + 2158, 2153, 2159, 2174, 2169, 2183, 2187, 2195, 2212, 2204, + 2193, 2208, 2223, 2227, 2233, 2241, 2262, 2257, 2266, 2283, + 2267, 2281, 2275, 2278, 2306, 2292, 2300, 2316, 2321, 2329, + 2337, 2311, 2335, 2345, 2360, 2378, 2375, 2374, 2391, 2383, + 2408, 2414, 2389, 2437, 2440, 2429, 491, 1784, 1915, 1922, + + 1979, 1989, 2019, 2056, 0, 2092, 0, 0, 0, 2085, + 2102, 2126, 0, 2150, 2223, 2223, 2333, 2336, 2351, 2390, + 2407, 2426, 2435, 2437, 0, 0, 2434, 2437, 2436, 2438, + 2458, 2462, 2462, 0, 2448, 2469, 0, 0, 2472, 2463, + 0, 2469, 0, 0, 2482, 2470, 2467, 2475, 2478, 2491, + 0, 2487, 0, 0, 0, 2481, 0, 2490, 0, 2498, + 2485, 2499, 2490, 0, 2508, 2507, 2495, 2498, 2504, 0, + 2518, 2520, 2509, 2506, 2507, 2531, 2524, 2527, 2539, 0, + 2540, 2538, 2545, 2537, 0, 0, 2534, 2536, 0, 2553, + 2543, 2537, 2558, 2541, 2555, 2558, 2557, 0, 2545, 0, + + 2562, 0, 0, 474, 2573, 2582, 2570, 2571, 2592, 2594, + 2596, 2604, 2615, 2606, 2607, 2625, 2628, 2640, 2637, 2646, + 2659, 2656, 2665, 2661, 2678, 2689, 2700, 2702, 2713, 2710, + 2719, 2724, 2728, 2732, 2734, 2758, 2762, 2767, 2768, 2756, + 2773, 2792, 2802, 2786, 2796, 2821, 2826, 2808, 2818, 2830, + 2831, 2832, 2847, 2842, 2863, 2871, 2880, 2872, 2895, 2881, + 2885, 2886, 2916, 2897, 2914, 2925, 2926, 2935, 2937, 2965, + 2939, 2970, 2954, 2980, 2983, 2971, 2988, 3013, 3025, 3011, + 3024, 3014, 3042, 3047, 3050, 3065, 3053, 3068, 3079, 3076, + 3081, 3078, 3084, 3093, 3102, 3117, 3121, 3127, 3135, 3156, + + 3130, 3165, 3133, 3139, 3161, 3171, 3170, 3173, 3175, 3184, + 442, 0, 0, 2669, 0, 2691, 0, 2784, 2798, 2887, + 2945, 2965, 2989, 0, 2995, 3012, 3080, 3189, 0, 3192, + 3184, 3192, 3205, 3206, 3192, 3194, 3196, 3209, 3217, 0, + 0, 3204, 3214, 0, 3222, 0, 3210, 0, 0, 3212, + 3229, 3216, 3228, 0, 0, 0, 0, 3238, 0, 3243, + 3238, 3228, 0, 0, 3244, 3232, 3234, 3249, 3246, 0, + 3257, 3259, 3259, 3244, 3261, 3265, 3249, 3251, 3252, 3273, + 3277, 0, 3275, 3279, 3279, 0, 3267, 3287, 3288, 0, + 441, 3289, 3292, 3293, 3295, 3297, 3298, 3301, 3327, 3323, + + 3331, 3352, 3329, 3337, 3361, 3367, 3375, 3363, 3366, 3396, + 3391, 3412, 3397, 3415, 3425, 3426, 3436, 3451, 3449, 3434, + 3437, 3460, 3479, 3465, 3488, 3489, 3503, 3494, 3500, 3504, + 3505, 3528, 3533, 3529, 3534, 3537, 3538, 3539, 3543, 3572, + 3571, 3562, 3573, 3583, 3587, 3602, 3608, 3596, 3613, 3605, + 3631, 3641, 3639, 3647, 3657, 3673, 3671, 3679, 3675, 3701, + 3707, 3705, 3709, 3711, 3713, 3715, 3739, 3745, 3747, 3744, + 435, 3303, 0, 3298, 3333, 3357, 0, 3373, 0, 3393, + 3405, 3416, 0, 3469, 0, 3472, 0, 0, 0, 3495, + 0, 3570, 3582, 0, 0, 0, 0, 0, 3613, 3636, + + 0, 0, 3638, 3685, 0, 3672, 3723, 3726, 0, 3751, + 3753, 3741, 0, 0, 0, 3750, 0, 3765, 3767, 3771, + 3760, 0, 0, 0, 0, 3764, 3772, 434, 3781, 3783, + 3789, 3785, 3793, 3795, 3811, 3797, 3819, 3823, 3837, 3829, + 3862, 3833, 3863, 3847, 3851, 3865, 3873, 3875, 3887, 3891, + 3877, 3881, 3899, 3905, 3915, 3916, 3917, 3921, 3927, 3950, + 3949, 3931, 3940, 3939, 3953, 3961, 3985, 3991, 3979, 3975, + 3994, 4003, 4017, 4007, 4013, 4019, 4045, 4047, 4028, 4029, + 4053, 4057, 4058, 4061, 429, 0, 0, 0, 0, 0, + 3787, 3803, 0, 3841, 3888, 0, 0, 0, 0, 3967, + + 0, 3958, 4004, 0, 0, 4010, 4053, 0, 0, 4050, + 4061, 4064, 4082, 0, 0, 404, 4083, 4087, 4091, 4093, + 4097, 4099, 4116, 4101, 4102, 4127, 4125, 4131, 4133, 4135, + 4159, 4141, 4170, 4165, 4167, 4171, 4181, 4189, 4173, 4199, + 4211, 4205, 4215, 4207, 4221, 4229, 402, 0, 4108, 0, + 0, 4122, 0, 4162, 0, 0, 4156, 4166, 4229, 0, + 401, 4239, 4250, 4244, 4247, 4263, 4253, 4269, 4261, 4275, + 4279, 4287, 4311, 4293, 397, 4245, 0, 4271, 0, 0, + 4291, 396, 4303, 4317, 4319, 4321, 4327, 4335, 383, 0, + 0, 4315, 382, 4329, 4332, 4361, 376, 0, 342, 4353, + + 333, 331, 303, 291, 278, 255, 250, 245, 243, 240, + 235, 221, 226, 197, 187, 173, 4466, 0, 4466, 4435, + 4440, 181, 4445, 4450, 4455, 4460 } ; -static const flex_int16_t yy_def[1089] = +static const flex_int16_t yy_def[1127] = { 0, - 1081, 1, 1082, 1082, 1081, 5, 1081, 1081, 1081, 1081, - 1081, 1083, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1081, 1085, 1081, 1086, 1086, 1081, - 1086, 1087, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1088, 1088, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1086, 1081, 1081, 1083, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1084, 1084, 1084, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1081, 1085, 1081, 1086, 1086, - 1086, 1087, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1119, 1, 1120, 1120, 1119, 5, 1119, 1119, 1119, 1119, + 1119, 1121, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1119, 1123, 1119, 1124, 1124, 1119, + 1124, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1126, 1126, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 1124, 1119, 1119, 1121, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1122, 1122, 1122, + + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1119, 1123, 1119, 1124, + 1124, 1124, 1125, 1124, 1124, 1124, 1124, 1124, 1124, 1124, + 1124, 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -901,20 +911,20 @@ static const flex_int16_t yy_def[1089] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 1086, - 1081, 1081, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1086, 1086, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 1124, 1119, 1119, 1119, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1124, 1124, 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -926,20 +936,20 @@ static const flex_int16_t yy_def[1089] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 62, 62, - - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 1119, 1122, 1122, 1122, + + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + + 1122, 1122, 1122, 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -950,16 +960,16 @@ static const flex_int16_t yy_def[1089] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1119, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, @@ -967,519 +977,543 @@ static const flex_int16_t yy_def[1089] = 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 1119, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 62, 62, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, + 62, 62, 62, 62, 1119, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, - 1084, 1084, 1084, 1084, 62, 62, 62, 62, 62, 62, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 1084, 1084, 1084, 1084, 1084, 1084, - 1084, 1084, 1084, 1084, 1084, 1084, 1084, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 1084, 1084, 1084, 1084, 1084, 1084, 62, 62, 62, 62, - 62, 62, 1084, 1084, 1084, 62, 62, 62, 1084, 62, - 0, 1081, 1081, 1081, 1081, 1081, 1081, 1081 + 62, 62, 62, 62, 62, 62, 1119, 1122, 1122, 1122, + 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, + 1124, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 1119, 1122, 1122, 1122, 1122, 1122, + 1122, 1124, 62, 62, 62, 62, 62, 62, 1119, 1122, + 1122, 1122, 1124, 62, 62, 62, 1119, 1122, 1124, 62, + + 1119, 1124, 1119, 1124, 1119, 1124, 1119, 1124, 1119, 1124, + 1119, 1124, 1119, 1124, 1119, 1124, 1119, 1124, 0, 1119, + 1119, 1119, 1119, 1119, 1119, 1119 } ; -static const flex_int16_t yy_nxt[4377] = +static const flex_int16_t yy_nxt[4543] = { 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 37, 44, 37, 8, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 37, 44, 37, 45, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - - 81, 82, 83, 77, 84, 77, 48, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 77, 84, 77, 85, 86, 86, 86, 86, 89, 97, - 90, 92, 90, 93, 94, 98, 104, 99, 110, 383, - 106, 135, 111, 100, 272, 101, 112, 107, 136, 102, - 103, 175, 113, 273, 108, 114, 105, 109, 183, 115, - 184, 116, 98, 104, 99, 110, 117, 106, 135, 111, - 100, 118, 101, 112, 107, 136, 102, 103, 175, 113, - 273, 108, 114, 105, 109, 125, 115, 127, 116, 383, - - 137, 126, 185, 117, 138, 128, 130, 171, 118, 119, - 139, 129, 131, 132, 133, 172, 382, 120, 272, 134, - 121, 91, 125, 122, 127, 271, 123, 137, 126, 124, - 270, 138, 128, 130, 171, 190, 119, 139, 129, 131, - 132, 133, 172, 143, 120, 140, 134, 121, 151, 141, - 122, 173, 174, 123, 147, 142, 124, 144, 189, 152, - 180, 86, 148, 145, 146, 153, 149, 154, 185, 150, - 143, 155, 140, 86, 86, 151, 141, 156, 173, 174, - 179, 147, 142, 168, 144, 169, 152, 181, 170, 148, - 145, 146, 153, 149, 154, 157, 150, 158, 155, 274, - - 159, 186, 184, 178, 156, 187, 188, 160, 161, 176, - 168, 96, 169, 86, 86, 170, 92, 90, 191, 191, - 275, 230, 157, 95, 158, 219, 274, 159, 276, 229, - 277, 220, 279, 278, 160, 161, 162, 280, 191, 191, - 163, 191, 284, 164, 165, 191, 191, 275, 230, 285, - 166, 286, 219, 167, 91, 276, 229, 277, 220, 279, - 278, 180, 86, 162, 280, 191, 191, 163, 191, 284, - 164, 165, 186, 184, 301, 191, 285, 166, 286, 87, - 167, 179, 179, 269, 179, 179, 179, 179, 179, 179, - 221, 179, 179, 179, 191, 191, 231, 192, 222, 193, - - 232, 301, 191, 191, 223, 194, 233, 195, 291, 1081, - 269, 196, 197, 302, 191, 303, 191, 221, 292, 304, - 47, 191, 191, 231, 192, 222, 193, 232, 47, 1081, - 191, 223, 194, 233, 195, 291, 299, 300, 196, 197, - 302, 191, 303, 191, 1081, 292, 304, 179, 179, 179, - 1081, 179, 179, 179, 179, 179, 179, 234, 179, 179, - 179, 235, 245, 299, 300, 198, 191, 236, 281, 282, - 248, 293, 305, 246, 249, 311, 294, 191, 312, 247, - 250, 313, 283, 314, 234, 199, 191, 1081, 235, 245, - 191, 315, 198, 191, 236, 281, 282, 248, 293, 305, - - 246, 249, 311, 294, 191, 312, 247, 250, 313, 283, - 314, 316, 199, 191, 179, 200, 191, 191, 315, 191, - 317, 318, 201, 319, 321, 262, 320, 263, 322, 202, - 264, 323, 203, 324, 1081, 329, 191, 265, 316, 191, - 1081, 191, 200, 191, 1081, 266, 191, 317, 318, 201, - 319, 321, 262, 320, 263, 322, 202, 264, 323, 203, - 324, 191, 329, 191, 265, 330, 191, 204, 191, 331, - 191, 205, 266, 267, 268, 206, 287, 288, 289, 332, - 290, 207, 1081, 333, 208, 334, 338, 1081, 191, 339, - 191, 191, 330, 1081, 204, 340, 331, 191, 205, 1081, - - 267, 268, 206, 287, 288, 289, 332, 290, 207, 295, - 333, 208, 334, 338, 296, 341, 339, 191, 191, 191, - 297, 335, 340, 336, 342, 343, 209, 298, 210, 1081, - 344, 1081, 345, 211, 337, 1081, 295, 346, 212, 191, - 1081, 296, 341, 347, 1081, 348, 191, 297, 335, 349, - 336, 342, 343, 209, 298, 210, 306, 344, 307, 345, - 211, 337, 308, 352, 346, 212, 191, 213, 353, 309, - 347, 191, 348, 310, 354, 214, 349, 355, 215, 356, - 1081, 216, 350, 306, 217, 307, 351, 218, 1081, 308, - 352, 191, 1081, 1081, 213, 353, 309, 1081, 191, 1081, - - 310, 354, 214, 360, 355, 215, 356, 325, 216, 350, - 361, 217, 1081, 351, 218, 357, 362, 326, 191, 191, - 224, 363, 327, 328, 358, 364, 225, 226, 227, 366, - 360, 367, 359, 228, 325, 368, 365, 361, 1081, 191, - 1081, 373, 357, 362, 326, 369, 191, 224, 363, 327, - 328, 358, 364, 225, 226, 227, 366, 374, 367, 359, - 228, 1081, 368, 365, 1081, 370, 191, 237, 373, 375, - 371, 191, 369, 372, 379, 376, 377, 380, 381, 191, - 1081, 238, 1081, 1081, 374, 493, 494, 239, 240, 378, - 495, 191, 370, 1081, 237, 1081, 375, 371, 191, 191, - - 372, 379, 376, 377, 380, 381, 191, 191, 238, 384, - 191, 191, 493, 494, 239, 240, 378, 495, 191, 191, - 241, 1081, 385, 191, 390, 496, 191, 191, 242, 1081, - 191, 191, 243, 1081, 191, 244, 384, 191, 191, 191, - 1081, 191, 1081, 191, 1081, 1081, 191, 241, 386, 385, - 191, 390, 496, 1081, 191, 242, 387, 191, 191, 243, - 388, 191, 244, 389, 191, 497, 191, 251, 191, 252, - 191, 391, 253, 191, 498, 386, 499, 500, 504, 254, - 255, 1081, 1081, 387, 191, 1081, 1081, 388, 191, 191, - 389, 191, 497, 191, 251, 1081, 252, 1081, 391, 253, - - 191, 498, 505, 499, 500, 504, 254, 255, 191, 392, - 393, 191, 191, 191, 1081, 1081, 191, 256, 397, 395, - 191, 257, 191, 394, 258, 259, 396, 414, 191, 505, - 1081, 260, 191, 191, 261, 191, 392, 393, 506, 191, - 191, 191, 191, 1081, 256, 397, 395, 402, 257, 191, - 394, 258, 259, 396, 414, 191, 191, 403, 260, 191, - 191, 261, 1081, 1081, 507, 506, 1081, 191, 191, 191, - 191, 404, 191, 191, 402, 508, 405, 398, 399, 400, - 509, 401, 510, 191, 403, 410, 411, 511, 512, 412, - 191, 507, 191, 191, 191, 1081, 1081, 191, 404, 191, - - 191, 191, 508, 405, 398, 399, 400, 509, 401, 510, - 191, 413, 410, 411, 511, 512, 412, 191, 406, 191, - 191, 191, 191, 407, 191, 415, 191, 1081, 191, 408, - 191, 422, 416, 1081, 191, 513, 409, 191, 413, 1081, - 191, 516, 191, 1081, 191, 406, 191, 423, 191, 191, - 407, 191, 415, 191, 191, 1081, 408, 191, 422, 416, - 191, 191, 513, 409, 517, 191, 191, 191, 516, 191, - 191, 191, 1081, 191, 423, 424, 191, 1081, 518, 425, - 426, 191, 417, 427, 418, 191, 191, 191, 419, 1081, - 191, 517, 191, 191, 519, 420, 191, 191, 191, 421, - - 191, 1081, 424, 191, 191, 518, 425, 426, 428, 417, - 427, 418, 191, 191, 191, 419, 191, 191, 191, 191, - 442, 519, 420, 191, 429, 191, 421, 191, 432, 191, - 430, 191, 191, 431, 191, 428, 191, 1081, 191, 191, - 435, 191, 434, 191, 191, 191, 191, 442, 433, 191, - 191, 429, 191, 440, 441, 432, 191, 430, 191, 191, - 431, 191, 1081, 191, 191, 191, 191, 435, 191, 434, - 191, 191, 191, 443, 1081, 433, 191, 191, 514, 191, - 440, 441, 1081, 1081, 520, 191, 436, 191, 191, 191, - 456, 191, 191, 515, 1081, 191, 437, 191, 191, 191, - - 443, 438, 439, 521, 444, 514, 445, 191, 446, 191, - 447, 520, 191, 436, 191, 191, 191, 456, 191, 191, - 515, 448, 522, 437, 1081, 191, 1081, 191, 438, 439, - 521, 444, 191, 445, 191, 446, 191, 447, 191, 191, - 449, 191, 191, 1081, 1081, 191, 523, 191, 448, 522, - 450, 451, 524, 452, 191, 191, 191, 1081, 191, 191, - 455, 191, 191, 454, 191, 191, 191, 449, 191, 191, - 453, 457, 191, 523, 191, 191, 191, 450, 451, 524, - 452, 458, 191, 191, 191, 191, 191, 455, 191, 191, - 454, 191, 191, 191, 191, 525, 460, 453, 457, 191, - - 191, 1081, 191, 191, 1081, 461, 1081, 459, 458, 462, - 191, 191, 465, 191, 191, 191, 526, 527, 528, 191, - 191, 191, 525, 460, 463, 191, 191, 191, 191, 464, - 191, 467, 461, 466, 459, 191, 462, 191, 1081, 465, - 1081, 191, 191, 526, 527, 528, 191, 191, 191, 1081, - 191, 463, 191, 191, 1081, 191, 464, 191, 467, 468, - 466, 191, 191, 472, 191, 473, 1081, 477, 469, 191, - 191, 529, 1081, 191, 471, 191, 470, 191, 1081, 474, - 1081, 191, 191, 1081, 191, 191, 468, 191, 191, 191, - 472, 191, 473, 475, 477, 469, 191, 191, 529, 191, - - 530, 471, 191, 470, 476, 191, 474, 478, 191, 191, - 191, 191, 191, 1081, 191, 1081, 191, 1081, 480, 191, - 475, 479, 191, 484, 191, 531, 191, 530, 1081, 191, - 191, 476, 191, 490, 478, 191, 191, 191, 481, 485, - 482, 1081, 191, 483, 191, 480, 191, 1081, 479, 191, - 484, 191, 531, 191, 1081, 191, 191, 191, 191, 488, - 490, 191, 191, 191, 1081, 481, 485, 482, 486, 191, - 483, 191, 489, 491, 487, 501, 532, 502, 191, 191, - 191, 191, 191, 191, 1081, 191, 488, 492, 191, 533, - 534, 191, 503, 535, 536, 486, 537, 538, 539, 489, - - 491, 487, 501, 532, 502, 191, 191, 540, 191, 541, - 542, 191, 543, 544, 492, 547, 533, 534, 191, 503, - 535, 536, 545, 537, 538, 539, 548, 549, 550, 551, - 552, 553, 546, 554, 540, 555, 541, 542, 191, 543, - 544, 556, 547, 557, 558, 559, 560, 561, 562, 545, - 563, 564, 565, 548, 549, 550, 551, 552, 553, 546, - 554, 566, 555, 567, 568, 569, 570, 571, 556, 572, - 557, 558, 559, 560, 561, 562, 573, 563, 564, 565, - 574, 575, 576, 577, 578, 579, 580, 581, 566, 582, - 567, 568, 569, 570, 571, 583, 572, 584, 586, 588, - - 587, 589, 590, 573, 591, 592, 585, 574, 575, 576, - 577, 578, 579, 580, 581, 593, 582, 594, 597, 595, - 598, 191, 583, 596, 584, 586, 588, 587, 589, 590, - 1081, 591, 592, 585, 599, 191, 600, 191, 705, 191, - 1081, 191, 593, 1081, 594, 597, 595, 598, 191, 602, - 596, 191, 1081, 191, 191, 191, 191, 191, 601, 191, - 1081, 599, 191, 600, 191, 705, 191, 191, 191, 706, - 191, 191, 191, 191, 604, 191, 602, 603, 191, 606, - 191, 191, 191, 191, 191, 601, 191, 191, 191, 1081, - 191, 1081, 191, 605, 191, 191, 706, 191, 191, 191, - - 191, 604, 191, 191, 603, 191, 606, 607, 614, 608, - 1081, 1081, 1081, 191, 191, 191, 610, 191, 191, 191, - 605, 611, 191, 191, 609, 191, 612, 617, 613, 191, - 191, 1081, 191, 191, 607, 614, 608, 615, 191, 191, - 191, 191, 1081, 610, 1081, 191, 1081, 191, 611, 191, - 191, 609, 191, 612, 617, 613, 191, 620, 619, 191, - 191, 191, 191, 616, 615, 191, 191, 623, 191, 191, - 1081, 191, 621, 622, 191, 191, 191, 191, 618, 1081, - 1081, 1081, 191, 707, 620, 619, 191, 191, 191, 191, - 616, 191, 191, 627, 623, 191, 191, 191, 191, 621, - - 622, 191, 191, 625, 191, 618, 191, 624, 626, 191, - 707, 629, 191, 191, 191, 1081, 1081, 191, 191, 191, - 627, 191, 191, 628, 191, 1081, 191, 191, 191, 1081, - 625, 191, 191, 191, 624, 626, 1081, 1081, 629, 191, - 191, 630, 191, 191, 191, 635, 631, 191, 191, 632, - 628, 191, 191, 191, 191, 708, 636, 709, 191, 191, - 191, 191, 191, 191, 633, 191, 710, 1081, 630, 191, - 191, 191, 635, 631, 191, 634, 632, 191, 191, 191, - 191, 191, 708, 636, 709, 637, 191, 191, 191, 191, - 191, 633, 191, 710, 638, 711, 191, 191, 191, 191, - - 712, 713, 634, 639, 191, 191, 191, 191, 191, 643, - 1081, 640, 637, 191, 191, 641, 191, 191, 1081, 191, - 642, 638, 711, 191, 191, 191, 191, 712, 713, 648, - 639, 1081, 191, 191, 191, 191, 643, 191, 640, 191, - 191, 191, 641, 191, 191, 646, 191, 642, 191, 191, - 644, 649, 191, 645, 650, 191, 648, 714, 647, 191, - 191, 191, 191, 651, 191, 715, 191, 191, 191, 191, - 716, 191, 646, 652, 191, 191, 191, 644, 649, 191, - 645, 650, 191, 191, 714, 647, 191, 191, 191, 191, - 651, 656, 715, 191, 655, 191, 191, 716, 191, 191, - - 652, 191, 654, 191, 653, 1081, 191, 657, 191, 1081, - 191, 191, 717, 191, 1081, 191, 191, 191, 656, 660, - 191, 655, 1081, 191, 658, 191, 191, 191, 1081, 654, - 191, 653, 659, 191, 657, 191, 191, 191, 191, 717, - 191, 191, 663, 661, 191, 191, 660, 191, 1081, 662, - 191, 658, 191, 191, 191, 191, 191, 191, 191, 659, - 191, 191, 1081, 191, 191, 665, 191, 191, 191, 663, - 661, 664, 191, 1081, 191, 191, 662, 191, 191, 666, - 191, 667, 191, 191, 191, 191, 191, 191, 191, 668, - 669, 670, 665, 191, 191, 191, 1081, 674, 664, 191, - - 191, 191, 191, 191, 191, 191, 666, 673, 667, 191, - 191, 672, 671, 191, 191, 191, 668, 669, 670, 191, - 191, 191, 191, 191, 674, 191, 191, 191, 191, 191, - 191, 718, 676, 678, 673, 719, 191, 191, 672, 671, - 675, 680, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 677, 191, 191, 191, 191, 191, 1081, 718, 676, - 678, 191, 719, 191, 191, 679, 191, 675, 680, 682, - 191, 191, 191, 1081, 191, 191, 191, 1081, 677, 191, - 191, 191, 191, 688, 681, 191, 191, 191, 191, 720, - 191, 191, 679, 191, 683, 191, 682, 191, 685, 191, - - 686, 191, 191, 191, 684, 191, 191, 191, 1081, 191, - 688, 681, 191, 191, 191, 191, 720, 191, 687, 191, - 1081, 683, 191, 191, 191, 685, 191, 686, 689, 191, - 191, 684, 191, 692, 191, 693, 191, 1081, 690, 191, - 1081, 191, 191, 191, 191, 687, 191, 691, 695, 721, - 191, 694, 191, 1081, 1081, 689, 191, 1081, 191, 722, - 692, 191, 693, 723, 191, 690, 191, 191, 191, 1081, - 191, 724, 191, 696, 691, 695, 721, 191, 694, 191, - 698, 191, 191, 697, 191, 191, 722, 191, 191, 725, - 723, 191, 1081, 1081, 191, 699, 700, 191, 724, 191, - - 696, 191, 191, 726, 191, 191, 191, 698, 191, 191, - 697, 191, 727, 728, 191, 701, 725, 191, 704, 702, - 703, 729, 699, 700, 191, 191, 191, 730, 191, 191, - 726, 731, 191, 191, 732, 733, 734, 191, 735, 727, - 728, 736, 701, 737, 191, 704, 702, 703, 729, 738, - 739, 740, 191, 191, 730, 741, 742, 743, 731, 746, - 744, 732, 733, 734, 191, 735, 747, 748, 736, 749, - 737, 745, 750, 751, 752, 753, 738, 739, 740, 754, - 755, 756, 741, 742, 743, 757, 746, 744, 758, 759, - 760, 761, 762, 747, 748, 763, 749, 764, 745, 750, - - 751, 752, 753, 765, 766, 767, 754, 755, 756, 768, - 769, 770, 757, 771, 772, 758, 759, 760, 761, 762, - 773, 774, 763, 775, 764, 776, 777, 778, 779, 780, - 765, 766, 767, 781, 782, 783, 768, 769, 770, 191, - 771, 772, 1081, 191, 191, 191, 1081, 773, 774, 790, - 775, 1081, 776, 777, 778, 779, 780, 784, 785, 786, - 781, 782, 783, 787, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 791, 1081, 790, 789, 191, 191, - 788, 1081, 191, 191, 784, 785, 786, 191, 191, 1081, - 787, 191, 191, 191, 191, 191, 191, 1081, 191, 191, - - 191, 791, 191, 191, 789, 191, 191, 788, 191, 191, - 191, 191, 191, 191, 191, 191, 792, 793, 1081, 1081, - 191, 191, 1081, 1081, 794, 191, 191, 1081, 191, 191, - 191, 191, 191, 191, 191, 191, 795, 191, 191, 191, - 191, 191, 191, 792, 793, 191, 801, 863, 191, 797, - 191, 794, 798, 799, 191, 191, 796, 191, 191, 191, - 191, 191, 191, 795, 191, 191, 1081, 191, 191, 191, - 191, 1081, 191, 801, 863, 191, 797, 191, 191, 798, - 799, 191, 800, 796, 191, 805, 1081, 191, 802, 191, - 191, 803, 191, 191, 191, 191, 191, 191, 191, 191, - - 804, 864, 191, 1081, 865, 191, 866, 1081, 1081, 800, - 191, 1081, 805, 191, 191, 802, 191, 191, 803, 191, - 191, 191, 191, 191, 191, 191, 191, 804, 864, 191, - 810, 865, 806, 866, 191, 807, 1081, 191, 191, 867, - 191, 191, 1081, 191, 191, 808, 191, 812, 191, 191, - 191, 191, 1081, 809, 191, 191, 191, 810, 191, 806, - 811, 191, 807, 191, 191, 191, 867, 191, 191, 814, - 191, 191, 808, 191, 812, 191, 191, 191, 813, 191, - 809, 191, 191, 191, 191, 191, 1081, 811, 815, 868, - 191, 191, 191, 191, 191, 1081, 814, 191, 191, 191, - - 191, 191, 191, 191, 191, 813, 191, 191, 1081, 816, - 191, 191, 191, 817, 869, 815, 868, 818, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 1081, - 191, 191, 1081, 191, 191, 819, 816, 191, 191, 191, - 817, 869, 191, 191, 818, 191, 191, 1081, 191, 191, - 191, 191, 820, 191, 191, 191, 821, 823, 191, 822, - 191, 191, 819, 191, 191, 191, 191, 191, 824, 191, - 191, 191, 191, 191, 825, 191, 191, 1081, 1081, 820, - 191, 191, 191, 821, 823, 191, 822, 191, 191, 191, - 191, 191, 191, 191, 191, 824, 191, 191, 191, 191, - - 191, 825, 191, 191, 826, 828, 1081, 827, 191, 191, - 1081, 1081, 1081, 191, 191, 191, 191, 191, 191, 191, - 191, 1081, 870, 191, 191, 191, 832, 191, 191, 829, - 830, 826, 828, 191, 827, 191, 191, 833, 191, 191, - 191, 831, 191, 834, 191, 1081, 1081, 191, 191, 870, - 1081, 871, 191, 832, 191, 191, 829, 830, 191, 191, - 191, 872, 191, 191, 833, 191, 191, 835, 831, 191, - 834, 191, 191, 838, 191, 191, 1081, 191, 871, 837, - 1081, 191, 836, 839, 873, 191, 191, 191, 872, 191, - 191, 191, 191, 1081, 835, 191, 191, 191, 191, 191, - - 838, 191, 1081, 840, 191, 191, 837, 191, 191, 836, - 839, 873, 1081, 1081, 191, 191, 191, 874, 191, 191, - 842, 841, 191, 843, 191, 191, 191, 1081, 191, 191, - 840, 191, 191, 1081, 191, 191, 1081, 844, 1081, 846, - 845, 191, 191, 191, 874, 847, 191, 842, 841, 191, - 843, 191, 191, 191, 849, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 844, 191, 846, 845, 191, 850, - 191, 191, 847, 191, 191, 848, 191, 191, 191, 191, - 191, 849, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 853, 875, 191, 850, 851, 191, 852, - - 1081, 191, 848, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 859, 191, 191, 1081, 854, 191, 856, - 853, 875, 191, 191, 851, 876, 852, 855, 191, 857, - 191, 191, 191, 191, 191, 191, 1081, 191, 191, 858, - 859, 191, 191, 191, 854, 191, 856, 191, 860, 877, - 191, 191, 876, 191, 855, 191, 857, 191, 191, 862, - 191, 191, 191, 191, 191, 191, 858, 191, 878, 861, - 191, 191, 191, 191, 191, 860, 877, 879, 191, 191, - 191, 880, 191, 191, 191, 881, 862, 882, 883, 191, - 191, 884, 191, 885, 191, 878, 861, 886, 191, 887, - - 191, 888, 889, 890, 879, 891, 191, 892, 880, 191, - 191, 893, 881, 894, 882, 883, 895, 896, 884, 897, - 885, 898, 899, 900, 886, 901, 887, 902, 888, 889, - 890, 903, 891, 904, 892, 905, 906, 907, 893, 908, - 894, 909, 910, 895, 896, 911, 897, 912, 898, 899, - 900, 913, 901, 914, 902, 915, 916, 917, 903, 918, - 904, 191, 905, 906, 907, 191, 908, 191, 909, 910, - 191, 1081, 911, 920, 912, 191, 921, 1081, 913, 975, - 914, 191, 915, 916, 917, 191, 918, 191, 191, 191, - 191, 919, 191, 191, 191, 191, 191, 191, 922, 191, - - 920, 191, 191, 921, 924, 976, 975, 1081, 191, 191, - 923, 977, 191, 926, 191, 191, 191, 191, 919, 191, - 191, 191, 191, 191, 191, 922, 191, 1081, 191, 930, - 191, 924, 976, 191, 925, 191, 191, 923, 977, 191, - 926, 1081, 191, 927, 191, 191, 191, 191, 191, 191, - 191, 191, 1081, 978, 929, 928, 930, 191, 191, 191, - 191, 925, 191, 934, 191, 191, 191, 191, 931, 935, - 927, 191, 191, 932, 191, 1081, 191, 191, 191, 191, - 978, 929, 928, 191, 191, 191, 191, 191, 933, 191, - 934, 191, 191, 191, 191, 931, 935, 191, 191, 191, - - 932, 939, 936, 191, 1081, 191, 191, 191, 937, 1081, - 191, 191, 938, 191, 191, 933, 191, 191, 191, 940, - 191, 191, 191, 191, 191, 191, 191, 979, 939, 936, - 191, 191, 191, 191, 191, 937, 191, 980, 942, 938, - 191, 191, 191, 1081, 191, 191, 940, 941, 191, 191, - 191, 191, 191, 191, 979, 191, 191, 943, 191, 191, - 191, 191, 981, 191, 980, 942, 191, 191, 191, 191, - 191, 946, 1081, 1081, 941, 191, 944, 1081, 191, 191, - 191, 191, 191, 191, 943, 945, 191, 191, 191, 981, - 191, 191, 1081, 191, 191, 191, 191, 191, 946, 191, - - 191, 191, 191, 944, 191, 949, 948, 1081, 191, 947, - 191, 1081, 945, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 949, 948, 950, 191, 947, 191, 191, 191, - 953, 1081, 191, 191, 952, 1081, 191, 191, 191, 191, - 191, 191, 191, 951, 1081, 191, 191, 191, 191, 191, - 191, 950, 191, 956, 1081, 191, 191, 953, 191, 191, - 191, 952, 191, 957, 982, 1081, 191, 191, 191, 1081, - 951, 954, 191, 191, 191, 191, 191, 191, 191, 191, - 956, 955, 191, 960, 191, 191, 191, 191, 191, 191, - - 957, 982, 958, 959, 191, 191, 191, 191, 954, 1081, - 191, 191, 983, 984, 191, 191, 191, 191, 955, 191, - 960, 191, 962, 191, 963, 191, 191, 191, 191, 958, - 959, 191, 961, 191, 191, 1081, 969, 191, 191, 983, - 984, 191, 191, 191, 191, 1081, 1081, 191, 191, 962, - 191, 963, 964, 191, 191, 191, 191, 966, 191, 961, - 965, 985, 191, 969, 191, 191, 971, 191, 967, 191, - 191, 191, 191, 968, 191, 191, 191, 191, 973, 964, - 970, 191, 191, 191, 966, 191, 191, 965, 985, 191, - 972, 191, 191, 971, 191, 967, 191, 191, 191, 191, - - 968, 191, 191, 191, 191, 973, 974, 970, 191, 191, - 191, 191, 986, 191, 987, 988, 989, 972, 191, 191, - 990, 991, 992, 191, 191, 993, 994, 995, 191, 191, - 191, 191, 996, 974, 997, 998, 999, 191, 191, 986, - 1000, 987, 988, 989, 1001, 1002, 1003, 990, 991, 992, - 1004, 1081, 993, 994, 995, 1005, 191, 191, 191, 996, - 191, 997, 998, 999, 1007, 191, 191, 1000, 191, 1006, - 191, 1001, 1002, 1003, 191, 191, 191, 1004, 1010, 1008, - 191, 1009, 1005, 191, 191, 191, 191, 191, 191, 191, - 191, 1007, 191, 191, 191, 191, 1006, 191, 1011, 191, - - 191, 191, 191, 191, 1012, 1010, 1008, 191, 1009, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 1014, 191, 191, 1011, 191, 191, 1015, 1013, - 191, 1012, 191, 191, 191, 1081, 191, 191, 191, 1081, - 1081, 191, 191, 191, 191, 191, 191, 191, 191, 1014, - 191, 191, 191, 191, 191, 1015, 1013, 191, 191, 191, - 191, 191, 191, 1016, 191, 191, 191, 191, 191, 191, - 191, 191, 1019, 1017, 191, 191, 1081, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 1016, 191, 191, 191, 191, 191, 1018, 191, 1081, 1019, - - 1017, 191, 191, 191, 191, 191, 191, 191, 1021, 191, - 191, 191, 191, 191, 191, 191, 1023, 191, 191, 191, - 191, 1081, 1022, 1018, 191, 1020, 191, 191, 1081, 191, - 191, 191, 191, 191, 191, 1021, 191, 1024, 191, 191, - 191, 1081, 191, 1023, 191, 191, 1025, 191, 191, 1022, - 1081, 191, 1020, 191, 191, 1026, 1027, 191, 191, 191, - 191, 191, 191, 191, 1024, 191, 191, 191, 191, 191, - 1029, 191, 191, 1025, 191, 191, 1081, 191, 191, 1028, - 191, 191, 1026, 1027, 191, 1035, 191, 191, 191, 191, - 1081, 191, 191, 191, 191, 191, 1030, 1029, 191, 191, - - 191, 191, 191, 1031, 191, 191, 1028, 191, 191, 1081, - 1036, 191, 1035, 191, 191, 191, 1081, 1032, 191, 191, - 191, 191, 191, 1030, 1037, 191, 191, 191, 1038, 191, - 1031, 191, 191, 1039, 191, 191, 191, 1036, 191, 1033, - 1040, 191, 191, 1034, 1032, 1041, 191, 191, 1042, 191, - 1043, 1037, 191, 191, 1044, 1038, 191, 1045, 191, 1046, - 1039, 191, 191, 191, 1047, 191, 1033, 1040, 191, 191, - 1034, 1081, 1041, 191, 191, 1042, 1049, 1043, 191, 1048, - 191, 1044, 191, 191, 1045, 191, 1046, 1081, 191, 191, - 1050, 1047, 191, 191, 191, 191, 191, 1081, 191, 191, - - 191, 191, 191, 1049, 191, 191, 1048, 191, 1051, 191, - 191, 1081, 191, 191, 191, 191, 191, 1050, 191, 191, - 191, 191, 191, 1081, 191, 191, 191, 191, 1052, 191, - 191, 191, 1054, 191, 191, 1051, 1081, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 1056, 1052, 1053, 191, 191, 1054, - 191, 191, 1055, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 1056, 191, 1053, 1058, 191, 1057, 1060, 191, 1055, - 191, 191, 191, 191, 191, 191, 191, 1059, 191, 191, - - 191, 1061, 191, 191, 1062, 191, 1063, 191, 191, 191, - 1064, 1058, 1065, 1057, 1060, 191, 1066, 1081, 191, 191, - 191, 191, 1073, 191, 1059, 191, 191, 191, 1061, 191, - 191, 1062, 191, 1063, 191, 191, 191, 1064, 191, 1065, - 191, 191, 1067, 1066, 191, 191, 191, 191, 191, 1073, - 191, 1068, 191, 191, 191, 1081, 191, 191, 191, 191, - 191, 191, 191, 191, 1070, 191, 191, 191, 191, 1067, - 1072, 191, 1071, 191, 191, 1069, 191, 191, 1068, 191, - 1074, 191, 191, 191, 1075, 191, 191, 191, 191, 191, - 1076, 1070, 191, 191, 1079, 191, 191, 1072, 191, 1071, - - 191, 1081, 1069, 191, 191, 1081, 191, 1074, 191, 191, - 191, 1075, 191, 191, 1077, 191, 1078, 1076, 191, 191, - 191, 1079, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 1081, 191, 1081, 1081, 1081, 191, 1080, 191, - 1081, 1077, 191, 1078, 1081, 191, 1081, 191, 191, 191, - 191, 191, 1081, 191, 1081, 191, 191, 191, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1080, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 191, 191, 191, 46, 46, - 46, 46, 46, 88, 1081, 1081, 88, 88, 177, 177, - 177, 1081, 177, 179, 1081, 179, 179, 179, 182, 1081, - - 182, 182, 182, 191, 1081, 191, 191, 191, 7, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081 + 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 37, 44, 37, 8, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 37, 44, 37, 45, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 58, 59, 60, 61, 62, + + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 77, 84, 77, 48, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 77, 84, + 77, 85, 86, 86, 86, 86, 89, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 90, 92, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, + 95, 99, 105, 100, 111, 98, 107, 136, 112, 101, + 1118, 102, 113, 108, 137, 103, 104, 176, 114, 276, + + 109, 115, 106, 110, 1117, 116, 1116, 117, 99, 105, + 100, 111, 118, 107, 136, 112, 101, 119, 102, 113, + 108, 137, 103, 104, 176, 114, 276, 109, 115, 106, + 110, 126, 116, 128, 117, 1115, 138, 127, 1114, 118, + 139, 129, 131, 172, 119, 120, 140, 130, 132, 133, + 134, 173, 1113, 121, 1112, 135, 122, 1111, 126, 123, + 128, 1110, 124, 138, 127, 125, 1109, 139, 129, 131, + 172, 1108, 120, 140, 130, 132, 133, 134, 173, 144, + 121, 141, 135, 122, 152, 142, 123, 174, 175, 124, + 148, 143, 125, 145, 1107, 153, 181, 86, 149, 146, + + 147, 154, 150, 155, 1106, 151, 144, 156, 141, 86, + 86, 152, 142, 157, 174, 175, 1105, 148, 143, 169, + 145, 170, 153, 277, 171, 149, 146, 147, 154, 150, + 155, 158, 151, 159, 156, 282, 160, 232, 184, 283, + 157, 189, 190, 161, 162, 1104, 169, 1103, 170, 185, + 277, 171, 86, 86, 193, 193, 289, 193, 158, 1102, + 159, 221, 282, 160, 232, 231, 283, 222, 296, 278, + 161, 162, 163, 297, 193, 193, 164, 279, 287, 165, + 166, 193, 193, 289, 193, 288, 167, 304, 221, 168, + 181, 86, 231, 1101, 222, 296, 278, 1099, 1097, 163, + + 297, 193, 193, 164, 279, 287, 165, 166, 1093, 1089, + 1082, 1075, 288, 167, 304, 1061, 168, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 187, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 180, 180, + 1047, 180, 180, 180, 180, 180, 180, 193, 223, 271, + 1016, 985, 193, 928, 871, 305, 224, 180, 180, 180, + 233, 306, 225, 194, 234, 195, 307, 193, 308, 193, + 235, 196, 193, 197, 193, 223, 271, 198, 199, 193, + 193, 193, 305, 224, 269, 270, 791, 233, 306, 225, + 194, 234, 195, 307, 193, 308, 193, 235, 196, 193, + + 197, 193, 314, 711, 198, 199, 604, 193, 193, 497, + 386, 269, 270, 180, 180, 180, 385, 180, 180, 180, + 180, 180, 180, 274, 273, 272, 236, 247, 193, 314, + 237, 193, 192, 180, 180, 180, 238, 294, 248, 250, + 200, 193, 280, 251, 249, 281, 193, 295, 315, 252, + 264, 193, 265, 236, 247, 266, 316, 237, 193, 193, + 201, 193, 191, 238, 294, 248, 250, 200, 193, 280, + 251, 249, 281, 193, 295, 315, 252, 264, 193, 265, + 180, 182, 266, 316, 284, 285, 193, 201, 193, 180, + 202, 317, 267, 318, 193, 319, 193, 203, 286, 320, + + 268, 290, 291, 292, 204, 293, 179, 205, 302, 303, + 321, 284, 285, 324, 193, 177, 193, 202, 317, 267, + 318, 193, 319, 193, 203, 286, 320, 268, 290, 291, + 292, 204, 293, 298, 205, 302, 303, 321, 299, 97, + 324, 193, 206, 193, 300, 96, 207, 325, 326, 322, + 208, 301, 323, 327, 332, 309, 209, 310, 333, 210, + 298, 311, 334, 87, 335, 299, 193, 1119, 312, 206, + 341, 300, 313, 207, 325, 326, 322, 208, 301, 323, + 327, 332, 309, 209, 310, 333, 210, 47, 311, 334, + 328, 335, 342, 193, 193, 312, 336, 341, 337, 313, + + 329, 211, 343, 212, 344, 330, 331, 338, 213, 339, + 345, 346, 347, 214, 193, 47, 348, 328, 349, 342, + 340, 193, 350, 336, 351, 337, 1119, 329, 211, 343, + 212, 344, 330, 331, 338, 213, 339, 345, 346, 347, + 214, 193, 215, 348, 352, 349, 193, 340, 353, 350, + 216, 351, 354, 217, 357, 355, 218, 358, 359, 219, + 356, 360, 220, 363, 364, 365, 193, 1119, 1119, 215, + 361, 352, 366, 193, 1119, 353, 1119, 216, 362, 354, + 217, 357, 355, 218, 358, 359, 219, 356, 360, 220, + 363, 364, 365, 193, 193, 226, 367, 361, 369, 366, + + 370, 227, 228, 229, 371, 362, 372, 368, 230, 374, + 376, 377, 375, 382, 193, 1119, 383, 1119, 378, 1119, + 384, 193, 226, 367, 379, 369, 373, 370, 227, 228, + 229, 371, 193, 372, 368, 230, 374, 376, 377, 375, + 382, 193, 239, 383, 380, 378, 193, 384, 498, 388, + 193, 379, 193, 373, 1119, 499, 240, 381, 1119, 193, + 500, 501, 241, 242, 502, 1119, 193, 1119, 1119, 239, + 193, 380, 1119, 193, 1119, 498, 388, 193, 1119, 193, + 1119, 193, 499, 240, 381, 193, 193, 500, 501, 241, + 242, 502, 390, 193, 193, 243, 389, 193, 193, 394, + + 391, 193, 395, 244, 193, 193, 193, 245, 193, 503, + 246, 1119, 193, 193, 193, 1119, 504, 1119, 193, 390, + 1119, 193, 243, 389, 193, 193, 394, 391, 193, 395, + 244, 193, 193, 193, 245, 392, 503, 246, 393, 193, + 505, 193, 253, 504, 254, 193, 509, 255, 193, 396, + 397, 193, 510, 511, 256, 257, 1119, 1119, 1119, 193, + 1119, 1119, 392, 398, 193, 393, 193, 505, 193, 253, + 512, 254, 1119, 509, 255, 193, 396, 397, 193, 510, + 511, 256, 257, 406, 401, 426, 193, 193, 193, 1119, + 398, 193, 258, 407, 399, 193, 259, 512, 193, 260, + + 261, 400, 513, 193, 514, 193, 262, 193, 193, 263, + 406, 401, 426, 515, 193, 193, 193, 1119, 1119, 258, + 407, 399, 1119, 259, 1119, 193, 260, 261, 400, 513, + 193, 514, 1119, 262, 193, 193, 263, 1119, 1119, 1119, + 515, 1119, 1119, 193, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 92, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 187, 188, 188, 188, 188, + + 188, 188, 188, 188, 188, 188, 193, 193, 516, 193, + 193, 193, 517, 402, 403, 404, 1119, 405, 1119, 518, + 1119, 417, 408, 414, 415, 416, 193, 409, 1119, 193, + 193, 193, 1119, 193, 193, 516, 193, 193, 193, 517, + 402, 403, 404, 420, 405, 193, 518, 193, 417, 408, + 414, 415, 416, 193, 409, 410, 193, 193, 193, 193, + 411, 418, 419, 193, 1119, 193, 412, 193, 1119, 1119, + 420, 193, 193, 413, 193, 193, 521, 522, 427, 193, + 1119, 523, 410, 193, 1119, 428, 193, 411, 418, 419, + 193, 193, 193, 412, 193, 193, 193, 1119, 193, 524, + + 413, 1119, 193, 521, 522, 427, 193, 193, 523, 429, + 193, 421, 428, 422, 431, 193, 193, 423, 193, 193, + 1119, 1119, 193, 193, 424, 430, 524, 193, 425, 432, + 1119, 1119, 1119, 193, 193, 193, 429, 193, 421, 193, + 422, 431, 193, 193, 423, 193, 193, 433, 193, 193, + 525, 424, 430, 193, 193, 425, 432, 193, 436, 193, + 193, 437, 193, 438, 193, 193, 193, 434, 193, 193, + 435, 193, 193, 193, 433, 193, 193, 525, 526, 193, + 193, 527, 439, 1119, 193, 436, 193, 528, 437, 1119, + 438, 193, 193, 1119, 434, 193, 193, 435, 193, 529, + + 193, 193, 1119, 193, 1119, 526, 193, 1119, 527, 439, + 444, 193, 1119, 1119, 528, 445, 193, 447, 193, 440, + 193, 193, 1119, 446, 530, 1119, 529, 531, 193, 441, + 193, 193, 193, 193, 442, 443, 193, 444, 193, 448, + 193, 449, 445, 193, 447, 453, 440, 193, 193, 519, + 446, 530, 193, 193, 531, 1119, 441, 1119, 193, 193, + 193, 442, 443, 193, 520, 193, 448, 193, 449, 450, + 532, 451, 453, 193, 454, 193, 519, 533, 1119, 193, + 193, 1119, 452, 1119, 455, 193, 193, 193, 193, 534, + 193, 520, 193, 193, 458, 193, 450, 532, 451, 1119, + + 193, 454, 193, 456, 533, 457, 193, 193, 193, 452, + 193, 455, 193, 193, 193, 193, 534, 193, 193, 459, + 193, 458, 193, 193, 193, 460, 461, 193, 1119, 193, + 456, 463, 457, 193, 193, 193, 1119, 193, 193, 475, + 193, 535, 1119, 193, 193, 193, 459, 193, 1119, 193, + 193, 193, 460, 461, 193, 462, 193, 464, 463, 465, + 193, 193, 1119, 466, 1119, 193, 475, 193, 535, 193, + 193, 193, 536, 193, 193, 469, 193, 193, 467, 193, + 471, 193, 462, 468, 464, 1119, 465, 193, 193, 193, + 466, 193, 472, 193, 193, 537, 193, 193, 470, 536, + + 193, 473, 469, 538, 193, 467, 193, 471, 193, 474, + 468, 193, 478, 193, 193, 193, 193, 539, 193, 472, + 193, 193, 537, 477, 193, 470, 476, 193, 473, 193, + 538, 481, 193, 193, 540, 193, 474, 479, 193, 478, + 193, 193, 193, 483, 539, 488, 193, 193, 480, 193, + 477, 193, 193, 476, 193, 1119, 193, 193, 481, 193, + 193, 540, 193, 484, 479, 482, 193, 193, 541, 542, + 483, 1119, 488, 193, 193, 480, 193, 193, 193, 193, + 494, 193, 193, 485, 193, 486, 489, 193, 487, 1119, + 484, 1119, 482, 193, 193, 541, 542, 1119, 193, 1119, + + 193, 193, 193, 492, 193, 490, 193, 494, 193, 193, + 485, 491, 486, 489, 193, 487, 493, 1119, 193, 543, + 496, 495, 544, 193, 193, 193, 193, 193, 193, 193, + 492, 1119, 490, 193, 1119, 1119, 1119, 1119, 491, 1119, + 545, 546, 547, 493, 193, 193, 543, 496, 495, 544, + 193, 193, 548, 193, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 506, 549, 507, 545, 546, 547, + 550, 193, 552, 553, 554, 555, 556, 557, 558, 548, + 551, 508, 559, 560, 561, 562, 563, 564, 565, 566, + 567, 506, 549, 507, 568, 569, 570, 550, 571, 552, + + 553, 554, 555, 556, 557, 558, 572, 551, 508, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 573, 574, + 575, 568, 569, 570, 576, 571, 577, 578, 579, 580, + 581, 582, 583, 572, 584, 585, 586, 587, 588, 589, + 591, 593, 592, 594, 595, 573, 574, 575, 590, 596, + 597, 576, 598, 577, 578, 579, 580, 581, 582, 583, + 599, 584, 585, 586, 587, 588, 589, 591, 593, 592, + 594, 595, 602, 603, 600, 590, 596, 597, 601, 598, + 1119, 1119, 193, 605, 193, 1119, 606, 599, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 193, 602, + + 603, 600, 193, 193, 193, 601, 193, 193, 608, 193, + 605, 193, 193, 606, 607, 1119, 193, 1119, 193, 1119, + 193, 1119, 1119, 712, 610, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 608, 193, 1119, 609, 193, + 193, 607, 193, 193, 611, 193, 193, 193, 193, 612, + 712, 610, 193, 193, 193, 193, 1119, 193, 193, 193, + 623, 1119, 193, 193, 613, 609, 614, 193, 617, 193, + 616, 611, 193, 193, 193, 193, 612, 193, 620, 193, + 193, 615, 618, 193, 193, 193, 193, 623, 621, 193, + 1119, 613, 193, 614, 193, 617, 193, 616, 619, 193, + + 193, 193, 625, 193, 193, 620, 193, 193, 615, 618, + 193, 193, 193, 193, 622, 621, 193, 626, 624, 193, + 193, 193, 629, 193, 1119, 619, 193, 193, 1119, 625, + 193, 193, 627, 193, 628, 193, 193, 193, 193, 193, + 633, 622, 193, 193, 626, 624, 193, 193, 631, 629, + 630, 193, 193, 193, 713, 193, 193, 632, 193, 627, + 193, 628, 193, 193, 193, 635, 193, 633, 714, 193, + 634, 193, 193, 193, 193, 631, 193, 630, 193, 193, + 1119, 713, 193, 193, 632, 193, 636, 193, 193, 193, + 637, 193, 635, 193, 193, 714, 193, 634, 193, 193, + + 193, 193, 639, 193, 641, 640, 642, 638, 193, 193, + 193, 193, 193, 636, 1119, 193, 193, 637, 193, 193, + 193, 193, 1119, 193, 193, 715, 645, 193, 716, 639, + 193, 641, 640, 642, 638, 193, 193, 193, 193, 193, + 193, 193, 646, 193, 1119, 193, 193, 193, 643, 644, + 1119, 193, 715, 645, 717, 716, 1119, 193, 193, 647, + 193, 193, 649, 193, 1119, 193, 193, 193, 193, 646, + 193, 193, 193, 1119, 648, 643, 644, 193, 193, 193, + 193, 717, 718, 652, 1119, 193, 647, 193, 193, 649, + 193, 193, 193, 651, 650, 1119, 654, 193, 193, 193, + + 193, 648, 193, 1119, 193, 193, 193, 193, 655, 718, + 652, 656, 653, 1119, 719, 1119, 193, 193, 193, 720, + 651, 650, 193, 654, 193, 193, 193, 193, 193, 193, + 657, 193, 721, 659, 660, 655, 193, 193, 656, 653, + 658, 719, 662, 193, 193, 193, 720, 1119, 1119, 193, + 193, 193, 193, 1119, 1119, 193, 193, 657, 193, 721, + 659, 660, 193, 193, 193, 722, 661, 658, 1119, 662, + 193, 193, 193, 1119, 663, 664, 193, 193, 193, 193, + 665, 666, 1119, 193, 193, 193, 1119, 667, 1119, 193, + 193, 723, 722, 661, 1119, 193, 193, 193, 193, 193, + + 193, 663, 664, 193, 193, 193, 193, 665, 666, 193, + 669, 193, 193, 193, 667, 193, 668, 193, 723, 674, + 193, 193, 193, 193, 1119, 670, 193, 193, 671, 193, + 193, 193, 193, 193, 675, 1119, 193, 669, 193, 193, + 193, 193, 193, 668, 673, 676, 674, 193, 193, 193, + 193, 672, 670, 193, 193, 671, 193, 193, 193, 193, + 193, 675, 677, 724, 725, 193, 193, 193, 193, 193, + 678, 673, 676, 193, 1119, 679, 193, 193, 672, 193, + 193, 193, 1119, 193, 680, 193, 193, 193, 193, 677, + 724, 725, 193, 684, 193, 682, 193, 678, 681, 1119, + + 193, 686, 679, 193, 193, 1119, 193, 193, 193, 193, + 193, 680, 193, 193, 193, 193, 683, 685, 193, 193, + 684, 193, 682, 1119, 193, 681, 193, 193, 686, 193, + 193, 193, 193, 688, 193, 193, 193, 694, 193, 193, + 193, 689, 193, 683, 685, 193, 193, 193, 193, 690, + 687, 193, 193, 193, 193, 193, 193, 193, 691, 193, + 688, 193, 193, 193, 694, 193, 726, 193, 689, 193, + 692, 193, 693, 193, 193, 193, 690, 687, 727, 193, + 695, 193, 193, 193, 193, 691, 696, 1119, 193, 193, + 193, 193, 728, 726, 193, 697, 701, 692, 193, 693, + + 193, 193, 193, 1119, 193, 727, 193, 695, 193, 193, + 193, 700, 729, 696, 698, 193, 699, 193, 193, 728, + 193, 193, 697, 701, 193, 703, 702, 193, 193, 193, + 706, 193, 704, 193, 193, 193, 193, 193, 700, 729, + 193, 698, 193, 699, 193, 1119, 730, 193, 193, 1119, + 731, 193, 703, 702, 193, 193, 193, 706, 705, 704, + 193, 193, 193, 193, 193, 732, 193, 193, 710, 709, + 733, 734, 707, 730, 735, 193, 708, 731, 736, 737, + 738, 193, 193, 193, 739, 705, 193, 193, 740, 741, + 193, 742, 732, 193, 743, 710, 709, 733, 734, 707, + + 744, 735, 193, 708, 745, 736, 737, 738, 746, 747, + 193, 739, 748, 193, 749, 740, 741, 750, 742, 751, + 753, 743, 754, 755, 756, 757, 758, 744, 759, 760, + 752, 745, 761, 762, 763, 746, 747, 764, 765, 748, + 766, 749, 767, 768, 750, 769, 751, 753, 770, 754, + 755, 756, 757, 758, 771, 759, 760, 752, 772, 761, + 762, 763, 773, 774, 764, 765, 775, 766, 776, 767, + 768, 777, 769, 778, 779, 770, 780, 781, 782, 783, + 784, 771, 785, 786, 787, 772, 788, 789, 790, 773, + 774, 1119, 1119, 775, 1119, 776, 193, 193, 777, 193, + + 778, 779, 1119, 780, 781, 782, 783, 784, 193, 785, + 786, 787, 792, 788, 789, 790, 794, 795, 193, 193, + 193, 793, 798, 193, 193, 1119, 193, 1119, 193, 797, + 193, 796, 193, 193, 1119, 193, 1119, 799, 193, 792, + 193, 193, 193, 794, 795, 193, 193, 193, 793, 798, + 193, 193, 193, 193, 193, 193, 797, 193, 796, 193, + 193, 193, 800, 193, 799, 193, 193, 193, 193, 193, + 801, 193, 193, 1119, 193, 1119, 802, 193, 193, 193, + 193, 193, 193, 193, 1119, 193, 193, 193, 193, 800, + 193, 193, 193, 193, 806, 1119, 804, 801, 193, 193, + + 803, 193, 193, 802, 193, 193, 805, 193, 1119, 193, + 193, 193, 193, 193, 193, 193, 872, 873, 193, 193, + 807, 806, 809, 804, 193, 1119, 193, 803, 193, 193, + 808, 193, 193, 805, 193, 193, 193, 811, 193, 193, + 812, 810, 193, 872, 873, 193, 193, 807, 193, 809, + 193, 193, 813, 193, 193, 193, 193, 808, 193, 193, + 193, 1119, 193, 193, 811, 193, 193, 812, 810, 814, + 193, 815, 193, 193, 193, 193, 1119, 193, 193, 813, + 193, 193, 820, 193, 193, 193, 193, 193, 193, 818, + 819, 1119, 193, 193, 193, 1119, 814, 193, 815, 193, + + 816, 193, 193, 817, 193, 193, 1119, 193, 193, 820, + 874, 193, 193, 193, 193, 193, 818, 819, 193, 193, + 193, 193, 193, 875, 822, 1119, 193, 816, 193, 193, + 817, 193, 193, 821, 193, 193, 1119, 874, 193, 193, + 193, 193, 193, 823, 193, 193, 193, 193, 193, 193, + 875, 822, 193, 825, 193, 193, 193, 193, 826, 193, + 821, 193, 1119, 824, 193, 193, 1119, 193, 193, 193, + 823, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 825, 193, 1119, 193, 193, 826, 827, 828, 193, 193, + 824, 193, 1119, 193, 193, 193, 1119, 193, 193, 193, + + 193, 1119, 829, 193, 193, 193, 193, 193, 831, 193, + 830, 193, 193, 827, 828, 193, 193, 193, 193, 832, + 193, 193, 876, 193, 193, 193, 193, 193, 833, 829, + 1119, 193, 193, 193, 193, 831, 193, 830, 193, 193, + 193, 193, 193, 193, 193, 193, 832, 835, 193, 876, + 193, 193, 836, 193, 193, 833, 1119, 834, 193, 193, + 193, 193, 193, 193, 1119, 193, 839, 193, 193, 193, + 193, 193, 193, 1119, 835, 837, 838, 1119, 193, 836, + 842, 193, 1119, 193, 834, 193, 877, 193, 193, 193, + 193, 193, 193, 839, 841, 1119, 193, 193, 193, 193, + + 193, 878, 837, 838, 840, 845, 193, 842, 193, 193, + 193, 193, 193, 877, 193, 879, 193, 193, 193, 843, + 1119, 841, 844, 193, 193, 880, 193, 193, 878, 193, + 1119, 840, 845, 193, 193, 846, 193, 193, 193, 193, + 193, 193, 879, 193, 193, 848, 843, 847, 881, 844, + 193, 193, 880, 193, 1119, 850, 193, 193, 1119, 193, + 193, 193, 846, 849, 193, 851, 193, 193, 193, 1119, + 193, 193, 848, 193, 847, 881, 193, 193, 193, 193, + 1119, 852, 850, 1119, 193, 853, 193, 193, 193, 854, + 849, 193, 851, 193, 855, 193, 193, 193, 193, 193, + + 193, 1119, 857, 193, 193, 193, 193, 193, 852, 856, + 193, 193, 853, 882, 193, 193, 854, 858, 193, 193, + 193, 855, 193, 193, 193, 193, 193, 193, 193, 857, + 193, 193, 193, 859, 193, 1119, 856, 193, 193, 193, + 882, 193, 860, 193, 858, 861, 193, 193, 193, 193, + 1119, 193, 193, 193, 193, 193, 193, 193, 1119, 867, + 859, 193, 862, 193, 1119, 193, 193, 193, 868, 860, + 193, 865, 861, 193, 193, 193, 193, 863, 864, 193, + 193, 193, 193, 193, 1119, 193, 867, 193, 193, 862, + 193, 193, 193, 866, 193, 868, 193, 193, 865, 870, + + 193, 193, 193, 193, 863, 864, 193, 193, 193, 193, + 193, 193, 193, 869, 193, 883, 193, 193, 193, 193, + 866, 193, 884, 193, 193, 885, 870, 886, 193, 193, + 193, 887, 888, 889, 193, 890, 891, 193, 193, 892, + 869, 893, 883, 193, 193, 894, 193, 895, 193, 884, + 896, 897, 885, 898, 886, 899, 900, 193, 887, 888, + 889, 901, 890, 891, 902, 903, 892, 904, 893, 905, + 906, 907, 894, 908, 895, 909, 910, 896, 897, 911, + 898, 912, 899, 900, 913, 914, 915, 916, 901, 917, + 918, 902, 903, 919, 904, 920, 905, 906, 907, 921, + + 908, 922, 909, 910, 923, 924, 911, 925, 912, 926, + 927, 913, 914, 915, 916, 193, 917, 918, 193, 193, + 919, 193, 920, 930, 193, 1119, 921, 931, 922, 986, + 1119, 923, 924, 987, 925, 193, 926, 927, 193, 193, + 929, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 930, 193, 932, 193, 931, 936, 986, 193, 933, 988, + 987, 1119, 193, 193, 1119, 193, 193, 929, 193, 193, + 193, 193, 934, 193, 193, 193, 193, 193, 193, 932, + 193, 1119, 936, 193, 193, 933, 988, 193, 935, 940, + 193, 937, 193, 193, 1119, 1119, 193, 989, 193, 934, + + 193, 193, 193, 938, 193, 193, 990, 193, 939, 193, + 193, 1119, 193, 193, 193, 935, 940, 193, 937, 193, + 193, 193, 193, 944, 989, 193, 941, 991, 193, 992, + 938, 1119, 942, 990, 193, 939, 193, 193, 193, 193, + 193, 945, 193, 193, 193, 1119, 1119, 943, 193, 193, + 944, 193, 193, 941, 991, 1119, 992, 993, 193, 942, + 193, 193, 193, 193, 193, 193, 946, 947, 945, 193, + 193, 193, 193, 950, 943, 193, 948, 193, 193, 193, + 193, 949, 193, 193, 993, 193, 193, 193, 193, 193, + 193, 193, 994, 946, 947, 193, 995, 193, 193, 193, + + 950, 951, 193, 948, 193, 193, 193, 193, 949, 193, + 193, 193, 952, 193, 193, 193, 953, 1119, 193, 994, + 193, 996, 193, 995, 193, 193, 193, 1119, 951, 193, + 193, 956, 193, 193, 193, 193, 1119, 1119, 193, 952, + 193, 193, 193, 953, 954, 955, 193, 193, 996, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 956, 193, + 193, 193, 193, 193, 193, 959, 958, 193, 957, 193, + 1119, 954, 955, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 959, 958, 960, 957, 193, 193, 193, 193, + + 961, 193, 193, 962, 1119, 997, 193, 193, 193, 193, + 193, 193, 193, 963, 1119, 193, 193, 193, 193, 193, + 1119, 960, 966, 998, 193, 193, 193, 961, 193, 193, + 962, 193, 997, 193, 193, 193, 193, 1119, 1119, 193, + 963, 964, 193, 967, 193, 193, 193, 965, 193, 966, + 998, 193, 999, 968, 193, 193, 193, 193, 193, 193, + 193, 193, 1000, 969, 970, 193, 193, 193, 964, 193, + 967, 1001, 1119, 193, 965, 193, 1119, 193, 193, 999, + 968, 193, 972, 193, 193, 193, 193, 193, 971, 1000, + 969, 970, 193, 193, 193, 973, 1119, 193, 1001, 193, + + 193, 193, 1119, 193, 193, 193, 1119, 1002, 1119, 972, + 193, 974, 193, 1003, 193, 971, 976, 193, 975, 193, + 193, 193, 973, 977, 193, 193, 193, 193, 193, 978, + 193, 193, 193, 193, 1002, 979, 980, 193, 974, 981, + 1003, 193, 1119, 976, 193, 975, 193, 193, 193, 1004, + 977, 193, 193, 193, 193, 193, 978, 193, 193, 193, + 193, 193, 979, 980, 193, 193, 981, 983, 193, 984, + 193, 193, 1005, 193, 193, 1006, 1004, 1007, 193, 982, + 193, 1008, 193, 1009, 193, 193, 193, 1010, 193, 1011, + 193, 193, 193, 193, 983, 1012, 984, 193, 193, 1005, + + 193, 1013, 1006, 1014, 1007, 1015, 982, 1017, 1008, 193, + 1009, 1019, 193, 1048, 1010, 193, 1011, 193, 193, 193, + 193, 193, 1012, 193, 1018, 1049, 1119, 193, 1013, 193, + 1014, 193, 1015, 1020, 1017, 193, 193, 193, 1019, 193, + 1048, 193, 193, 193, 1021, 193, 193, 1023, 193, 193, + 193, 1018, 1049, 1022, 193, 193, 193, 193, 193, 193, + 1020, 1119, 193, 193, 193, 193, 193, 1050, 193, 193, + 193, 1021, 193, 193, 1023, 193, 193, 193, 1024, 193, + 1022, 1119, 193, 193, 193, 1025, 193, 1026, 193, 193, + 193, 193, 193, 193, 1050, 1119, 193, 193, 1119, 1027, + + 193, 193, 193, 193, 193, 1024, 193, 193, 193, 193, + 193, 193, 1025, 193, 1026, 193, 193, 193, 193, 193, + 193, 193, 1028, 193, 193, 193, 1027, 193, 193, 1051, + 193, 193, 1029, 193, 193, 193, 193, 193, 193, 1119, + 193, 193, 193, 1031, 193, 193, 193, 193, 193, 1028, + 193, 193, 193, 193, 193, 1030, 1051, 193, 193, 1029, + 193, 193, 193, 193, 193, 1035, 193, 193, 193, 193, + 1031, 1033, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 1034, 1030, 1032, 193, 193, 193, 193, 193, 193, + 193, 1052, 1035, 193, 193, 193, 193, 1053, 1033, 1036, + + 193, 193, 193, 193, 193, 193, 193, 193, 1034, 1037, + 1032, 193, 193, 193, 193, 1038, 1119, 193, 1052, 1039, + 193, 193, 193, 193, 1053, 193, 1036, 1119, 193, 193, + 1054, 193, 193, 193, 193, 1041, 1037, 193, 193, 193, + 193, 1042, 1038, 193, 193, 193, 1039, 193, 193, 193, + 1040, 1055, 193, 193, 193, 193, 193, 1054, 193, 193, + 193, 1119, 1041, 193, 193, 193, 193, 193, 1042, 1043, + 193, 193, 193, 193, 193, 193, 193, 1040, 1055, 193, + 193, 193, 193, 193, 193, 1056, 193, 193, 1044, 1057, + 193, 193, 193, 193, 1046, 1058, 1043, 1045, 193, 193, + + 193, 193, 193, 193, 193, 1059, 193, 193, 1060, 193, + 193, 193, 1056, 193, 193, 1044, 1057, 193, 193, 193, + 193, 1046, 1058, 193, 1045, 1062, 193, 193, 1064, 193, + 193, 193, 1059, 193, 193, 1060, 193, 193, 1063, 193, + 193, 1119, 193, 193, 193, 193, 193, 193, 193, 1076, + 193, 193, 1062, 193, 193, 1064, 193, 193, 1119, 193, + 193, 193, 193, 1077, 193, 1063, 193, 193, 1065, 193, + 193, 193, 193, 193, 193, 193, 1076, 193, 193, 193, + 193, 193, 1119, 1066, 193, 193, 193, 193, 193, 193, + 1077, 1068, 1119, 193, 193, 1065, 193, 193, 193, 193, + + 193, 1078, 1079, 1080, 193, 193, 193, 193, 193, 1067, + 1066, 193, 193, 193, 193, 193, 193, 193, 1068, 193, + 193, 1070, 1069, 193, 193, 193, 193, 193, 1078, 1079, + 1080, 193, 193, 1074, 193, 193, 1067, 193, 193, 1072, + 193, 193, 193, 193, 193, 193, 193, 193, 1070, 1069, + 1071, 193, 193, 193, 193, 193, 1073, 193, 193, 1081, + 1074, 193, 193, 1119, 193, 193, 1072, 193, 193, 1119, + 193, 1090, 193, 193, 193, 193, 193, 1071, 193, 193, + 193, 1119, 193, 1073, 193, 193, 1081, 193, 193, 193, + 193, 1083, 193, 193, 193, 193, 193, 193, 1090, 193, + + 193, 193, 193, 193, 1084, 193, 193, 193, 1085, 193, + 1119, 1091, 193, 193, 193, 193, 193, 193, 1083, 193, + 193, 193, 193, 193, 1087, 1086, 193, 1092, 193, 1094, + 1119, 1084, 193, 193, 193, 1085, 193, 193, 1091, 193, + 193, 1088, 193, 193, 1119, 193, 193, 193, 193, 193, + 1098, 1087, 1086, 193, 1092, 193, 1094, 193, 193, 1095, + 193, 193, 1119, 193, 193, 193, 193, 193, 1088, 1119, + 193, 1096, 193, 193, 193, 193, 193, 1098, 193, 193, + 193, 193, 193, 1119, 193, 193, 1095, 193, 193, 1119, + 193, 1119, 193, 1119, 193, 1119, 1100, 1119, 1096, 193, + + 193, 1119, 193, 1119, 1119, 193, 193, 193, 193, 1119, + 1119, 1119, 1119, 1119, 193, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1100, 1119, 1119, 193, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 193, 46, 46, 46, 46, 46, + 88, 1119, 1119, 88, 88, 178, 178, 178, 1119, 178, + 180, 1119, 180, 180, 180, 183, 1119, 183, 183, 183, + 193, 1119, 193, 193, 193, 7, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119 } ; -static const flex_int16_t yy_chk[4377] = +static const flex_int16_t yy_chk[4543] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1487,481 +1521,500 @@ static const flex_int16_t yy_chk[4377] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 9, 9, 10, 10, 15, 1084, - 15, 17, 17, 18, 18, 21, 22, 21, 24, 383, - 23, 30, 24, 21, 272, 21, 24, 23, 31, 21, - 21, 44, 24, 98, 23, 24, 22, 23, 55, 25, - 55, 25, 21, 22, 21, 24, 25, 23, 30, 24, - 21, 25, 21, 24, 23, 31, 21, 21, 44, 24, - 98, 23, 24, 22, 23, 27, 25, 28, 25, 186, - - 32, 27, 185, 25, 32, 28, 29, 42, 25, 26, - 32, 28, 29, 29, 29, 42, 182, 26, 92, 29, - 26, 91, 27, 26, 28, 88, 26, 32, 27, 26, - 85, 32, 28, 29, 42, 60, 26, 32, 28, 29, - 29, 29, 42, 34, 26, 33, 29, 26, 36, 33, - 26, 43, 43, 26, 35, 33, 26, 34, 59, 36, - 49, 49, 35, 34, 34, 36, 35, 38, 56, 35, - 34, 38, 33, 50, 50, 36, 33, 38, 43, 43, - 52, 35, 33, 41, 34, 41, 36, 51, 41, 35, - 34, 34, 36, 35, 38, 39, 35, 39, 38, 99, - - 39, 57, 57, 47, 38, 58, 58, 39, 39, 45, - 41, 20, 41, 86, 86, 41, 90, 90, 67, 70, - 100, 71, 39, 19, 39, 67, 99, 39, 100, 70, - 101, 67, 102, 101, 39, 39, 40, 103, 67, 70, - 40, 71, 106, 40, 40, 67, 70, 100, 71, 106, - 40, 107, 67, 40, 16, 100, 70, 101, 67, 102, - 101, 180, 180, 40, 103, 67, 70, 40, 71, 106, - 40, 40, 184, 184, 113, 77, 106, 40, 107, 11, - 40, 61, 61, 84, 61, 61, 61, 61, 61, 61, - 68, 61, 61, 61, 68, 77, 72, 61, 68, 61, - - 72, 113, 77, 84, 68, 61, 72, 61, 109, 7, - 84, 61, 61, 114, 68, 115, 72, 68, 109, 116, - 4, 68, 77, 72, 61, 68, 61, 72, 3, 0, - 84, 68, 61, 72, 61, 109, 112, 112, 61, 61, - 114, 68, 115, 72, 0, 109, 116, 61, 62, 62, - 0, 62, 62, 62, 62, 62, 62, 73, 62, 62, - 62, 73, 76, 112, 112, 62, 76, 73, 104, 104, - 78, 110, 117, 76, 78, 119, 110, 73, 120, 76, - 78, 121, 104, 122, 73, 62, 76, 0, 73, 76, - 78, 123, 62, 76, 73, 104, 104, 78, 110, 117, - - 76, 78, 119, 110, 73, 120, 76, 78, 121, 104, - 122, 124, 62, 76, 62, 63, 81, 78, 123, 63, - 125, 126, 63, 127, 128, 81, 127, 81, 129, 63, - 81, 131, 63, 132, 0, 134, 81, 82, 124, 63, - 0, 82, 63, 81, 0, 82, 63, 125, 126, 63, - 127, 128, 81, 127, 81, 129, 63, 81, 131, 63, - 132, 82, 134, 81, 82, 135, 63, 64, 82, 136, - 83, 64, 82, 83, 83, 64, 108, 108, 108, 137, - 108, 64, 0, 138, 64, 138, 140, 0, 82, 141, - 83, 64, 135, 0, 64, 142, 136, 83, 64, 0, - - 83, 83, 64, 108, 108, 108, 137, 108, 64, 111, - 138, 64, 138, 140, 111, 143, 141, 83, 64, 65, - 111, 139, 142, 139, 144, 145, 65, 111, 65, 0, - 146, 0, 147, 65, 139, 0, 111, 149, 65, 65, - 0, 111, 143, 150, 0, 151, 65, 111, 139, 152, - 139, 144, 145, 65, 111, 65, 118, 146, 118, 147, - 65, 139, 118, 154, 149, 65, 65, 66, 154, 118, - 150, 66, 151, 118, 155, 66, 152, 156, 66, 157, - 0, 66, 153, 118, 66, 118, 153, 66, 0, 118, - 154, 66, 0, 0, 66, 154, 118, 0, 66, 0, - - 118, 155, 66, 159, 156, 66, 157, 133, 66, 153, - 160, 66, 0, 153, 66, 158, 161, 133, 66, 69, - 69, 162, 133, 133, 158, 163, 69, 69, 69, 164, - 159, 165, 158, 69, 133, 166, 163, 160, 0, 69, - 0, 169, 158, 161, 133, 167, 69, 69, 162, 133, - 133, 158, 163, 69, 69, 69, 164, 170, 165, 158, - 69, 0, 166, 163, 0, 167, 69, 74, 169, 171, - 168, 74, 167, 168, 173, 171, 172, 174, 175, 191, - 0, 74, 0, 0, 170, 274, 276, 74, 74, 172, - 277, 74, 167, 0, 74, 0, 171, 168, 74, 191, - - 168, 173, 171, 172, 174, 175, 191, 193, 74, 192, - 192, 196, 274, 276, 74, 74, 172, 277, 74, 75, - 75, 0, 193, 199, 196, 279, 191, 193, 75, 0, - 192, 196, 75, 0, 193, 75, 192, 192, 196, 75, - 0, 194, 0, 199, 0, 0, 75, 75, 194, 193, - 199, 196, 279, 0, 193, 75, 194, 192, 196, 75, - 195, 194, 75, 195, 195, 281, 75, 79, 194, 79, - 199, 197, 79, 197, 282, 194, 283, 284, 286, 79, - 79, 0, 0, 194, 195, 0, 0, 195, 194, 79, - 195, 195, 281, 197, 79, 0, 79, 0, 197, 79, - - 197, 282, 287, 283, 284, 286, 79, 79, 198, 198, - 198, 195, 200, 209, 0, 0, 79, 80, 201, 200, - 197, 80, 201, 198, 80, 80, 200, 209, 198, 287, - 0, 80, 200, 209, 80, 198, 198, 198, 288, 200, - 209, 80, 201, 0, 80, 201, 200, 203, 80, 201, - 198, 80, 80, 200, 209, 198, 204, 203, 80, 200, - 209, 80, 0, 0, 289, 288, 0, 203, 80, 201, - 202, 204, 206, 207, 203, 290, 204, 202, 202, 202, - 291, 202, 292, 204, 203, 206, 206, 293, 295, 207, - 202, 289, 206, 207, 203, 0, 0, 202, 204, 206, - - 207, 208, 290, 204, 202, 202, 202, 291, 202, 292, - 224, 208, 206, 206, 293, 295, 207, 202, 205, 206, - 207, 208, 205, 205, 213, 210, 210, 0, 208, 205, - 224, 213, 211, 0, 211, 296, 205, 224, 208, 0, - 214, 298, 205, 0, 213, 205, 210, 214, 208, 205, - 205, 213, 210, 210, 211, 0, 205, 224, 213, 211, - 214, 211, 296, 205, 299, 215, 216, 214, 298, 205, - 217, 213, 0, 210, 214, 215, 218, 0, 300, 216, - 217, 211, 212, 218, 212, 215, 216, 214, 212, 0, - 217, 299, 215, 216, 301, 212, 218, 217, 219, 212, - - 230, 0, 215, 218, 212, 300, 216, 217, 219, 212, - 218, 212, 215, 216, 220, 212, 221, 217, 219, 222, - 230, 301, 212, 218, 220, 219, 212, 230, 222, 226, - 221, 212, 223, 221, 220, 219, 221, 0, 225, 222, - 226, 220, 225, 221, 228, 219, 222, 230, 223, 226, - 229, 220, 223, 228, 229, 222, 226, 221, 225, 223, - 221, 220, 0, 221, 228, 225, 222, 226, 242, 225, - 229, 228, 231, 231, 0, 223, 226, 229, 297, 223, - 228, 229, 0, 0, 302, 225, 227, 227, 242, 241, - 241, 228, 231, 297, 0, 242, 227, 229, 232, 231, - - 231, 227, 227, 303, 232, 297, 232, 227, 233, 241, - 233, 302, 233, 227, 227, 242, 241, 241, 232, 231, - 297, 233, 305, 227, 0, 232, 0, 234, 227, 227, - 303, 232, 233, 232, 227, 233, 241, 233, 237, 233, - 234, 235, 236, 0, 0, 232, 306, 234, 233, 305, - 235, 236, 307, 237, 234, 238, 239, 0, 237, 233, - 240, 235, 236, 239, 240, 237, 244, 234, 235, 236, - 238, 243, 243, 306, 234, 238, 239, 235, 236, 307, - 237, 244, 238, 239, 240, 237, 244, 240, 235, 236, - 239, 240, 243, 244, 245, 308, 246, 238, 243, 243, - - 246, 0, 238, 239, 0, 247, 0, 245, 244, 247, - 249, 240, 249, 244, 245, 248, 309, 310, 311, 243, - 246, 245, 308, 246, 248, 247, 250, 246, 251, 248, - 249, 251, 247, 250, 245, 248, 247, 249, 0, 249, - 0, 245, 248, 309, 310, 311, 250, 246, 251, 0, - 254, 248, 247, 250, 0, 251, 248, 249, 251, 252, - 250, 252, 248, 254, 253, 255, 0, 258, 252, 255, - 254, 312, 0, 250, 253, 251, 252, 254, 0, 256, - 0, 252, 256, 0, 253, 257, 252, 258, 252, 255, - 254, 253, 255, 257, 258, 252, 255, 254, 312, 259, - - 313, 253, 256, 252, 257, 257, 256, 259, 252, 256, - 260, 253, 257, 0, 258, 0, 255, 0, 261, 259, - 257, 260, 261, 263, 263, 314, 259, 313, 0, 256, - 260, 257, 257, 267, 259, 264, 262, 260, 261, 264, - 262, 0, 261, 262, 263, 261, 259, 0, 260, 261, - 263, 263, 314, 267, 0, 264, 262, 260, 268, 266, - 267, 265, 264, 262, 0, 261, 264, 262, 265, 261, - 262, 263, 266, 268, 265, 285, 315, 285, 268, 266, - 267, 265, 264, 262, 0, 268, 266, 269, 265, 316, - 317, 269, 285, 318, 319, 265, 320, 321, 322, 266, - - 268, 265, 285, 315, 285, 268, 266, 323, 265, 324, - 325, 269, 326, 327, 269, 329, 316, 317, 269, 285, - 318, 319, 328, 320, 321, 322, 330, 332, 333, 334, - 335, 336, 328, 337, 323, 338, 324, 325, 269, 326, - 327, 339, 329, 340, 341, 343, 344, 345, 346, 328, - 347, 348, 349, 330, 332, 333, 334, 335, 336, 328, - 337, 350, 338, 351, 352, 353, 354, 355, 339, 356, - 340, 341, 343, 344, 345, 346, 357, 347, 348, 349, - 358, 360, 361, 362, 363, 364, 365, 366, 350, 367, - 351, 352, 353, 354, 355, 369, 356, 370, 371, 372, - - 371, 373, 374, 357, 375, 376, 370, 358, 360, 361, - 362, 363, 364, 365, 366, 377, 367, 378, 380, 379, - 381, 384, 369, 379, 370, 371, 372, 371, 373, 374, - 0, 375, 376, 370, 385, 386, 387, 389, 493, 391, - 0, 384, 377, 0, 378, 380, 379, 381, 384, 390, - 379, 388, 0, 390, 385, 386, 387, 389, 388, 391, - 0, 385, 386, 387, 389, 493, 391, 392, 384, 494, - 393, 388, 395, 390, 393, 394, 390, 392, 388, 395, - 390, 385, 386, 387, 389, 388, 391, 392, 401, 0, - 393, 0, 395, 394, 392, 394, 494, 393, 388, 395, - - 390, 393, 394, 397, 392, 398, 395, 396, 401, 396, - 0, 0, 0, 400, 392, 401, 397, 393, 399, 395, - 394, 398, 394, 397, 396, 398, 399, 404, 400, 396, - 397, 0, 398, 400, 396, 401, 396, 402, 399, 405, - 400, 402, 0, 397, 0, 399, 0, 404, 398, 403, - 397, 396, 398, 399, 404, 400, 396, 408, 407, 405, - 400, 402, 407, 403, 402, 399, 405, 410, 402, 403, - 0, 406, 408, 409, 404, 409, 403, 408, 406, 0, - 0, 0, 407, 495, 408, 407, 405, 410, 402, 407, - 403, 406, 411, 414, 410, 409, 403, 413, 406, 408, - - 409, 415, 409, 412, 408, 406, 412, 411, 413, 407, - 495, 417, 411, 414, 410, 0, 0, 413, 406, 411, - 414, 415, 409, 416, 413, 0, 412, 416, 415, 0, - 412, 417, 419, 412, 411, 413, 0, 0, 417, 411, - 414, 418, 420, 418, 413, 423, 419, 416, 415, 420, - 416, 421, 419, 412, 416, 496, 424, 497, 417, 419, - 424, 422, 420, 418, 421, 423, 498, 0, 418, 420, - 418, 421, 423, 419, 416, 422, 420, 425, 421, 419, - 424, 422, 496, 424, 497, 425, 426, 424, 422, 420, - 418, 421, 423, 498, 426, 499, 427, 425, 421, 429, - - 501, 505, 422, 427, 425, 431, 426, 424, 422, 431, - 0, 428, 425, 426, 428, 429, 427, 430, 0, 429, - 430, 426, 499, 427, 425, 431, 429, 501, 505, 436, - 427, 0, 431, 426, 428, 432, 431, 430, 428, 434, - 433, 428, 429, 427, 430, 434, 429, 430, 435, 436, - 432, 437, 431, 433, 438, 432, 436, 506, 435, 434, - 433, 428, 432, 439, 430, 507, 434, 433, 435, 442, - 509, 437, 434, 439, 438, 435, 436, 432, 437, 443, - 433, 438, 432, 439, 506, 435, 434, 433, 440, 442, - 439, 444, 507, 441, 443, 435, 442, 509, 437, 443, - - 439, 438, 441, 445, 440, 0, 443, 445, 440, 0, - 439, 444, 510, 441, 0, 440, 442, 448, 444, 448, - 441, 443, 0, 445, 446, 446, 443, 451, 0, 441, - 445, 440, 447, 450, 445, 440, 447, 448, 444, 510, - 441, 449, 451, 449, 448, 446, 448, 451, 0, 450, - 445, 446, 446, 450, 451, 452, 447, 453, 454, 447, - 450, 449, 0, 447, 448, 454, 455, 456, 449, 451, - 449, 452, 446, 0, 451, 452, 450, 453, 454, 455, - 450, 456, 452, 447, 453, 454, 455, 456, 449, 457, - 458, 459, 454, 455, 456, 459, 0, 463, 452, 462, - - 461, 463, 452, 460, 453, 454, 455, 462, 456, 457, - 458, 461, 460, 455, 456, 459, 457, 458, 459, 462, - 461, 463, 459, 460, 463, 464, 462, 461, 463, 465, - 460, 511, 465, 467, 462, 512, 457, 458, 461, 460, - 464, 469, 459, 470, 466, 464, 462, 461, 463, 465, - 460, 466, 464, 467, 472, 468, 465, 0, 511, 465, - 467, 469, 512, 470, 466, 468, 471, 464, 469, 472, - 470, 466, 464, 0, 472, 468, 465, 0, 466, 473, - 467, 472, 468, 478, 471, 476, 471, 475, 469, 513, - 470, 466, 468, 471, 473, 479, 472, 474, 475, 473, - - 476, 472, 468, 478, 474, 476, 473, 475, 0, 477, - 478, 471, 476, 471, 475, 479, 513, 474, 477, 480, - 0, 473, 479, 482, 474, 475, 473, 476, 480, 477, - 478, 474, 476, 482, 475, 482, 477, 0, 481, 480, - 0, 483, 479, 482, 474, 477, 480, 481, 484, 514, - 482, 483, 484, 0, 0, 480, 477, 0, 481, 515, - 482, 483, 482, 516, 485, 481, 480, 486, 483, 0, - 482, 517, 484, 485, 481, 484, 514, 488, 483, 484, - 487, 489, 487, 486, 485, 481, 515, 486, 483, 518, - 516, 485, 0, 0, 486, 488, 489, 488, 517, 484, - - 485, 489, 487, 519, 488, 492, 490, 487, 489, 487, - 486, 485, 522, 523, 486, 490, 518, 491, 492, 490, - 491, 524, 488, 489, 488, 492, 490, 525, 489, 487, - 519, 526, 492, 490, 527, 528, 530, 491, 531, 522, - 523, 534, 490, 535, 491, 492, 490, 491, 524, 537, - 540, 541, 492, 490, 525, 542, 543, 544, 526, 547, - 545, 527, 528, 530, 491, 531, 551, 553, 534, 555, - 535, 545, 556, 556, 557, 558, 537, 540, 541, 560, - 561, 562, 542, 543, 544, 563, 547, 545, 564, 566, - 567, 568, 569, 551, 553, 570, 555, 571, 545, 556, - - 556, 557, 558, 572, 573, 574, 560, 561, 562, 576, - 577, 578, 563, 579, 582, 564, 566, 567, 568, 569, - 583, 585, 570, 586, 571, 587, 588, 589, 590, 591, - 572, 573, 574, 592, 594, 596, 576, 577, 578, 601, - 579, 582, 0, 602, 599, 600, 0, 583, 585, 605, - 586, 0, 587, 588, 589, 590, 591, 599, 600, 601, - 592, 594, 596, 602, 599, 600, 601, 603, 604, 605, - 602, 599, 600, 606, 607, 0, 605, 604, 607, 608, - 603, 0, 609, 610, 599, 600, 601, 603, 604, 0, - 602, 599, 600, 606, 603, 604, 605, 0, 607, 608, - - 606, 607, 609, 610, 604, 607, 608, 603, 611, 609, - 610, 613, 614, 612, 603, 604, 611, 612, 0, 0, - 606, 615, 0, 0, 613, 607, 608, 0, 611, 609, - 610, 613, 614, 612, 617, 611, 615, 619, 613, 614, - 612, 615, 616, 611, 612, 618, 621, 707, 615, 617, - 621, 613, 618, 619, 617, 611, 616, 619, 613, 614, - 612, 617, 616, 615, 619, 618, 0, 620, 615, 616, - 621, 0, 618, 621, 707, 622, 617, 621, 625, 618, - 619, 617, 620, 616, 619, 625, 0, 620, 622, 616, - 626, 623, 618, 623, 620, 622, 624, 621, 625, 627, - - 624, 709, 622, 0, 711, 625, 712, 0, 0, 620, - 626, 0, 625, 623, 620, 622, 624, 626, 623, 627, - 623, 628, 622, 624, 629, 625, 627, 624, 709, 630, - 632, 711, 628, 712, 632, 629, 0, 626, 631, 713, - 623, 628, 0, 624, 629, 630, 627, 634, 628, 630, - 635, 629, 0, 631, 632, 638, 630, 632, 631, 628, - 633, 632, 629, 636, 633, 631, 713, 634, 628, 637, - 635, 629, 630, 637, 634, 638, 630, 635, 636, 639, - 631, 632, 638, 636, 633, 631, 0, 633, 640, 714, - 636, 633, 640, 637, 634, 0, 637, 635, 641, 639, - - 637, 642, 638, 644, 643, 636, 639, 645, 0, 641, - 636, 633, 640, 643, 715, 640, 714, 646, 641, 640, - 637, 642, 647, 644, 643, 641, 639, 645, 642, 0, - 644, 643, 0, 648, 645, 647, 641, 646, 652, 640, - 643, 715, 647, 649, 646, 641, 650, 0, 642, 647, - 644, 643, 648, 648, 645, 651, 649, 651, 652, 650, - 648, 654, 647, 649, 646, 652, 650, 653, 651, 647, - 649, 655, 656, 650, 653, 651, 658, 0, 0, 648, - 648, 654, 651, 649, 651, 652, 650, 653, 654, 657, - 649, 655, 656, 650, 653, 651, 658, 660, 655, 656, - - 659, 653, 651, 658, 657, 661, 0, 659, 654, 657, - 0, 0, 0, 664, 653, 662, 657, 660, 655, 656, - 659, 0, 716, 658, 660, 661, 664, 659, 665, 662, - 662, 657, 661, 664, 659, 662, 657, 666, 663, 666, - 664, 663, 662, 667, 660, 0, 0, 659, 665, 716, - 0, 718, 661, 664, 668, 665, 662, 662, 663, 666, - 664, 719, 662, 667, 666, 663, 666, 668, 663, 669, - 667, 670, 671, 672, 668, 665, 0, 672, 718, 670, - 0, 668, 669, 673, 720, 663, 666, 673, 719, 669, - 667, 670, 671, 0, 668, 674, 669, 672, 670, 671, - - 672, 668, 0, 674, 672, 676, 670, 673, 675, 669, - 673, 720, 0, 0, 673, 674, 669, 721, 670, 671, - 676, 675, 674, 677, 672, 676, 677, 0, 675, 678, - 674, 679, 676, 0, 673, 675, 0, 678, 0, 680, - 679, 680, 674, 681, 721, 682, 677, 676, 675, 678, - 677, 679, 676, 677, 684, 675, 678, 686, 679, 685, - 687, 680, 690, 681, 678, 682, 680, 679, 680, 685, - 681, 683, 682, 677, 684, 683, 678, 686, 679, 685, - 687, 684, 690, 688, 686, 689, 685, 687, 680, 690, - 681, 683, 682, 691, 723, 691, 685, 688, 683, 689, - - 0, 684, 683, 688, 686, 689, 685, 687, 692, 690, - 688, 693, 689, 697, 695, 691, 0, 692, 683, 694, - 691, 723, 691, 694, 688, 724, 689, 693, 692, 695, - 688, 693, 689, 697, 695, 692, 0, 696, 693, 696, - 697, 695, 691, 694, 692, 698, 694, 699, 698, 725, - 694, 701, 724, 700, 693, 692, 695, 696, 693, 702, - 697, 695, 703, 704, 696, 698, 696, 699, 726, 700, - 694, 701, 698, 700, 699, 698, 725, 727, 701, 702, - 700, 728, 703, 704, 696, 729, 702, 730, 731, 703, - 704, 732, 698, 735, 699, 726, 700, 736, 701, 738, - - 700, 740, 743, 744, 727, 745, 702, 746, 728, 703, - 704, 751, 729, 753, 730, 731, 754, 755, 732, 758, - 735, 759, 760, 761, 736, 762, 738, 764, 740, 743, - 744, 765, 745, 766, 746, 767, 768, 769, 751, 770, - 753, 771, 772, 754, 755, 773, 758, 774, 759, 760, - 761, 776, 762, 777, 764, 778, 780, 781, 765, 782, - 766, 784, 767, 768, 769, 785, 770, 787, 771, 772, - 786, 0, 773, 788, 774, 789, 790, 0, 776, 863, - 777, 784, 778, 780, 781, 785, 782, 787, 784, 793, - 786, 786, 785, 788, 787, 789, 790, 786, 791, 791, - - 788, 792, 789, 790, 793, 865, 863, 0, 784, 793, - 792, 866, 785, 795, 787, 796, 793, 786, 786, 791, - 788, 792, 789, 790, 794, 791, 791, 0, 792, 800, - 801, 793, 865, 795, 794, 796, 793, 792, 866, 797, - 795, 0, 796, 797, 794, 798, 791, 799, 792, 800, - 801, 794, 0, 867, 799, 798, 800, 801, 803, 797, - 795, 794, 796, 805, 802, 798, 797, 799, 802, 806, - 797, 794, 798, 803, 799, 0, 800, 801, 803, 804, - 867, 799, 798, 805, 802, 803, 797, 807, 804, 806, - 805, 802, 798, 808, 799, 802, 806, 810, 809, 804, - - 803, 810, 807, 812, 0, 803, 804, 807, 808, 0, - 805, 802, 809, 808, 807, 804, 806, 810, 809, 811, - 808, 811, 813, 812, 810, 809, 804, 869, 810, 807, - 812, 815, 814, 816, 807, 808, 818, 871, 815, 809, - 808, 811, 813, 0, 810, 809, 811, 814, 811, 813, - 812, 815, 814, 816, 869, 817, 818, 817, 815, 814, - 816, 819, 872, 818, 871, 815, 820, 821, 811, 813, - 822, 823, 0, 0, 814, 817, 819, 0, 815, 814, - 816, 819, 817, 818, 817, 822, 820, 821, 819, 872, - 822, 823, 0, 820, 821, 824, 826, 822, 823, 825, - - 827, 828, 817, 819, 829, 830, 825, 0, 819, 824, - 831, 0, 822, 820, 821, 824, 826, 822, 823, 825, - 827, 828, 824, 826, 829, 830, 825, 827, 828, 834, - 831, 829, 830, 825, 832, 835, 824, 831, 832, 836, - 837, 0, 824, 826, 834, 0, 825, 827, 828, 834, - 833, 829, 830, 833, 0, 835, 834, 831, 832, 836, - 837, 832, 835, 840, 0, 832, 836, 837, 838, 841, - 833, 834, 842, 841, 873, 0, 834, 833, 839, 0, - 833, 838, 835, 840, 854, 832, 836, 837, 838, 841, - 840, 839, 842, 845, 845, 838, 841, 833, 839, 842, - - 841, 873, 843, 844, 854, 839, 843, 844, 838, 0, - 840, 854, 875, 877, 845, 838, 841, 846, 839, 842, - 845, 845, 847, 847, 848, 839, 843, 844, 848, 843, - 844, 854, 846, 843, 844, 0, 855, 846, 849, 875, - 877, 845, 851, 847, 846, 0, 0, 850, 848, 847, - 847, 848, 849, 843, 844, 848, 855, 851, 849, 846, - 850, 881, 851, 855, 846, 849, 857, 850, 852, 851, - 847, 858, 852, 853, 850, 848, 859, 853, 860, 849, - 856, 856, 860, 855, 851, 849, 857, 850, 881, 851, - 859, 858, 852, 857, 850, 852, 859, 853, 858, 852, - - 853, 856, 860, 859, 853, 860, 861, 856, 856, 860, - 861, 862, 883, 857, 884, 890, 891, 859, 858, 852, - 894, 895, 897, 859, 853, 898, 899, 901, 856, 860, - 861, 862, 902, 861, 903, 907, 909, 861, 862, 883, - 910, 884, 890, 891, 911, 912, 917, 894, 895, 897, - 918, 0, 898, 899, 901, 919, 920, 861, 862, 902, - 921, 903, 907, 909, 922, 923, 924, 910, 926, 921, - 927, 911, 912, 917, 925, 919, 920, 918, 927, 923, - 921, 925, 919, 920, 922, 923, 924, 921, 926, 929, - 927, 922, 923, 924, 925, 926, 921, 927, 928, 930, - - 928, 925, 919, 920, 929, 927, 923, 921, 925, 929, - 932, 922, 923, 924, 934, 926, 929, 927, 935, 930, - 928, 925, 933, 936, 933, 928, 930, 928, 937, 931, - 932, 929, 931, 938, 934, 0, 929, 932, 935, 0, - 0, 934, 941, 936, 933, 935, 930, 928, 937, 933, - 936, 933, 931, 938, 939, 937, 931, 932, 940, 931, - 938, 934, 941, 939, 942, 935, 943, 944, 945, 941, - 936, 933, 947, 940, 939, 937, 0, 948, 940, 931, - 938, 939, 949, 946, 942, 940, 943, 944, 945, 941, - 939, 942, 947, 943, 944, 945, 946, 948, 0, 947, - - 940, 939, 949, 946, 948, 940, 952, 953, 951, 949, - 946, 942, 951, 943, 944, 945, 954, 955, 950, 947, - 956, 0, 953, 946, 948, 950, 952, 953, 0, 949, - 946, 960, 951, 952, 953, 951, 954, 955, 950, 951, - 956, 0, 959, 954, 955, 950, 957, 956, 957, 953, - 0, 960, 950, 952, 953, 958, 959, 958, 960, 951, - 961, 962, 959, 954, 955, 950, 964, 956, 957, 959, - 965, 969, 963, 957, 965, 957, 0, 958, 960, 963, - 961, 962, 958, 959, 958, 980, 964, 961, 962, 959, - 0, 969, 963, 964, 965, 957, 966, 965, 969, 963, - - 966, 965, 968, 967, 958, 967, 963, 961, 962, 0, - 981, 970, 980, 964, 971, 972, 0, 968, 969, 963, - 966, 965, 968, 966, 983, 967, 973, 966, 984, 968, - 967, 970, 967, 989, 971, 972, 974, 981, 970, 973, - 991, 971, 972, 974, 968, 992, 973, 966, 995, 968, - 996, 983, 967, 973, 999, 984, 974, 1000, 970, 1001, - 989, 971, 972, 974, 1002, 1005, 973, 991, 1006, 1007, - 974, 0, 992, 973, 1008, 995, 1011, 996, 1009, 1010, - 1011, 999, 1012, 974, 1000, 1005, 1001, 0, 1006, 1007, - 1013, 1002, 1005, 1014, 1008, 1006, 1007, 0, 1009, 1010, - - 1011, 1008, 1012, 1011, 1015, 1009, 1010, 1011, 1014, 1012, - 1013, 0, 1005, 1014, 1016, 1006, 1007, 1013, 1017, 1018, - 1014, 1008, 1020, 0, 1015, 1009, 1010, 1011, 1019, 1012, - 1019, 1015, 1022, 1023, 1016, 1014, 0, 1013, 1017, 1018, - 1014, 1016, 1020, 1021, 1024, 1017, 1018, 1025, 1026, 1020, - 1019, 1015, 1022, 1023, 1026, 1019, 1021, 1019, 1027, 1022, - 1023, 1016, 1025, 1021, 1024, 1017, 1018, 1025, 1026, 1020, - 1021, 1024, 1028, 1029, 1025, 1026, 1030, 1019, 1027, 1022, - 1023, 1026, 1031, 1021, 1030, 1027, 1029, 1032, 1033, 1025, - 1021, 1024, 1028, 1029, 1025, 1026, 1030, 1031, 1034, 1028, - - 1029, 1036, 1031, 1030, 1039, 1027, 1041, 1032, 1033, 1031, - 1044, 1030, 1045, 1029, 1032, 1033, 1046, 0, 1034, 1028, - 1029, 1048, 1061, 1030, 1031, 1034, 1050, 1049, 1036, 1031, - 1051, 1039, 1053, 1041, 1032, 1033, 1052, 1044, 1055, 1045, - 1056, 1048, 1049, 1046, 1057, 1034, 1050, 1049, 1048, 1061, - 1051, 1052, 1053, 1050, 1049, 0, 1052, 1051, 1055, 1053, - 1056, 1058, 1054, 1052, 1057, 1055, 1059, 1056, 1048, 1049, - 1059, 1057, 1058, 1050, 1049, 1054, 1060, 1051, 1052, 1053, - 1063, 1058, 1054, 1052, 1066, 1055, 1059, 1056, 1058, 1054, - 1067, 1057, 1068, 1059, 1075, 1070, 1060, 1059, 1071, 1058, - - 1069, 0, 1054, 1060, 1076, 0, 1072, 1063, 1058, 1054, - 1067, 1066, 1068, 1059, 1069, 1070, 1072, 1067, 1071, 1068, - 1069, 1075, 1070, 1060, 1076, 1071, 1072, 1069, 1077, 1078, - 1080, 1076, 0, 1072, 0, 0, 0, 1067, 1078, 1068, - 0, 1069, 1070, 1072, 0, 1071, 0, 1069, 1077, 1078, - 1080, 1076, 0, 1072, 0, 1077, 1078, 1080, 0, 0, - 0, 0, 0, 0, 0, 1078, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1077, 1078, 1080, 1082, 1082, - 1082, 1082, 1082, 1083, 0, 0, 1083, 1083, 1085, 1085, - 1085, 0, 1085, 1086, 0, 1086, 1086, 1086, 1087, 0, - - 1087, 1087, 1087, 1088, 0, 1088, 1088, 1088, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081 + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 9, 9, 10, 10, 15, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 15, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, + 18, 21, 22, 21, 24, 1122, 23, 30, 24, 21, + 1116, 21, 24, 23, 31, 21, 21, 44, 24, 99, + + 23, 24, 22, 23, 1115, 25, 1114, 25, 21, 22, + 21, 24, 25, 23, 30, 24, 21, 25, 21, 24, + 23, 31, 21, 21, 44, 24, 99, 23, 24, 22, + 23, 27, 25, 28, 25, 1113, 32, 27, 1112, 25, + 32, 28, 29, 42, 25, 26, 32, 28, 29, 29, + 29, 42, 1111, 26, 1110, 29, 26, 1109, 27, 26, + 28, 1108, 26, 32, 27, 26, 1107, 32, 28, 29, + 42, 1106, 26, 32, 28, 29, 29, 29, 42, 34, + 26, 33, 29, 26, 36, 33, 26, 43, 43, 26, + 35, 33, 26, 34, 1105, 36, 49, 49, 35, 34, + + 34, 36, 35, 38, 1104, 35, 34, 38, 33, 50, + 50, 36, 33, 38, 43, 43, 1103, 35, 33, 41, + 34, 41, 36, 100, 41, 35, 34, 34, 36, 35, + 38, 39, 35, 39, 38, 103, 39, 71, 55, 104, + 38, 58, 58, 39, 39, 1102, 41, 1101, 41, 55, + 100, 41, 86, 86, 67, 70, 108, 71, 39, 1099, + 39, 67, 103, 39, 71, 70, 104, 67, 111, 101, + 39, 39, 40, 111, 67, 70, 40, 101, 107, 40, + 40, 67, 70, 108, 71, 107, 40, 114, 67, 40, + 181, 181, 70, 1097, 67, 111, 101, 1093, 1089, 40, + + 111, 67, 70, 40, 101, 107, 40, 40, 1082, 1075, + 1061, 1047, 107, 40, 114, 1016, 40, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 61, 61, + 985, 61, 61, 61, 61, 61, 61, 77, 68, 84, + 928, 871, 68, 791, 711, 115, 68, 61, 61, 61, + 72, 116, 68, 61, 72, 61, 117, 77, 118, 84, + 72, 61, 68, 61, 77, 68, 84, 61, 61, 68, + 72, 83, 115, 68, 83, 83, 604, 72, 116, 68, + 61, 72, 61, 117, 77, 118, 84, 72, 61, 68, + + 61, 83, 120, 497, 61, 61, 386, 72, 83, 274, + 185, 83, 83, 61, 62, 62, 183, 62, 62, 62, + 62, 62, 62, 90, 88, 85, 73, 76, 83, 120, + 73, 76, 60, 62, 62, 62, 73, 110, 76, 78, + 62, 81, 102, 78, 76, 102, 73, 110, 121, 78, + 81, 76, 81, 73, 76, 81, 122, 73, 76, 78, + 62, 81, 59, 73, 110, 76, 78, 62, 81, 102, + 78, 76, 102, 73, 110, 121, 78, 81, 76, 81, + 52, 51, 81, 122, 105, 105, 78, 62, 81, 62, + 63, 123, 82, 124, 63, 125, 82, 63, 105, 126, + + 82, 109, 109, 109, 63, 109, 47, 63, 113, 113, + 127, 105, 105, 129, 63, 45, 82, 63, 123, 82, + 124, 63, 125, 82, 63, 105, 126, 82, 109, 109, + 109, 63, 109, 112, 63, 113, 113, 127, 112, 20, + 129, 63, 64, 82, 112, 19, 64, 130, 132, 128, + 64, 112, 128, 133, 135, 119, 64, 119, 136, 64, + 112, 119, 137, 11, 138, 112, 64, 7, 119, 64, + 141, 112, 119, 64, 130, 132, 128, 64, 112, 128, + 133, 135, 119, 64, 119, 136, 64, 4, 119, 137, + 134, 138, 142, 64, 65, 119, 139, 141, 139, 119, + + 134, 65, 143, 65, 144, 134, 134, 140, 65, 140, + 145, 146, 147, 65, 65, 3, 148, 134, 150, 142, + 140, 65, 151, 139, 152, 139, 0, 134, 65, 143, + 65, 144, 134, 134, 140, 65, 140, 145, 146, 147, + 65, 65, 66, 148, 153, 150, 66, 140, 154, 151, + 66, 152, 154, 66, 156, 155, 66, 157, 158, 66, + 155, 159, 66, 160, 161, 162, 66, 0, 0, 66, + 159, 153, 163, 66, 0, 154, 0, 66, 159, 154, + 66, 156, 155, 66, 157, 158, 66, 155, 159, 66, + 160, 161, 162, 66, 69, 69, 164, 159, 165, 163, + + 166, 69, 69, 69, 167, 159, 168, 164, 69, 169, + 170, 171, 169, 174, 69, 0, 175, 0, 172, 0, + 176, 69, 69, 164, 172, 165, 168, 166, 69, 69, + 69, 167, 193, 168, 164, 69, 169, 170, 171, 169, + 174, 69, 74, 175, 173, 172, 74, 176, 277, 194, + 194, 172, 193, 168, 0, 279, 74, 173, 0, 193, + 280, 282, 74, 74, 284, 0, 74, 0, 0, 74, + 194, 173, 0, 74, 0, 277, 194, 194, 0, 193, + 0, 195, 279, 74, 173, 196, 198, 280, 282, 74, + 74, 284, 196, 74, 75, 75, 195, 194, 201, 198, + + 196, 195, 199, 75, 199, 196, 198, 75, 195, 285, + 75, 0, 196, 198, 75, 0, 286, 0, 201, 196, + 0, 75, 75, 195, 199, 201, 198, 196, 195, 199, + 75, 199, 196, 198, 75, 197, 285, 75, 197, 197, + 287, 75, 79, 286, 79, 201, 289, 79, 200, 200, + 200, 199, 290, 291, 79, 79, 0, 0, 0, 197, + 0, 0, 197, 200, 79, 197, 197, 287, 200, 79, + 292, 79, 0, 289, 79, 200, 200, 200, 215, 290, + 291, 79, 79, 205, 203, 215, 197, 202, 203, 0, + 200, 79, 80, 205, 202, 200, 80, 292, 215, 80, + + 80, 202, 293, 205, 294, 215, 80, 202, 203, 80, + 205, 203, 215, 295, 202, 203, 80, 0, 0, 80, + 205, 202, 0, 80, 0, 215, 80, 80, 202, 293, + 205, 294, 0, 80, 202, 203, 80, 0, 0, 0, + 295, 0, 0, 80, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, + + 188, 188, 188, 188, 188, 188, 204, 206, 296, 209, + 208, 210, 298, 204, 204, 204, 0, 204, 0, 299, + 0, 210, 206, 208, 208, 209, 204, 206, 0, 209, + 208, 210, 0, 204, 206, 296, 209, 208, 210, 298, + 204, 204, 204, 213, 204, 213, 299, 211, 210, 206, + 208, 208, 209, 204, 206, 207, 209, 208, 210, 207, + 207, 211, 212, 212, 0, 213, 207, 211, 0, 0, + 213, 216, 213, 207, 211, 217, 301, 302, 216, 207, + 0, 303, 207, 212, 0, 217, 207, 207, 211, 212, + 212, 216, 213, 207, 211, 217, 218, 0, 216, 304, + + 207, 0, 217, 301, 302, 216, 207, 220, 303, 218, + 212, 214, 217, 214, 220, 219, 218, 214, 216, 221, + 0, 0, 217, 218, 214, 219, 304, 220, 214, 221, + 0, 0, 0, 214, 220, 219, 218, 222, 214, 221, + 214, 220, 219, 218, 214, 225, 221, 222, 226, 224, + 305, 214, 219, 223, 220, 214, 221, 222, 224, 227, + 214, 225, 219, 227, 222, 225, 221, 223, 226, 224, + 223, 228, 225, 223, 222, 226, 224, 305, 306, 227, + 223, 308, 228, 0, 222, 224, 227, 309, 225, 0, + 227, 228, 225, 0, 223, 226, 224, 223, 228, 310, + + 223, 230, 0, 232, 0, 306, 227, 0, 308, 228, + 230, 231, 0, 0, 309, 231, 233, 233, 228, 229, + 229, 230, 0, 232, 311, 0, 310, 312, 230, 229, + 232, 231, 236, 234, 229, 229, 233, 230, 231, 234, + 229, 234, 231, 233, 233, 236, 229, 229, 230, 300, + 232, 311, 236, 234, 312, 0, 229, 0, 231, 236, + 234, 229, 229, 233, 300, 237, 234, 229, 234, 235, + 313, 235, 236, 235, 237, 238, 300, 314, 0, 236, + 234, 0, 235, 0, 238, 237, 244, 241, 239, 315, + 240, 300, 237, 235, 241, 238, 235, 313, 235, 0, + + 235, 237, 238, 239, 314, 240, 244, 241, 239, 235, + 240, 238, 237, 244, 241, 239, 315, 240, 247, 242, + 235, 241, 238, 242, 243, 243, 245, 245, 0, 255, + 239, 247, 240, 244, 241, 239, 0, 240, 247, 255, + 246, 316, 0, 242, 243, 247, 242, 245, 0, 255, + 242, 243, 243, 245, 245, 246, 255, 248, 247, 249, + 246, 248, 0, 249, 0, 247, 255, 246, 316, 250, + 242, 243, 317, 251, 245, 251, 255, 253, 250, 249, + 253, 248, 246, 250, 248, 0, 249, 246, 248, 250, + 249, 252, 254, 251, 254, 318, 250, 253, 252, 317, + + 251, 254, 251, 319, 253, 250, 249, 253, 248, 254, + 250, 252, 258, 256, 254, 258, 250, 320, 252, 254, + 251, 254, 318, 257, 253, 252, 256, 257, 254, 259, + 319, 260, 262, 256, 321, 258, 254, 259, 252, 258, + 256, 254, 258, 262, 320, 265, 265, 257, 259, 259, + 257, 260, 262, 256, 257, 0, 259, 261, 260, 262, + 256, 321, 258, 263, 259, 261, 265, 263, 322, 323, + 262, 0, 265, 265, 257, 259, 259, 261, 260, 262, + 269, 264, 266, 263, 261, 264, 266, 263, 264, 0, + 263, 0, 261, 265, 263, 322, 323, 0, 267, 0, + + 269, 264, 266, 268, 261, 267, 270, 269, 264, 266, + 263, 267, 264, 266, 263, 264, 268, 0, 267, 324, + 271, 270, 325, 268, 271, 267, 270, 269, 264, 266, + 268, 0, 267, 270, 0, 0, 0, 0, 267, 0, + 326, 327, 328, 268, 271, 267, 324, 271, 270, 325, + 268, 271, 329, 270, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 288, 330, 288, 326, 327, 328, + 331, 271, 332, 333, 335, 336, 337, 338, 339, 329, + 331, 288, 340, 341, 342, 343, 344, 346, 347, 348, + 349, 288, 330, 288, 350, 351, 352, 331, 353, 332, + + 333, 335, 336, 337, 338, 339, 354, 331, 288, 340, + 341, 342, 343, 344, 346, 347, 348, 349, 355, 356, + 357, 350, 351, 352, 358, 353, 359, 360, 361, 363, + 364, 365, 366, 354, 367, 368, 369, 370, 372, 373, + 374, 375, 374, 376, 377, 355, 356, 357, 373, 378, + 379, 358, 380, 359, 360, 361, 363, 364, 365, 366, + 381, 367, 368, 369, 370, 372, 373, 374, 375, 374, + 376, 377, 383, 384, 382, 373, 378, 379, 382, 380, + 0, 0, 388, 389, 390, 0, 391, 381, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 393, 383, + + 384, 382, 388, 389, 390, 382, 391, 392, 394, 388, + 389, 390, 394, 391, 392, 0, 395, 0, 393, 0, + 397, 0, 0, 498, 397, 393, 398, 392, 396, 388, + 389, 390, 394, 391, 392, 394, 395, 0, 396, 394, + 397, 392, 399, 395, 398, 393, 398, 397, 396, 399, + 498, 397, 402, 398, 392, 396, 0, 401, 405, 394, + 408, 0, 399, 395, 400, 396, 400, 397, 402, 399, + 401, 398, 402, 398, 403, 396, 399, 401, 405, 402, + 408, 400, 403, 404, 401, 405, 400, 408, 406, 399, + 0, 400, 406, 400, 403, 402, 409, 401, 404, 402, + + 407, 403, 411, 404, 401, 405, 411, 408, 400, 403, + 404, 410, 406, 400, 407, 406, 409, 412, 410, 406, + 407, 403, 414, 409, 0, 404, 411, 407, 0, 411, + 404, 410, 412, 411, 413, 415, 413, 412, 410, 406, + 418, 407, 414, 409, 412, 410, 417, 407, 416, 414, + 415, 416, 419, 411, 499, 415, 413, 417, 410, 412, + 418, 413, 415, 413, 412, 421, 417, 418, 500, 414, + 420, 416, 419, 417, 420, 416, 423, 415, 416, 419, + 0, 499, 415, 413, 417, 421, 422, 418, 422, 425, + 423, 426, 421, 417, 420, 500, 423, 420, 416, 419, + + 424, 420, 425, 423, 427, 426, 428, 424, 422, 425, + 428, 426, 421, 422, 0, 422, 425, 423, 426, 431, + 424, 420, 0, 423, 427, 501, 431, 424, 502, 425, + 428, 427, 426, 428, 424, 422, 425, 428, 426, 431, + 429, 430, 432, 433, 0, 432, 431, 424, 429, 430, + 0, 427, 501, 431, 503, 502, 0, 428, 435, 433, + 429, 430, 435, 433, 0, 432, 431, 429, 430, 432, + 433, 434, 432, 0, 434, 429, 430, 438, 435, 436, + 437, 503, 504, 438, 0, 435, 433, 429, 430, 435, + 433, 434, 432, 437, 436, 0, 440, 438, 434, 436, + + 437, 434, 439, 0, 438, 435, 436, 437, 441, 504, + 438, 442, 439, 0, 506, 0, 440, 444, 434, 510, + 437, 436, 439, 440, 438, 445, 436, 437, 441, 439, + 443, 442, 511, 444, 445, 441, 446, 444, 442, 439, + 443, 506, 448, 440, 444, 445, 510, 0, 0, 439, + 443, 447, 445, 0, 0, 441, 446, 443, 442, 511, + 444, 445, 448, 446, 444, 512, 447, 443, 0, 448, + 449, 447, 445, 0, 449, 450, 450, 443, 447, 452, + 451, 452, 0, 446, 451, 453, 0, 453, 0, 448, + 449, 514, 512, 447, 0, 455, 450, 449, 447, 452, + + 454, 449, 450, 450, 451, 453, 452, 451, 452, 456, + 455, 451, 453, 457, 453, 455, 454, 449, 514, 461, + 454, 458, 455, 450, 0, 456, 452, 454, 458, 456, + 460, 451, 453, 457, 462, 0, 456, 455, 459, 461, + 457, 458, 455, 454, 460, 463, 461, 454, 458, 463, + 460, 459, 456, 464, 462, 458, 456, 460, 459, 465, + 457, 462, 464, 515, 516, 459, 461, 466, 458, 463, + 465, 460, 463, 464, 0, 466, 463, 460, 459, 465, + 464, 462, 0, 468, 467, 459, 465, 466, 467, 464, + 515, 516, 469, 471, 466, 469, 463, 465, 468, 0, + + 464, 473, 466, 468, 474, 0, 465, 472, 467, 470, + 468, 467, 469, 471, 466, 467, 470, 472, 476, 469, + 471, 473, 469, 0, 474, 468, 477, 472, 473, 470, + 468, 474, 475, 476, 472, 467, 470, 482, 476, 469, + 471, 477, 478, 470, 472, 476, 477, 479, 473, 478, + 475, 474, 475, 477, 472, 480, 470, 482, 479, 475, + 476, 483, 478, 481, 482, 476, 517, 479, 477, 478, + 480, 484, 481, 477, 479, 480, 478, 475, 518, 475, + 484, 483, 480, 481, 482, 479, 485, 0, 483, 478, + 481, 484, 519, 517, 479, 485, 488, 480, 484, 481, + + 488, 487, 480, 0, 486, 518, 485, 484, 483, 490, + 481, 487, 520, 485, 486, 493, 486, 489, 484, 519, + 488, 487, 485, 488, 486, 490, 489, 488, 487, 490, + 493, 486, 491, 485, 491, 493, 490, 489, 487, 520, + 492, 486, 493, 486, 489, 0, 521, 488, 487, 0, + 522, 486, 490, 489, 491, 496, 490, 493, 492, 491, + 492, 491, 493, 494, 489, 523, 495, 492, 496, 495, + 524, 527, 494, 521, 528, 496, 494, 522, 529, 530, + 531, 491, 496, 494, 532, 492, 495, 492, 533, 535, + 494, 536, 523, 495, 539, 496, 495, 524, 527, 494, + + 540, 528, 496, 494, 542, 529, 530, 531, 545, 546, + 494, 532, 547, 495, 548, 533, 535, 549, 536, 550, + 552, 539, 556, 558, 560, 561, 561, 540, 562, 563, + 550, 542, 565, 566, 567, 545, 546, 568, 569, 547, + 571, 548, 572, 573, 549, 574, 550, 552, 575, 556, + 558, 560, 561, 561, 576, 562, 563, 550, 577, 565, + 566, 567, 578, 579, 568, 569, 581, 571, 582, 572, + 573, 583, 574, 584, 587, 575, 588, 590, 591, 592, + 593, 576, 594, 595, 596, 577, 597, 599, 601, 578, + 579, 0, 0, 581, 0, 582, 607, 608, 583, 605, + + 584, 587, 0, 588, 590, 591, 592, 593, 606, 594, + 595, 596, 605, 597, 599, 601, 607, 608, 609, 605, + 610, 606, 611, 607, 608, 0, 605, 0, 606, 610, + 612, 609, 614, 615, 0, 606, 0, 613, 609, 605, + 610, 613, 611, 607, 608, 609, 605, 610, 606, 611, + 612, 616, 614, 615, 617, 606, 610, 612, 609, 614, + 615, 613, 617, 619, 613, 609, 618, 610, 613, 611, + 618, 616, 620, 0, 617, 0, 619, 612, 616, 614, + 615, 617, 622, 619, 0, 621, 618, 624, 613, 617, + 619, 623, 620, 618, 624, 0, 622, 618, 616, 620, + + 621, 617, 622, 619, 625, 621, 623, 624, 0, 622, + 619, 623, 621, 618, 624, 626, 714, 716, 623, 620, + 625, 624, 627, 622, 625, 0, 627, 621, 628, 622, + 626, 625, 621, 623, 624, 626, 630, 629, 623, 629, + 630, 628, 626, 714, 716, 631, 627, 625, 628, 627, + 632, 625, 631, 627, 633, 628, 630, 626, 634, 629, + 635, 0, 626, 630, 629, 631, 629, 630, 628, 634, + 632, 635, 631, 627, 633, 628, 0, 632, 634, 631, + 635, 633, 640, 630, 636, 634, 629, 635, 637, 638, + 639, 0, 631, 638, 639, 0, 634, 632, 635, 641, + + 636, 633, 640, 637, 636, 634, 0, 635, 637, 640, + 718, 636, 644, 638, 639, 637, 638, 639, 642, 641, + 638, 639, 645, 719, 643, 0, 641, 636, 643, 640, + 637, 636, 644, 642, 648, 637, 0, 718, 642, 644, + 638, 639, 645, 646, 649, 642, 641, 646, 643, 645, + 719, 643, 647, 649, 648, 643, 650, 651, 652, 644, + 642, 648, 0, 647, 649, 642, 0, 646, 654, 645, + 646, 649, 647, 653, 646, 643, 650, 651, 652, 647, + 649, 648, 0, 650, 651, 652, 653, 654, 654, 655, + 647, 649, 0, 653, 646, 654, 0, 656, 658, 647, + + 653, 0, 655, 650, 651, 652, 657, 660, 657, 655, + 656, 661, 662, 653, 654, 654, 655, 656, 658, 657, + 653, 659, 720, 664, 656, 658, 657, 660, 659, 655, + 0, 661, 662, 657, 660, 657, 655, 656, 661, 662, + 665, 659, 663, 664, 656, 658, 657, 665, 659, 720, + 664, 666, 667, 657, 660, 659, 0, 663, 661, 662, + 665, 668, 663, 669, 0, 671, 669, 665, 659, 663, + 664, 666, 667, 0, 665, 668, 668, 0, 666, 667, + 673, 668, 0, 669, 663, 671, 721, 665, 668, 663, + 669, 670, 671, 669, 672, 0, 672, 676, 666, 667, + + 673, 722, 668, 668, 670, 676, 674, 673, 668, 675, + 669, 670, 671, 721, 677, 723, 672, 676, 670, 674, + 0, 672, 675, 672, 676, 725, 674, 673, 722, 675, + 0, 670, 676, 674, 677, 678, 675, 680, 670, 678, + 682, 677, 723, 672, 676, 680, 674, 679, 726, 675, + 681, 679, 725, 674, 0, 682, 675, 680, 0, 678, + 682, 677, 678, 681, 680, 683, 678, 682, 683, 0, + 681, 679, 680, 684, 679, 726, 685, 681, 679, 687, + 0, 684, 682, 0, 680, 685, 678, 682, 683, 686, + 681, 686, 683, 684, 688, 683, 685, 681, 679, 687, + + 684, 0, 690, 685, 692, 689, 687, 691, 684, 689, + 693, 686, 685, 727, 688, 683, 686, 691, 686, 694, + 684, 688, 690, 685, 692, 689, 687, 691, 695, 690, + 693, 692, 689, 694, 691, 0, 689, 693, 686, 694, + 727, 688, 695, 696, 691, 697, 694, 697, 695, 690, + 0, 692, 689, 698, 691, 695, 701, 693, 0, 703, + 694, 699, 698, 696, 0, 704, 694, 697, 704, 695, + 696, 701, 697, 698, 697, 695, 701, 699, 700, 703, + 698, 699, 700, 701, 0, 704, 703, 705, 699, 698, + 696, 702, 704, 702, 697, 704, 707, 706, 701, 708, + + 698, 709, 700, 701, 699, 700, 703, 705, 699, 700, + 710, 702, 704, 706, 705, 728, 707, 706, 702, 708, + 702, 709, 730, 707, 706, 731, 708, 732, 709, 700, + 710, 733, 734, 735, 705, 736, 737, 710, 702, 738, + 706, 739, 728, 707, 706, 742, 708, 743, 709, 730, + 745, 747, 731, 750, 732, 751, 752, 710, 733, 734, + 735, 753, 736, 737, 758, 760, 738, 761, 739, 762, + 765, 766, 742, 767, 743, 768, 769, 745, 747, 771, + 750, 772, 751, 752, 773, 774, 775, 776, 753, 777, + 778, 758, 760, 779, 761, 780, 762, 765, 766, 781, + + 767, 783, 768, 769, 784, 785, 771, 787, 772, 788, + 789, 773, 774, 775, 776, 792, 777, 778, 793, 794, + 779, 795, 780, 796, 797, 0, 781, 798, 783, 872, + 0, 784, 785, 874, 787, 792, 788, 789, 793, 794, + 794, 795, 792, 796, 797, 793, 794, 798, 795, 800, + 796, 797, 799, 799, 798, 803, 872, 801, 800, 875, + 874, 0, 792, 804, 0, 793, 794, 794, 795, 800, + 796, 797, 801, 799, 798, 803, 800, 801, 802, 799, + 799, 0, 803, 804, 801, 800, 875, 805, 802, 808, + 804, 805, 809, 806, 0, 0, 800, 876, 802, 801, + + 799, 807, 803, 806, 801, 802, 878, 805, 807, 808, + 804, 0, 809, 806, 805, 802, 808, 811, 805, 809, + 806, 807, 810, 813, 876, 802, 810, 880, 807, 881, + 806, 0, 811, 878, 805, 807, 808, 811, 812, 809, + 806, 814, 810, 813, 811, 0, 0, 812, 807, 810, + 813, 815, 816, 810, 880, 0, 881, 882, 812, 811, + 820, 814, 817, 821, 811, 812, 815, 816, 814, 810, + 813, 815, 816, 819, 812, 819, 817, 818, 815, 816, + 820, 818, 817, 821, 882, 812, 822, 820, 814, 817, + 821, 824, 884, 815, 816, 819, 886, 818, 815, 816, + + 819, 822, 819, 817, 818, 823, 822, 820, 818, 817, + 821, 824, 823, 822, 825, 826, 825, 0, 824, 884, + 828, 890, 819, 886, 818, 823, 829, 0, 822, 827, + 830, 831, 823, 822, 825, 826, 0, 0, 824, 823, + 828, 825, 826, 825, 827, 830, 829, 828, 890, 827, + 830, 831, 823, 829, 832, 834, 827, 830, 831, 833, + 835, 825, 826, 836, 837, 838, 833, 828, 832, 839, + 0, 827, 830, 829, 832, 834, 827, 830, 831, 833, + 835, 832, 834, 836, 837, 838, 833, 835, 842, 839, + 836, 837, 838, 833, 840, 832, 839, 841, 840, 843, + + 841, 832, 834, 842, 0, 892, 833, 835, 842, 844, + 836, 837, 838, 845, 0, 842, 839, 841, 840, 843, + 0, 840, 848, 893, 841, 840, 843, 841, 846, 844, + 842, 850, 892, 845, 847, 842, 844, 0, 0, 849, + 845, 846, 848, 849, 841, 840, 843, 847, 846, 848, + 893, 850, 899, 851, 847, 846, 844, 851, 850, 849, + 845, 847, 900, 852, 853, 853, 849, 852, 846, 848, + 849, 903, 0, 854, 847, 846, 0, 851, 850, 899, + 851, 847, 855, 855, 851, 853, 849, 852, 854, 900, + 852, 853, 853, 854, 852, 856, 0, 857, 903, 856, + + 854, 859, 0, 855, 851, 858, 0, 904, 0, 855, + 855, 857, 853, 906, 852, 854, 859, 857, 858, 856, + 854, 859, 856, 860, 857, 858, 856, 860, 859, 861, + 855, 862, 858, 861, 904, 863, 864, 864, 857, 865, + 906, 866, 0, 859, 857, 858, 856, 860, 859, 907, + 860, 862, 858, 861, 860, 863, 861, 864, 862, 865, + 861, 866, 863, 864, 864, 867, 865, 868, 866, 869, + 870, 868, 908, 869, 860, 910, 907, 911, 862, 867, + 861, 912, 863, 916, 864, 867, 865, 918, 866, 919, + 870, 868, 867, 869, 868, 920, 869, 870, 868, 908, + + 869, 921, 910, 926, 911, 927, 867, 929, 912, 930, + 916, 932, 867, 991, 918, 931, 919, 870, 868, 933, + 869, 934, 920, 936, 931, 992, 0, 929, 921, 930, + 926, 932, 927, 933, 929, 931, 930, 935, 932, 933, + 991, 934, 931, 936, 935, 937, 933, 938, 934, 938, + 936, 931, 992, 937, 929, 940, 930, 935, 932, 942, + 933, 0, 931, 939, 935, 937, 933, 994, 934, 938, + 936, 935, 937, 944, 938, 940, 938, 945, 939, 942, + 937, 0, 940, 939, 935, 941, 942, 943, 941, 943, + 939, 946, 937, 944, 994, 0, 938, 945, 0, 947, + + 944, 948, 940, 951, 945, 939, 942, 952, 941, 943, + 939, 946, 941, 949, 943, 941, 943, 950, 946, 947, + 944, 948, 949, 951, 945, 953, 947, 952, 948, 995, + 951, 954, 950, 949, 952, 941, 943, 950, 946, 0, + 949, 955, 956, 957, 950, 953, 947, 958, 948, 949, + 951, 954, 953, 959, 952, 956, 995, 962, 954, 950, + 949, 955, 956, 957, 950, 964, 963, 958, 955, 956, + 957, 961, 953, 959, 958, 961, 960, 962, 954, 965, + 959, 963, 956, 960, 962, 964, 963, 966, 955, 956, + 957, 1000, 964, 963, 958, 961, 960, 1002, 961, 965, + + 959, 970, 961, 960, 962, 969, 965, 966, 963, 967, + 960, 967, 964, 963, 966, 968, 0, 968, 1000, 969, + 971, 970, 961, 960, 1002, 969, 965, 0, 970, 972, + 1003, 967, 969, 974, 966, 975, 967, 968, 967, 975, + 971, 976, 968, 973, 968, 976, 969, 971, 970, 972, + 973, 1006, 969, 974, 979, 980, 972, 1003, 967, 975, + 974, 0, 975, 973, 968, 976, 975, 971, 976, 977, + 973, 977, 976, 978, 979, 980, 972, 973, 1006, 981, + 974, 979, 980, 982, 983, 1007, 975, 984, 978, 1010, + 973, 977, 976, 978, 984, 1011, 977, 983, 977, 981, + + 978, 979, 980, 982, 983, 1012, 981, 984, 1013, 1017, + 982, 983, 1007, 1018, 984, 978, 1010, 1019, 977, 1020, + 978, 984, 1011, 1021, 983, 1022, 981, 1024, 1025, 1017, + 982, 983, 1012, 1018, 984, 1013, 1017, 1019, 1023, 1020, + 1018, 0, 1023, 1021, 1019, 1022, 1020, 1024, 1025, 1049, + 1021, 1027, 1022, 1026, 1024, 1025, 1017, 1028, 0, 1029, + 1018, 1030, 1023, 1052, 1019, 1023, 1020, 1032, 1026, 1023, + 1021, 1027, 1022, 1026, 1024, 1025, 1049, 1028, 1027, 1029, + 1026, 1030, 0, 1031, 1028, 1031, 1029, 1032, 1030, 1023, + 1052, 1034, 0, 1035, 1032, 1026, 1033, 1036, 1027, 1039, + + 1026, 1054, 1057, 1058, 1028, 1031, 1029, 1037, 1030, 1033, + 1031, 1034, 1031, 1035, 1032, 1038, 1033, 1036, 1034, 1039, + 1035, 1038, 1037, 1033, 1036, 1040, 1039, 1037, 1054, 1057, + 1058, 1042, 1031, 1044, 1037, 1038, 1033, 1041, 1034, 1042, + 1035, 1043, 1038, 1033, 1036, 1040, 1039, 1045, 1038, 1037, + 1041, 1042, 1040, 1044, 1037, 1046, 1043, 1041, 1042, 1059, + 1044, 1043, 1038, 0, 1041, 1062, 1042, 1045, 1043, 0, + 1064, 1076, 1040, 1065, 1045, 1046, 1063, 1041, 1042, 1067, + 1044, 0, 1046, 1043, 1041, 1062, 1059, 1069, 1043, 1066, + 1064, 1063, 1062, 1065, 1045, 1068, 1063, 1064, 1076, 1067, + + 1065, 1070, 1046, 1063, 1066, 1071, 1067, 1069, 1068, 1066, + 0, 1078, 1062, 1072, 1069, 1068, 1066, 1064, 1063, 1074, + 1065, 1070, 1068, 1063, 1072, 1071, 1067, 1081, 1070, 1083, + 0, 1066, 1071, 1072, 1069, 1068, 1066, 1073, 1078, 1074, + 1072, 1073, 1068, 1084, 0, 1085, 1074, 1086, 1070, 1083, + 1092, 1072, 1071, 1087, 1081, 1094, 1083, 1073, 1095, 1085, + 1072, 1088, 0, 1084, 1073, 1085, 1074, 1086, 1073, 0, + 1084, 1088, 1085, 1087, 1086, 1094, 1083, 1092, 1095, 1100, + 1087, 1088, 1094, 0, 1073, 1095, 1085, 1096, 1088, 0, + 1084, 0, 1085, 0, 1086, 0, 1096, 0, 1088, 1100, + + 1087, 0, 1094, 0, 0, 1095, 1100, 1096, 1088, 0, + 0, 0, 0, 0, 1096, 0, 0, 0, 0, 0, + 0, 0, 0, 1096, 0, 0, 1100, 0, 0, 0, + 0, 0, 0, 0, 1096, 1120, 1120, 1120, 1120, 1120, + 1121, 0, 0, 1121, 1121, 1123, 1123, 1123, 0, 1123, + 1124, 0, 1124, 1124, 1124, 1125, 0, 1125, 1125, 1125, + 1126, 0, 1126, 1126, 1126, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 1119 } ; /* The intent behind this definition is that it'll catch @@ -1984,6 +2037,7 @@ static const flex_int16_t yy_chk[4377] = #include "../sql/Expr.h" #include "bison_parser.h" +#include #include #include @@ -1991,7 +2045,7 @@ static const flex_int16_t yy_chk[4377] = static thread_local std::stringstream strbuf; -#line 1994 "flex_lexer.cpp" +#line 2048 "flex_lexer.cpp" /*************************** ** Section 2: Rules @@ -2005,7 +2059,7 @@ static thread_local std::stringstream strbuf; /*************************** ** Section 3: Rules ***************************/ -#line 2008 "flex_lexer.cpp" +#line 2062 "flex_lexer.cpp" #define INITIAL 0 #define singlequotedstring 1 @@ -2289,10 +2343,10 @@ YY_DECL } { -#line 56 "flex_lexer.l" +#line 57 "flex_lexer.l" -#line 2295 "flex_lexer.cpp" +#line 2349 "flex_lexer.cpp" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2319,13 +2373,13 @@ YY_DECL while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1082 ) + if ( yy_current_state >= 1120 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1081 ); + while ( yy_current_state != 1119 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -2347,813 +2401,831 @@ YY_DECL case 1: YY_RULE_SETUP -#line 58 "flex_lexer.l" +#line 59 "flex_lexer.l" BEGIN(COMMENT); YY_BREAK case 2: YY_RULE_SETUP -#line 59 "flex_lexer.l" +#line 60 "flex_lexer.l" /* skipping comment content until a end of line is read */; YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP -#line 60 "flex_lexer.l" +#line 61 "flex_lexer.l" BEGIN(INITIAL); YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 62 "flex_lexer.l" +#line 63 "flex_lexer.l" /* skip whitespace */; YY_BREAK case 5: YY_RULE_SETUP -#line 64 "flex_lexer.l" +#line 65 "flex_lexer.l" TOKEN(DEALLOCATE) YY_BREAK case 6: YY_RULE_SETUP -#line 65 "flex_lexer.l" +#line 66 "flex_lexer.l" TOKEN(PARAMETERS) YY_BREAK case 7: YY_RULE_SETUP -#line 66 "flex_lexer.l" +#line 67 "flex_lexer.l" TOKEN(INTERSECT) YY_BREAK case 8: YY_RULE_SETUP -#line 67 "flex_lexer.l" +#line 68 "flex_lexer.l" TOKEN(TEMPORARY) YY_BREAK case 9: YY_RULE_SETUP -#line 68 "flex_lexer.l" +#line 69 "flex_lexer.l" TOKEN(TIMESTAMP) YY_BREAK case 10: YY_RULE_SETUP -#line 69 "flex_lexer.l" +#line 70 "flex_lexer.l" TOKEN(DESCRIBE) YY_BREAK case 11: YY_RULE_SETUP -#line 70 "flex_lexer.l" +#line 71 "flex_lexer.l" TOKEN(DISTINCT) YY_BREAK case 12: YY_RULE_SETUP -#line 71 "flex_lexer.l" +#line 72 "flex_lexer.l" TOKEN(NVARCHAR) YY_BREAK case 13: YY_RULE_SETUP -#line 72 "flex_lexer.l" +#line 73 "flex_lexer.l" TOKEN(RESTRICT) YY_BREAK case 14: YY_RULE_SETUP -#line 73 "flex_lexer.l" +#line 74 "flex_lexer.l" TOKEN(TRUNCATE) YY_BREAK case 15: YY_RULE_SETUP -#line 74 "flex_lexer.l" +#line 75 "flex_lexer.l" TOKEN(ANALYZE) YY_BREAK case 16: YY_RULE_SETUP -#line 75 "flex_lexer.l" +#line 76 "flex_lexer.l" TOKEN(BETWEEN) YY_BREAK case 17: YY_RULE_SETUP -#line 76 "flex_lexer.l" +#line 77 "flex_lexer.l" TOKEN(CASCADE) YY_BREAK case 18: YY_RULE_SETUP -#line 77 "flex_lexer.l" +#line 78 "flex_lexer.l" TOKEN(COLUMNS) YY_BREAK case 19: YY_RULE_SETUP -#line 78 "flex_lexer.l" +#line 79 "flex_lexer.l" TOKEN(CONTROL) YY_BREAK case 20: YY_RULE_SETUP -#line 79 "flex_lexer.l" +#line 80 "flex_lexer.l" TOKEN(DEFAULT) YY_BREAK case 21: YY_RULE_SETUP -#line 80 "flex_lexer.l" +#line 81 "flex_lexer.l" TOKEN(EXECUTE) YY_BREAK case 22: YY_RULE_SETUP -#line 81 "flex_lexer.l" +#line 82 "flex_lexer.l" TOKEN(EXPLAIN) YY_BREAK case 23: YY_RULE_SETUP -#line 82 "flex_lexer.l" +#line 83 "flex_lexer.l" TOKEN(INTEGER) YY_BREAK case 24: YY_RULE_SETUP -#line 83 "flex_lexer.l" +#line 84 "flex_lexer.l" TOKEN(NATURAL) YY_BREAK case 25: YY_RULE_SETUP -#line 84 "flex_lexer.l" +#line 85 "flex_lexer.l" TOKEN(PREPARE) YY_BREAK case 26: YY_RULE_SETUP -#line 85 "flex_lexer.l" +#line 86 "flex_lexer.l" TOKEN(PRIMARY) YY_BREAK case 27: YY_RULE_SETUP -#line 86 "flex_lexer.l" +#line 87 "flex_lexer.l" TOKEN(SCHEMAS) YY_BREAK case 28: YY_RULE_SETUP -#line 87 "flex_lexer.l" +#line 88 "flex_lexer.l" TOKEN(SPATIAL) YY_BREAK case 29: YY_RULE_SETUP -#line 88 "flex_lexer.l" +#line 89 "flex_lexer.l" TOKEN(VARCHAR) YY_BREAK case 30: YY_RULE_SETUP -#line 89 "flex_lexer.l" +#line 90 "flex_lexer.l" TOKEN(VIRTUAL) YY_BREAK case 31: YY_RULE_SETUP -#line 90 "flex_lexer.l" +#line 91 "flex_lexer.l" TOKEN(BEFORE) YY_BREAK case 32: YY_RULE_SETUP -#line 91 "flex_lexer.l" +#line 92 "flex_lexer.l" TOKEN(COLUMN) YY_BREAK case 33: YY_RULE_SETUP -#line 92 "flex_lexer.l" +#line 93 "flex_lexer.l" TOKEN(CREATE) YY_BREAK case 34: YY_RULE_SETUP -#line 93 "flex_lexer.l" +#line 94 "flex_lexer.l" TOKEN(DELETE) YY_BREAK case 35: YY_RULE_SETUP -#line 94 "flex_lexer.l" +#line 95 "flex_lexer.l" TOKEN(DIRECT) YY_BREAK case 36: YY_RULE_SETUP -#line 95 "flex_lexer.l" +#line 96 "flex_lexer.l" TOKEN(DOUBLE) YY_BREAK case 37: YY_RULE_SETUP -#line 96 "flex_lexer.l" +#line 97 "flex_lexer.l" TOKEN(ESCAPE) YY_BREAK case 38: YY_RULE_SETUP -#line 97 "flex_lexer.l" +#line 98 "flex_lexer.l" TOKEN(EXCEPT) YY_BREAK case 39: YY_RULE_SETUP -#line 98 "flex_lexer.l" +#line 99 "flex_lexer.l" TOKEN(EXISTS) YY_BREAK case 40: YY_RULE_SETUP -#line 99 "flex_lexer.l" +#line 100 "flex_lexer.l" TOKEN(EXTRACT) YY_BREAK case 41: YY_RULE_SETUP -#line 100 "flex_lexer.l" +#line 101 "flex_lexer.l" TOKEN(CAST) YY_BREAK case 42: YY_RULE_SETUP -#line 101 "flex_lexer.l" +#line 102 "flex_lexer.l" TOKEN(FORMAT) YY_BREAK case 43: YY_RULE_SETUP -#line 102 "flex_lexer.l" +#line 103 "flex_lexer.l" TOKEN(GLOBAL) YY_BREAK case 44: YY_RULE_SETUP -#line 103 "flex_lexer.l" +#line 104 "flex_lexer.l" TOKEN(HAVING) YY_BREAK case 45: YY_RULE_SETUP -#line 104 "flex_lexer.l" +#line 105 "flex_lexer.l" TOKEN(IMPORT) YY_BREAK case 46: YY_RULE_SETUP -#line 105 "flex_lexer.l" +#line 106 "flex_lexer.l" TOKEN(INSERT) YY_BREAK case 47: YY_RULE_SETUP -#line 106 "flex_lexer.l" +#line 107 "flex_lexer.l" TOKEN(ISNULL) YY_BREAK case 48: YY_RULE_SETUP -#line 107 "flex_lexer.l" +#line 108 "flex_lexer.l" TOKEN(OFFSET) YY_BREAK case 49: YY_RULE_SETUP -#line 108 "flex_lexer.l" +#line 109 "flex_lexer.l" TOKEN(RENAME) YY_BREAK case 50: YY_RULE_SETUP -#line 109 "flex_lexer.l" +#line 110 "flex_lexer.l" TOKEN(SCHEMA) YY_BREAK case 51: YY_RULE_SETUP -#line 110 "flex_lexer.l" +#line 111 "flex_lexer.l" TOKEN(SELECT) YY_BREAK case 52: YY_RULE_SETUP -#line 111 "flex_lexer.l" +#line 112 "flex_lexer.l" TOKEN(SORTED) YY_BREAK case 53: YY_RULE_SETUP -#line 112 "flex_lexer.l" +#line 113 "flex_lexer.l" TOKEN(TABLES) YY_BREAK case 54: YY_RULE_SETUP -#line 113 "flex_lexer.l" +#line 114 "flex_lexer.l" TOKEN(UNIQUE) YY_BREAK case 55: YY_RULE_SETUP -#line 114 "flex_lexer.l" +#line 115 "flex_lexer.l" TOKEN(UNLOAD) YY_BREAK case 56: YY_RULE_SETUP -#line 115 "flex_lexer.l" +#line 116 "flex_lexer.l" TOKEN(UPDATE) YY_BREAK case 57: YY_RULE_SETUP -#line 116 "flex_lexer.l" +#line 117 "flex_lexer.l" TOKEN(VALUES) YY_BREAK case 58: YY_RULE_SETUP -#line 117 "flex_lexer.l" +#line 118 "flex_lexer.l" TOKEN(AFTER) YY_BREAK case 59: YY_RULE_SETUP -#line 118 "flex_lexer.l" +#line 119 "flex_lexer.l" TOKEN(ALTER) YY_BREAK case 60: YY_RULE_SETUP -#line 119 "flex_lexer.l" +#line 120 "flex_lexer.l" TOKEN(ARRAY) YY_BREAK case 61: YY_RULE_SETUP -#line 120 "flex_lexer.l" +#line 121 "flex_lexer.l" TOKEN(CROSS) YY_BREAK case 62: YY_RULE_SETUP -#line 121 "flex_lexer.l" +#line 122 "flex_lexer.l" TOKEN(DELTA) YY_BREAK case 63: YY_RULE_SETUP -#line 122 "flex_lexer.l" +#line 123 "flex_lexer.l" TOKEN(FLOAT) YY_BREAK case 64: YY_RULE_SETUP -#line 123 "flex_lexer.l" +#line 124 "flex_lexer.l" TOKEN(GROUP) YY_BREAK case 65: YY_RULE_SETUP -#line 124 "flex_lexer.l" +#line 125 "flex_lexer.l" TOKEN(INDEX) YY_BREAK case 66: YY_RULE_SETUP -#line 125 "flex_lexer.l" +#line 126 "flex_lexer.l" TOKEN(INNER) YY_BREAK case 67: YY_RULE_SETUP -#line 126 "flex_lexer.l" +#line 127 "flex_lexer.l" TOKEN(LIMIT) YY_BREAK case 68: YY_RULE_SETUP -#line 127 "flex_lexer.l" +#line 128 "flex_lexer.l" TOKEN(LOCAL) YY_BREAK case 69: YY_RULE_SETUP -#line 128 "flex_lexer.l" +#line 129 "flex_lexer.l" TOKEN(MERGE) YY_BREAK case 70: YY_RULE_SETUP -#line 129 "flex_lexer.l" +#line 130 "flex_lexer.l" TOKEN(MINUS) YY_BREAK case 71: YY_RULE_SETUP -#line 130 "flex_lexer.l" +#line 131 "flex_lexer.l" TOKEN(ORDER) YY_BREAK case 72: YY_RULE_SETUP -#line 131 "flex_lexer.l" +#line 132 "flex_lexer.l" TOKEN(OUTER) YY_BREAK case 73: YY_RULE_SETUP -#line 132 "flex_lexer.l" +#line 133 "flex_lexer.l" TOKEN(RIGHT) YY_BREAK case 74: YY_RULE_SETUP -#line 133 "flex_lexer.l" +#line 134 "flex_lexer.l" TOKEN(TABLE) YY_BREAK case 75: YY_RULE_SETUP -#line 134 "flex_lexer.l" +#line 135 "flex_lexer.l" TOKEN(UNION) YY_BREAK case 76: YY_RULE_SETUP -#line 135 "flex_lexer.l" +#line 136 "flex_lexer.l" TOKEN(USING) YY_BREAK case 77: YY_RULE_SETUP -#line 136 "flex_lexer.l" +#line 137 "flex_lexer.l" TOKEN(WHERE) YY_BREAK case 78: YY_RULE_SETUP -#line 137 "flex_lexer.l" +#line 138 "flex_lexer.l" TOKEN(CALL) YY_BREAK case 79: YY_RULE_SETUP -#line 138 "flex_lexer.l" +#line 139 "flex_lexer.l" TOKEN(CASE) YY_BREAK case 80: YY_RULE_SETUP -#line 139 "flex_lexer.l" +#line 140 "flex_lexer.l" TOKEN(CHAR) YY_BREAK case 81: YY_RULE_SETUP -#line 140 "flex_lexer.l" +#line 141 "flex_lexer.l" TOKEN(COPY) YY_BREAK case 82: YY_RULE_SETUP -#line 141 "flex_lexer.l" +#line 142 "flex_lexer.l" TOKEN(DATE) YY_BREAK case 83: YY_RULE_SETUP -#line 142 "flex_lexer.l" +#line 143 "flex_lexer.l" TOKEN(DATETIME) YY_BREAK case 84: YY_RULE_SETUP -#line 143 "flex_lexer.l" +#line 144 "flex_lexer.l" TOKEN(DESC) YY_BREAK case 85: YY_RULE_SETUP -#line 144 "flex_lexer.l" +#line 145 "flex_lexer.l" TOKEN(DROP) YY_BREAK case 86: YY_RULE_SETUP -#line 145 "flex_lexer.l" +#line 146 "flex_lexer.l" TOKEN(ELSE) YY_BREAK case 87: YY_RULE_SETUP -#line 146 "flex_lexer.l" +#line 147 "flex_lexer.l" TOKEN(FILE) YY_BREAK case 88: YY_RULE_SETUP -#line 147 "flex_lexer.l" +#line 148 "flex_lexer.l" TOKEN(FROM) YY_BREAK case 89: YY_RULE_SETUP -#line 148 "flex_lexer.l" +#line 149 "flex_lexer.l" TOKEN(FULL) YY_BREAK case 90: YY_RULE_SETUP -#line 149 "flex_lexer.l" +#line 150 "flex_lexer.l" TOKEN(HASH) YY_BREAK case 91: YY_RULE_SETUP -#line 150 "flex_lexer.l" +#line 151 "flex_lexer.l" TOKEN(HINT) YY_BREAK case 92: YY_RULE_SETUP -#line 151 "flex_lexer.l" +#line 152 "flex_lexer.l" TOKEN(INTO) YY_BREAK case 93: YY_RULE_SETUP -#line 152 "flex_lexer.l" +#line 153 "flex_lexer.l" TOKEN(JOIN) YY_BREAK case 94: YY_RULE_SETUP -#line 153 "flex_lexer.l" +#line 154 "flex_lexer.l" TOKEN(LEFT) YY_BREAK case 95: YY_RULE_SETUP -#line 154 "flex_lexer.l" +#line 155 "flex_lexer.l" TOKEN(LIKE) YY_BREAK case 96: YY_RULE_SETUP -#line 155 "flex_lexer.l" +#line 156 "flex_lexer.l" TOKEN(ILIKE) YY_BREAK case 97: YY_RULE_SETUP -#line 156 "flex_lexer.l" +#line 157 "flex_lexer.l" TOKEN(LOAD) YY_BREAK case 98: YY_RULE_SETUP -#line 157 "flex_lexer.l" +#line 158 "flex_lexer.l" TOKEN(LONG) YY_BREAK case 99: YY_RULE_SETUP -#line 158 "flex_lexer.l" +#line 159 "flex_lexer.l" TOKEN(NULL) YY_BREAK case 100: YY_RULE_SETUP -#line 159 "flex_lexer.l" +#line 160 "flex_lexer.l" TOKEN(PLAN) YY_BREAK case 101: YY_RULE_SETUP -#line 160 "flex_lexer.l" +#line 161 "flex_lexer.l" TOKEN(SHOW) YY_BREAK case 102: YY_RULE_SETUP -#line 161 "flex_lexer.l" +#line 162 "flex_lexer.l" TOKEN(TEXT) YY_BREAK case 103: YY_RULE_SETUP -#line 162 "flex_lexer.l" +#line 163 "flex_lexer.l" TOKEN(THEN) YY_BREAK case 104: YY_RULE_SETUP -#line 163 "flex_lexer.l" +#line 164 "flex_lexer.l" TOKEN(TIME) YY_BREAK case 105: YY_RULE_SETUP -#line 164 "flex_lexer.l" +#line 165 "flex_lexer.l" TOKEN(VIEW) YY_BREAK case 106: YY_RULE_SETUP -#line 165 "flex_lexer.l" +#line 166 "flex_lexer.l" TOKEN(WHEN) YY_BREAK case 107: YY_RULE_SETUP -#line 166 "flex_lexer.l" +#line 167 "flex_lexer.l" TOKEN(WITH) YY_BREAK case 108: YY_RULE_SETUP -#line 167 "flex_lexer.l" +#line 168 "flex_lexer.l" TOKEN(ADD) YY_BREAK case 109: YY_RULE_SETUP -#line 168 "flex_lexer.l" +#line 169 "flex_lexer.l" TOKEN(ALL) YY_BREAK case 110: YY_RULE_SETUP -#line 169 "flex_lexer.l" +#line 170 "flex_lexer.l" TOKEN(AND) YY_BREAK case 111: YY_RULE_SETUP -#line 170 "flex_lexer.l" +#line 171 "flex_lexer.l" TOKEN(ASC) YY_BREAK case 112: YY_RULE_SETUP -#line 171 "flex_lexer.l" +#line 172 "flex_lexer.l" TOKEN(END) YY_BREAK case 113: YY_RULE_SETUP -#line 172 "flex_lexer.l" +#line 173 "flex_lexer.l" TOKEN(FOR) YY_BREAK case 114: YY_RULE_SETUP -#line 173 "flex_lexer.l" +#line 174 "flex_lexer.l" TOKEN(INT) YY_BREAK case 115: YY_RULE_SETUP -#line 174 "flex_lexer.l" +#line 175 "flex_lexer.l" TOKEN(KEY) YY_BREAK case 116: YY_RULE_SETUP -#line 175 "flex_lexer.l" +#line 176 "flex_lexer.l" TOKEN(NOT) YY_BREAK case 117: YY_RULE_SETUP -#line 176 "flex_lexer.l" +#line 177 "flex_lexer.l" TOKEN(OFF) YY_BREAK case 118: YY_RULE_SETUP -#line 177 "flex_lexer.l" +#line 178 "flex_lexer.l" TOKEN(SET) YY_BREAK case 119: YY_RULE_SETUP -#line 178 "flex_lexer.l" +#line 179 "flex_lexer.l" TOKEN(TOP) YY_BREAK case 120: YY_RULE_SETUP -#line 179 "flex_lexer.l" +#line 180 "flex_lexer.l" TOKEN(AS) YY_BREAK case 121: YY_RULE_SETUP -#line 180 "flex_lexer.l" +#line 181 "flex_lexer.l" TOKEN(BY) YY_BREAK case 122: YY_RULE_SETUP -#line 181 "flex_lexer.l" +#line 182 "flex_lexer.l" TOKEN(IF) YY_BREAK case 123: YY_RULE_SETUP -#line 182 "flex_lexer.l" +#line 183 "flex_lexer.l" TOKEN(IN) YY_BREAK case 124: YY_RULE_SETUP -#line 183 "flex_lexer.l" +#line 184 "flex_lexer.l" TOKEN(IS) YY_BREAK case 125: YY_RULE_SETUP -#line 184 "flex_lexer.l" +#line 185 "flex_lexer.l" TOKEN(OF) YY_BREAK case 126: YY_RULE_SETUP -#line 185 "flex_lexer.l" +#line 186 "flex_lexer.l" TOKEN(ON) YY_BREAK case 127: YY_RULE_SETUP -#line 186 "flex_lexer.l" +#line 187 "flex_lexer.l" TOKEN(OR) YY_BREAK case 128: YY_RULE_SETUP -#line 187 "flex_lexer.l" +#line 188 "flex_lexer.l" TOKEN(TO) YY_BREAK case 129: YY_RULE_SETUP -#line 188 "flex_lexer.l" +#line 189 "flex_lexer.l" TOKEN(SECOND) YY_BREAK case 130: YY_RULE_SETUP -#line 189 "flex_lexer.l" +#line 190 "flex_lexer.l" TOKEN(MINUTE) YY_BREAK case 131: YY_RULE_SETUP -#line 190 "flex_lexer.l" +#line 191 "flex_lexer.l" TOKEN(HOUR) YY_BREAK case 132: YY_RULE_SETUP -#line 191 "flex_lexer.l" +#line 192 "flex_lexer.l" TOKEN(DAY) YY_BREAK case 133: YY_RULE_SETUP -#line 192 "flex_lexer.l" +#line 193 "flex_lexer.l" TOKEN(MONTH) YY_BREAK case 134: YY_RULE_SETUP -#line 193 "flex_lexer.l" +#line 194 "flex_lexer.l" TOKEN(YEAR) YY_BREAK case 135: YY_RULE_SETUP -#line 194 "flex_lexer.l" +#line 195 "flex_lexer.l" TOKEN(TRUE) YY_BREAK case 136: YY_RULE_SETUP -#line 195 "flex_lexer.l" +#line 196 "flex_lexer.l" TOKEN(FALSE) YY_BREAK case 137: YY_RULE_SETUP -#line 196 "flex_lexer.l" +#line 197 "flex_lexer.l" TOKEN(TRANSACTION) YY_BREAK case 138: YY_RULE_SETUP -#line 197 "flex_lexer.l" +#line 198 "flex_lexer.l" TOKEN(BEGIN) YY_BREAK case 139: YY_RULE_SETUP -#line 198 "flex_lexer.l" +#line 199 "flex_lexer.l" TOKEN(ROLLBACK) YY_BREAK case 140: YY_RULE_SETUP -#line 199 "flex_lexer.l" +#line 200 "flex_lexer.l" TOKEN(COMMIT) YY_BREAK /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */ case 141: YY_RULE_SETUP -#line 202 "flex_lexer.l" +#line 203 "flex_lexer.l" TOKEN(EQUALS) YY_BREAK case 142: YY_RULE_SETUP -#line 203 "flex_lexer.l" +#line 204 "flex_lexer.l" TOKEN(NOTEQUALS) YY_BREAK case 143: YY_RULE_SETUP -#line 204 "flex_lexer.l" +#line 205 "flex_lexer.l" TOKEN(NOTEQUALS) YY_BREAK case 144: YY_RULE_SETUP -#line 205 "flex_lexer.l" +#line 206 "flex_lexer.l" TOKEN(LESSEQ) YY_BREAK case 145: YY_RULE_SETUP -#line 206 "flex_lexer.l" +#line 207 "flex_lexer.l" TOKEN(GREATEREQ) YY_BREAK case 146: YY_RULE_SETUP -#line 207 "flex_lexer.l" +#line 208 "flex_lexer.l" TOKEN(CONCAT) YY_BREAK case 147: YY_RULE_SETUP -#line 209 "flex_lexer.l" +#line 210 "flex_lexer.l" { return yytext[0]; } YY_BREAK case 148: -#line 212 "flex_lexer.l" +#line 213 "flex_lexer.l" case 149: YY_RULE_SETUP -#line 212 "flex_lexer.l" +#line 213 "flex_lexer.l" { yylval->fval = atof(yytext); return SQL_FLOATVAL; } YY_BREAK +/* + * Regularly, negative literals are treated as . This does not work for LLONG_MIN, as it has no + * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where + * numeric_limits::lowest() == -numeric_limits::max(); + */ case 150: YY_RULE_SETUP -#line 217 "flex_lexer.l" +#line 223 "flex_lexer.l" { - yylval->ival = atol(yytext); + yylval->ival = LLONG_MIN; return SQL_INTVAL; } YY_BREAK case 151: YY_RULE_SETUP -#line 222 "flex_lexer.l" +#line 228 "flex_lexer.l" +{ + errno = 0; + yylval->ival = strtoll(yytext, nullptr, 0); + if (errno) { + return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); + return 0; + } + return SQL_INTVAL; +} + YY_BREAK +case 152: +YY_RULE_SETUP +#line 238 "flex_lexer.l" { // Crop the leading and trailing quote char yylval->sval = hsql::substr(yytext, 1, strlen(yytext)-1); return SQL_IDENTIFIER; } YY_BREAK -case 152: +case 153: YY_RULE_SETUP -#line 228 "flex_lexer.l" +#line 244 "flex_lexer.l" { yylval->sval = strdup(yytext); return SQL_IDENTIFIER; } YY_BREAK -case 153: +case 154: YY_RULE_SETUP -#line 233 "flex_lexer.l" +#line 249 "flex_lexer.l" { BEGIN singlequotedstring; strbuf = std::stringstream{}; } YY_BREAK -case 154: +case 155: YY_RULE_SETUP -#line 234 "flex_lexer.l" +#line 250 "flex_lexer.l" { strbuf << '\''; } YY_BREAK -case 155: -/* rule 155 can match eol */ +case 156: +/* rule 156 can match eol */ YY_RULE_SETUP -#line 235 "flex_lexer.l" +#line 251 "flex_lexer.l" { strbuf << yytext; } YY_BREAK -case 156: +case 157: YY_RULE_SETUP -#line 236 "flex_lexer.l" +#line 252 "flex_lexer.l" { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; } YY_BREAK case YY_STATE_EOF(singlequotedstring): -#line 237 "flex_lexer.l" +#line 253 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unterminated string\n"); return 0; } YY_BREAK -case 157: +case 158: YY_RULE_SETUP -#line 239 "flex_lexer.l" +#line 255 "flex_lexer.l" { fprintf(stderr, "[SQL-Lexer-Error] Unknown Character: %c\n", yytext[0]); return 0; } YY_BREAK -case 158: +case 159: YY_RULE_SETUP -#line 242 "flex_lexer.l" +#line 258 "flex_lexer.l" ECHO; YY_BREAK -#line 3156 "flex_lexer.cpp" +#line 3228 "flex_lexer.cpp" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): yyterminate(); @@ -3454,7 +3526,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1082 ) + if ( yy_current_state >= 1120 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -3483,11 +3555,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1082 ) + if ( yy_current_state >= 1120 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1081); + yy_is_jam = (yy_current_state == 1119); (void)yyg; return yy_is_jam ? 0 : yy_current_state; @@ -4310,7 +4382,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 242 "flex_lexer.l" +#line 258 "flex_lexer.l" /*************************** ** Section 3: User code diff --git a/src/parser/flex_lexer.h b/src/parser/flex_lexer.h index dbe1dd14..b04c398e 100644 --- a/src/parser/flex_lexer.h +++ b/src/parser/flex_lexer.h @@ -730,7 +730,7 @@ extern int yylex \ #undef yyTABLES_NAME #endif -#line 242 "flex_lexer.l" +#line 258 "flex_lexer.l" #line 736 "flex_lexer.h" diff --git a/src/parser/flex_lexer.l b/src/parser/flex_lexer.l index 48710e5a..ba95755a 100644 --- a/src/parser/flex_lexer.l +++ b/src/parser/flex_lexer.l @@ -12,6 +12,7 @@ #include "../sql/Expr.h" #include "bison_parser.h" +#include #include #include @@ -208,14 +209,29 @@ COMMIT TOKEN(COMMIT) [-+*/(){},.;<>=^%:?[\]|] { return yytext[0]; } --?[0-9]+"."[0-9]* | +[0-9]+"."[0-9]* | "."[0-9]* { yylval->fval = atof(yytext); return SQL_FLOATVAL; } --?[0-9]+ { - yylval->ival = atol(yytext); + /* + * Regularly, negative literals are treated as . This does not work for LLONG_MIN, as it has no + * positive equivalent. We thus match for LLONG_MIN specifically. This is not an issue for floats, where + * numeric_limits::lowest() == -numeric_limits::max(); + */ +-9223372036854775808 { + yylval->ival = LLONG_MIN; + return SQL_INTVAL; +} + +[0-9]+ { + errno = 0; + yylval->ival = strtoll(yytext, nullptr, 0); + if (errno) { + return fprintf(stderr, "[SQL-Lexer-Error] Integer cannot be parsed - is it out of range?"); + return 0; + } return SQL_INTVAL; } diff --git a/test/queries/queries-bad.sql b/test/queries/queries-bad.sql index 34311f39..07a36555 100644 --- a/test/queries/queries-bad.sql +++ b/test/queries/queries-bad.sql @@ -20,3 +20,5 @@ !WITH a AS (WITH b AS (SELECT 1) SELECT 1) SELECT 1; # We do not support nested WITH clauses !WITH a AS (SELECT ) b AS (SELECT ) SELECT 1; # Missing comma between WITH descriptions !BEGIN TRANSACTION transName; # Transaction naming is currently not supported +!SELECT -9223372036854775809; # Out of int64_t range +!SELECT 9223372036854775808; # Out of int64_t range \ No newline at end of file diff --git a/test/select_tests.cpp b/test/select_tests.cpp index 6833770f..ce7d2550 100644 --- a/test/select_tests.cpp +++ b/test/select_tests.cpp @@ -1,4 +1,4 @@ - +#include #include "thirdparty/microtest/microtest.h" #include "sql_asserts.h" @@ -55,6 +55,69 @@ TEST(SelectExprTest) { ASSERT_STREQ(stmt->selectList->at(2)->exprList->at(1)->exprList->at(0)->getName(), "un"); } +TEST(SelectUnaryMinusTest) { + TEST_PARSE_SINGLE_SQL( + "SELECT 10 - 20, 10 + -20, 10 +-20, 10+-20, 9223372036854775807, -9223372036854775808, 10-5.2, 10+-5.2", + kStmtSelect, + SelectStatement, + result, + stmt); + + ASSERT_EQ(stmt->selectList->size(), 8); + + ASSERT_EQ(stmt->selectList->at(0)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(0)->opType, kOpMinus); + ASSERT_EQ(stmt->selectList->at(0)->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(0)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(0)->expr2->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(0)->expr2->ival, 20); + + ASSERT_EQ(stmt->selectList->at(1)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(1)->opType, kOpPlus); + ASSERT_EQ(stmt->selectList->at(1)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(1)->expr2->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(1)->expr2->opType, kOpUnaryMinus); + ASSERT_EQ(stmt->selectList->at(1)->expr2->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(1)->expr2->expr->ival, 20); + + ASSERT_EQ(stmt->selectList->at(2)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(2)->opType, kOpPlus); + ASSERT_EQ(stmt->selectList->at(2)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(2)->expr2->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(2)->expr2->opType, kOpUnaryMinus); + ASSERT_EQ(stmt->selectList->at(2)->expr2->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(2)->expr2->expr->ival, 20); + + ASSERT_EQ(stmt->selectList->at(3)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(3)->opType, kOpPlus); + ASSERT_EQ(stmt->selectList->at(3)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(3)->expr2->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(3)->expr2->opType, kOpUnaryMinus); + ASSERT_EQ(stmt->selectList->at(3)->expr2->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(3)->expr2->expr->ival, 20); + + ASSERT_EQ(stmt->selectList->at(4)->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(4)->ival, LLONG_MAX); + + ASSERT_EQ(stmt->selectList->at(5)->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(5)->ival, LLONG_MIN); + + ASSERT_EQ(stmt->selectList->at(6)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(6)->opType, kOpMinus); + ASSERT_EQ(stmt->selectList->at(6)->expr->type, kExprLiteralInt); + ASSERT_EQ(stmt->selectList->at(6)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(6)->expr2->type, kExprLiteralFloat); + ASSERT_EQ(stmt->selectList->at(6)->expr2->fval, 5.2); + + ASSERT_EQ(stmt->selectList->at(7)->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(7)->opType, kOpPlus); + ASSERT_EQ(stmt->selectList->at(7)->expr->ival, 10); + ASSERT_EQ(stmt->selectList->at(7)->expr2->type, kExprOperator); + ASSERT_EQ(stmt->selectList->at(7)->expr2->opType, kOpUnaryMinus); + ASSERT_EQ(stmt->selectList->at(7)->expr2->expr->type, kExprLiteralFloat); + ASSERT_EQ(stmt->selectList->at(7)->expr2->expr->fval, 5.2); +} + TEST(SelectSubstrTest) { TEST_PARSE_SINGLE_SQL( "SELECT SUBSTR(a, 3, 5) FROM students;", @@ -100,8 +163,9 @@ TEST(SelectHavingTest) { ASSERT_EQ(group->columns->size(), 1); ASSERT_EQ(group->having->opType, kOpLess); ASSERT(group->having->expr->isType(kExprFunctionRef)); - ASSERT(group->having->expr2->isType(kExprLiteralFloat)); - ASSERT_EQ(group->having->expr2->fval, -2.0); + ASSERT(group->having->expr2->isType(kExprOperator)); + ASSERT_EQ(group->having->expr2->opType, kOpUnaryMinus); + ASSERT_EQ(group->having->expr2->expr->fval, 2.0); } @@ -164,7 +228,7 @@ TEST(OrderByTest) { TEST(SelectBetweenTest) { TEST_PARSE_SINGLE_SQL( - "SELECT grade, city FROM students WHERE grade BETWEEN -1 and c;", + "SELECT grade, city FROM students WHERE grade BETWEEN 1 and c;", kStmtSelect, SelectStatement, result, @@ -181,7 +245,7 @@ TEST(SelectBetweenTest) { ASSERT_EQ(where->exprList->size(), 2); ASSERT(where->exprList->at(0)->isType(kExprLiteralInt)); - ASSERT_EQ(where->exprList->at(0)->ival, -1); + ASSERT_EQ(where->exprList->at(0)->ival, 1); ASSERT(where->exprList->at(1)->isType(kExprColumnRef)); ASSERT_STREQ(where->exprList->at(1)->getName(), "c"); }