AryaWu/sqlite
0
1/* This file is automatically generated by Lemon from input grammar2** source file "parse.y".3*/4/*5** 2001-09-156**7** The author disclaims copyright to this source code. In place of8** a legal notice, here is a blessing:9**10** May you do good and not evil.11** May you find forgiveness for yourself and forgive others.12** May you share freely, never taking more than you give.13**14*************************************************************************15** This file contains SQLite's SQL parser.16**17** The canonical source code to this file ("parse.y") is a Lemon grammar 18** file that specifies the input grammar and actions to take while parsing.19** That input file is processed by Lemon to generate a C-language 20** implementation of a parser for the given grammar. You might be reading21** this comment as part of the translated C-code. Edits should be made22** to the original parse.y sources.23*/24#line 64 "parse.y"25 26#include "sqliteInt.h"27 28/*29** Verify that the pParse->isCreate field is set30*/31#define ASSERT_IS_CREATE assert(pParse->isCreate)32 33/*34** Disable all error recovery processing in the parser push-down35** automaton.36*/37#define YYNOERRORRECOVERY 138 39/*40** Make yytestcase() the same as testcase()41*/42#define yytestcase(X) testcase(X)43 44/*45** Indicate that sqlite3ParserFree() will never be called with a null46** pointer.47*/48#define YYPARSEFREENEVERNULL 149 50/*51** In the amalgamation, the parse.c file generated by lemon and the52** tokenize.c file are concatenated. In that case, sqlite3RunParser()53** has access to the the size of the yyParser object and so the parser54** engine can be allocated from stack. In that case, only the55** sqlite3ParserInit() and sqlite3ParserFinalize() routines are invoked56** and the sqlite3ParserAlloc() and sqlite3ParserFree() routines can be57** omitted.58*/59#ifdef SQLITE_AMALGAMATION60# define sqlite3Parser_ENGINEALWAYSONSTACK 161#endif62 63/*64** Alternative datatype for the argument to the malloc() routine passed65** into sqlite3ParserAlloc(). The default is size_t.66*/67#define YYMALLOCARGTYPE u6468 69/*70** An instance of the following structure describes the event of a71** TRIGGER. "a" is the event type, one of TK_UPDATE, TK_INSERT,72** TK_DELETE, or TK_INSTEAD. If the event is of the form73**74** UPDATE ON (a,b,c)75**76** Then the "b" IdList records the list "a,b,c".77*/78struct TrigEvent { int a; IdList * b; };79 80struct FrameBound { int eType; Expr *pExpr; };81 82/*83** Generate a syntax error84*/85static void parserSyntaxError(Parse *pParse, Token *p){86 sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", p);87}88 89/*90** Disable lookaside memory allocation for objects that might be91** shared across database connections.92*/93static void disableLookaside(Parse *pParse){94 sqlite3 *db = pParse->db;95 pParse->disableLookaside++;96#ifdef SQLITE_DEBUG97 pParse->isCreate = 1;98#endif99 memset(&pParse->u1.cr, 0, sizeof(pParse->u1.cr));100 DisableLookaside;101}102 103#if !defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT) \104 && defined(SQLITE_UDL_CAPABLE_PARSER)105/*106** Issue an error message if an ORDER BY or LIMIT clause occurs on an107** UPDATE or DELETE statement.108*/109static void updateDeleteLimitError(110 Parse *pParse,111 ExprList *pOrderBy,112 Expr *pLimit113){114 if( pOrderBy ){115 sqlite3ErrorMsg(pParse, "syntax error near \"ORDER BY\"");116 }else{117 sqlite3ErrorMsg(pParse, "syntax error near \"LIMIT\"");118 }119 sqlite3ExprListDelete(pParse->db, pOrderBy);120 sqlite3ExprDelete(pParse->db, pLimit);121}122#endif /* SQLITE_ENABLE_UPDATE_DELETE_LIMIT */123 124#line 537 "parse.y"125 126 /*127 ** For a compound SELECT statement, make sure p->pPrior->pNext==p for128 ** all elements in the list. And make sure list length does not exceed129 ** SQLITE_LIMIT_COMPOUND_SELECT.130 */131 static void parserDoubleLinkSelect(Parse *pParse, Select *p){132 assert( p!=0 );133 if( p->pPrior ){134 Select *pNext = 0, *pLoop = p;135 int mxSelect, cnt = 1;136 while(1){137 pLoop->pNext = pNext;138 pLoop->selFlags |= SF_Compound;139 pNext = pLoop;140 pLoop = pLoop->pPrior;141 if( pLoop==0 ) break;142 cnt++; 143 if( pLoop->pOrderBy || pLoop->pLimit ){144 sqlite3ErrorMsg(pParse,"%s clause should come after %s not before",145 pLoop->pOrderBy!=0 ? "ORDER BY" : "LIMIT",146 sqlite3SelectOpName(pNext->op));147 break;148 }149 }150 if( (p->selFlags & (SF_MultiValue|SF_Values))==0151 && (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0152 && cnt>mxSelect153 ){154 sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");155 }156 }157 }158 159 /* Attach a With object describing the WITH clause to a Select160 ** object describing the query for which the WITH clause is a prefix.161 */162 static Select *attachWithToSelect(Parse *pParse, Select *pSelect, With *pWith){163 if( pSelect ){164 pSelect->pWith = pWith;165 parserDoubleLinkSelect(pParse, pSelect);166 }else{167 sqlite3WithDelete(pParse->db, pWith);168 }169 return pSelect;170 }171 172 /* Memory allocator for parser stack resizing. This is a thin wrapper around173 ** sqlite3_realloc() that includes a call to sqlite3FaultSim() to facilitate174 ** testing.175 */176 static void *parserStackRealloc(177 void *pOld, /* Prior allocation */178 sqlite3_uint64 newSize, /* Requested new alloation size */179 Parse *pParse /* Parsing context */180 ){181 void *p = sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize);182 if( p==0 ) sqlite3OomFault(pParse->db);183 return p;184 }185 static void parserStackFree(void *pOld, Parse *pParse){186 (void)pParse;187 sqlite3_free(pOld); 188 }189 190 /* Return an integer that is the maximum allowed stack size */191 static int parserStackSizeLimit(Parse *pParse){192 return pParse->db->aLimit[SQLITE_LIMIT_PARSER_DEPTH];193 }194#line 1137 "parse.y"195 196 197 /* Construct a new Expr object from a single token */198 static Expr *tokenExpr(Parse *pParse, int op, Token t){199 Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1);200 if( p ){201 /* memset(p, 0, sizeof(Expr)); */202 p->op = (u8)op;203 p->affExpr = 0;204 p->flags = EP_Leaf;205 ExprClearVVAProperties(p);206 /* p->iAgg = -1; // Not required */207 p->pLeft = p->pRight = 0;208 p->pAggInfo = 0;209 memset(&p->x, 0, sizeof(p->x));210 memset(&p->y, 0, sizeof(p->y));211 p->op2 = 0;212 p->iTable = 0;213 p->iColumn = 0;214 p->u.zToken = (char*)&p[1];215 memcpy(p->u.zToken, t.z, t.n);216 p->u.zToken[t.n] = 0;217 p->w.iOfst = (int)(t.z - pParse->zTail);218 if( sqlite3Isquote(p->u.zToken[0]) ){219 sqlite3DequoteExpr(p);220 }221#if SQLITE_MAX_EXPR_DEPTH>0222 p->nHeight = 1;223#endif 224 if( IN_RENAME_OBJECT ){225 return (Expr*)sqlite3RenameTokenMap(pParse, (void*)p, &t);226 }227 }228 return p;229 }230 231#line 1383 "parse.y"232 233 /* Create a TK_ISNULL or TK_NOTNULL expression, perhaps optimized to234 ** to TK_TRUEFALSE, if possible */235 static Expr *sqlite3PExprIsNull(236 Parse *pParse, /* Parsing context */237 int op, /* TK_ISNULL or TK_NOTNULL */238 Expr *pLeft /* Operand */239 ){240 Expr *p = pLeft;241 assert( op==TK_ISNULL || op==TK_NOTNULL );242 assert( pLeft!=0 );243 while( p->op==TK_UPLUS || p->op==TK_UMINUS ){244 p = p->pLeft;245 assert( p!=0 );246 }247 switch( p->op ){248 case TK_INTEGER:249 case TK_STRING:250 case TK_FLOAT:251 case TK_BLOB:252 sqlite3ExprDeferredDelete(pParse, pLeft);253 return sqlite3ExprInt32(pParse->db, op==TK_NOTNULL);254 default:255 break;256 }257 return sqlite3PExpr(pParse, op, pLeft, 0);258 }259 260 /* Create a TK_IS or TK_ISNOT operator, perhaps optimized to261 ** TK_ISNULL or TK_NOTNULL or TK_TRUEFALSE. */262 static Expr *sqlite3PExprIs(263 Parse *pParse, /* Parsing context */264 int op, /* TK_IS or TK_ISNOT */265 Expr *pLeft, /* Left operand */266 Expr *pRight /* Right operand */267 ){268 if( pRight && pRight->op==TK_NULL ){269 sqlite3ExprDeferredDelete(pParse, pRight);270 return sqlite3PExprIsNull(pParse, op==TK_IS ? TK_ISNULL : TK_NOTNULL, pLeft);271 }272 return sqlite3PExpr(pParse, op, pLeft, pRight);273 }274#line 1654 "parse.y"275 276 /* Add a single new term to an ExprList that is used to store a277 ** list of identifiers. Report an error if the ID list contains278 ** a COLLATE clause or an ASC or DESC keyword, except ignore the279 ** error while parsing a legacy schema.280 */281 static ExprList *parserAddExprIdListTerm(282 Parse *pParse,283 ExprList *pPrior,284 Token *pIdToken,285 int hasCollate,286 int sortOrder287 ){288 ExprList *p = sqlite3ExprListAppend(pParse, pPrior, 0);289 if( (hasCollate || sortOrder!=SQLITE_SO_UNDEFINED)290 && pParse->db->init.busy==0291 ){292 sqlite3ErrorMsg(pParse, "syntax error after column name \"%.*s\"",293 pIdToken->n, pIdToken->z);294 }295 sqlite3ExprListSetName(pParse, p, pIdToken, 1);296 return p;297 }298#line 2148 "parse.y"299 300#if TK_SPAN>255301# error too many tokens in the grammar302#endif303#line 304 "parse.c"304/**************** End of %include directives **********************************/305/* These constants specify the various numeric values for terminal symbols.306***************** Begin token definitions *************************************/307#ifndef TK_SEMI308#define TK_SEMI 1309#define TK_EXPLAIN 2310#define TK_QUERY 3311#define TK_PLAN 4312#define TK_BEGIN 5313#define TK_TRANSACTION 6314#define TK_DEFERRED 7315#define TK_IMMEDIATE 8316#define TK_EXCLUSIVE 9317#define TK_COMMIT 10318#define TK_END 11319#define TK_ROLLBACK 12320#define TK_SAVEPOINT 13321#define TK_RELEASE 14322#define TK_TO 15323#define TK_TABLE 16324#define TK_CREATE 17325#define TK_IF 18326#define TK_NOT 19327#define TK_EXISTS 20328#define TK_TEMP 21329#define TK_LP 22330#define TK_RP 23331#define TK_AS 24332#define TK_COMMA 25333#define TK_WITHOUT 26334#define TK_ABORT 27335#define TK_ACTION 28336#define TK_AFTER 29337#define TK_ANALYZE 30338#define TK_ASC 31339#define TK_ATTACH 32340#define TK_BEFORE 33341#define TK_BY 34342#define TK_CASCADE 35343#define TK_CAST 36344#define TK_CONFLICT 37345#define TK_DATABASE 38346#define TK_DESC 39347#define TK_DETACH 40348#define TK_EACH 41349#define TK_FAIL 42350#define TK_OR 43351#define TK_AND 44352#define TK_IS 45353#define TK_ISNOT 46354#define TK_MATCH 47355#define TK_LIKE_KW 48356#define TK_BETWEEN 49357#define TK_IN 50358#define TK_ISNULL 51359#define TK_NOTNULL 52360#define TK_NE 53361#define TK_EQ 54362#define TK_GT 55363#define TK_LE 56364#define TK_LT 57365#define TK_GE 58366#define TK_ESCAPE 59367#define TK_ID 60368#define TK_COLUMNKW 61369#define TK_DO 62370#define TK_FOR 63371#define TK_IGNORE 64372#define TK_INITIALLY 65373#define TK_INSTEAD 66374#define TK_NO 67375#define TK_KEY 68376#define TK_OF 69377#define TK_OFFSET 70378#define TK_PRAGMA 71379#define TK_RAISE 72380#define TK_RECURSIVE 73381#define TK_REPLACE 74382#define TK_RESTRICT 75383#define TK_ROW 76384#define TK_ROWS 77385#define TK_TRIGGER 78386#define TK_VACUUM 79387#define TK_VIEW 80388#define TK_VIRTUAL 81389#define TK_WITH 82390#define TK_NULLS 83391#define TK_FIRST 84392#define TK_LAST 85393#define TK_CURRENT 86394#define TK_FOLLOWING 87395#define TK_PARTITION 88396#define TK_PRECEDING 89397#define TK_RANGE 90398#define TK_UNBOUNDED 91399#define TK_EXCLUDE 92400#define TK_GROUPS 93401#define TK_OTHERS 94402#define TK_TIES 95403#define TK_GENERATED 96404#define TK_ALWAYS 97405#define TK_MATERIALIZED 98406#define TK_REINDEX 99407#define TK_RENAME 100408#define TK_CTIME_KW 101409#define TK_ANY 102410#define TK_BITAND 103411#define TK_BITOR 104412#define TK_LSHIFT 105413#define TK_RSHIFT 106414#define TK_PLUS 107415#define TK_MINUS 108416#define TK_STAR 109417#define TK_SLASH 110418#define TK_REM 111419#define TK_CONCAT 112420#define TK_PTR 113421#define TK_COLLATE 114422#define TK_BITNOT 115423#define TK_ON 116424#define TK_INDEXED 117425#define TK_STRING 118426#define TK_JOIN_KW 119427#define TK_CONSTRAINT 120428#define TK_DEFAULT 121429#define TK_NULL 122430#define TK_PRIMARY 123431#define TK_UNIQUE 124432#define TK_CHECK 125433#define TK_REFERENCES 126434#define TK_AUTOINCR 127435#define TK_INSERT 128436#define TK_DELETE 129437#define TK_UPDATE 130438#define TK_SET 131439#define TK_DEFERRABLE 132440#define TK_FOREIGN 133441#define TK_DROP 134442#define TK_UNION 135443#define TK_ALL 136444#define TK_EXCEPT 137445#define TK_INTERSECT 138446#define TK_SELECT 139447#define TK_VALUES 140448#define TK_DISTINCT 141449#define TK_DOT 142450#define TK_FROM 143451#define TK_JOIN 144452#define TK_USING 145453#define TK_ORDER 146454#define TK_GROUP 147455#define TK_HAVING 148456#define TK_LIMIT 149457#define TK_WHERE 150458#define TK_RETURNING 151459#define TK_INTO 152460#define TK_NOTHING 153461#define TK_FLOAT 154462#define TK_BLOB 155463#define TK_INTEGER 156464#define TK_VARIABLE 157465#define TK_CASE 158466#define TK_WHEN 159467#define TK_THEN 160468#define TK_ELSE 161469#define TK_INDEX 162470#define TK_ALTER 163471#define TK_ADD 164472#define TK_WINDOW 165473#define TK_OVER 166474#define TK_FILTER 167475#define TK_COLUMN 168476#define TK_AGG_FUNCTION 169477#define TK_AGG_COLUMN 170478#define TK_TRUEFALSE 171479#define TK_FUNCTION 172480#define TK_UPLUS 173481#define TK_UMINUS 174482#define TK_TRUTH 175483#define TK_REGISTER 176484#define TK_VECTOR 177485#define TK_SELECT_COLUMN 178486#define TK_IF_NULL_ROW 179487#define TK_ASTERISK 180488#define TK_SPAN 181489#define TK_ERROR 182490#define TK_QNUMBER 183491#define TK_SPACE 184492#define TK_COMMENT 185493#define TK_ILLEGAL 186494#endif495/**************** End token definitions ***************************************/496 497/* The next sections is a series of control #defines.498** various aspects of the generated parser.499** YYCODETYPE is the data type used to store the integer codes500** that represent terminal and non-terminal symbols.501** "unsigned char" is used if there are fewer than502** 256 symbols. Larger types otherwise.503** YYNOCODE is a number of type YYCODETYPE that is not used for504** any terminal or nonterminal symbol.505** YYFALLBACK If defined, this indicates that one or more tokens506** (also known as: "terminal symbols") have fall-back507** values which should be used if the original symbol508** would not parse. This permits keywords to sometimes509** be used as identifiers, for example.510** YYACTIONTYPE is the data type used for "action codes" - numbers511** that indicate what to do in response to the next512** token.513** sqlite3ParserTOKENTYPE is the data type used for minor type for terminal514** symbols. Background: A "minor type" is a semantic515** value associated with a terminal or non-terminal516** symbols. For example, for an "ID" terminal symbol,517** the minor type might be the name of the identifier.518** Each non-terminal can have a different minor type.519** Terminal symbols all have the same minor type, though.520** This macros defines the minor type for terminal 521** symbols.522** YYMINORTYPE is the data type used for all minor types.523** This is typically a union of many types, one of524** which is sqlite3ParserTOKENTYPE. The entry in the union525** for terminal symbols is called "yy0".526** YYSTACKDEPTH is the maximum depth of the parser's stack. If527** zero the stack is dynamically sized using realloc()528** sqlite3ParserARG_SDECL A static variable declaration for the %extra_argument529** sqlite3ParserARG_PDECL A parameter declaration for the %extra_argument530** sqlite3ParserARG_PARAM Code to pass %extra_argument as a subroutine parameter531** sqlite3ParserARG_STORE Code to store %extra_argument into yypParser532** sqlite3ParserARG_FETCH Code to extract %extra_argument from yypParser533** sqlite3ParserCTX_* As sqlite3ParserARG_ except for %extra_context534** YYREALLOC Name of the realloc() function to use535** YYFREE Name of the free() function to use536** YYDYNSTACK True if stack space should be extended on heap537** YYERRORSYMBOL is the code number of the error symbol. If not538** defined, then do no error processing.539** YYNSTATE the combined number of states.540** YYNRULE the number of rules in the grammar541** YYNTOKEN Number of terminal symbols542** YY_MAX_SHIFT Maximum value for shift actions543** YY_MIN_SHIFTREDUCE Minimum value for shift-reduce actions544** YY_MAX_SHIFTREDUCE Maximum value for shift-reduce actions545** YY_ERROR_ACTION The yy_action[] code for syntax error546** YY_ACCEPT_ACTION The yy_action[] code for accept547** YY_NO_ACTION The yy_action[] code for no-op548** YY_MIN_REDUCE Minimum value for reduce actions549** YY_MAX_REDUCE Maximum value for reduce actions550** YY_MIN_DSTRCTR Minimum symbol value that has a destructor551** YY_MAX_DSTRCTR Maximum symbol value that has a destructor552*/553#ifndef INTERFACE554# define INTERFACE 1555#endif556/************* Begin control #defines *****************************************/557#define YYCODETYPE unsigned short int558#define YYNOCODE 322559#define YYACTIONTYPE unsigned short int560#define YYWILDCARD 102561#define sqlite3ParserTOKENTYPE Token562typedef union {563 int yyinit;564 sqlite3ParserTOKENTYPE yy0;565 ExprList* yy14;566 With* yy59;567 Cte* yy67;568 Upsert* yy122;569 IdList* yy132;570 int yy144;571 const char* yy168;572 SrcList* yy203;573 Window* yy211;574 OnOrUsing yy269;575 struct TrigEvent yy286;576 struct {int value; int mask;} yy383;577 u32 yy391;578 TriggerStep* yy427;579 Expr* yy454;580 u8 yy462;581 struct FrameBound yy509;582 Select* yy555;583} YYMINORTYPE;584#ifndef YYSTACKDEPTH585#define YYSTACKDEPTH 50586#endif587#define sqlite3ParserARG_SDECL588#define sqlite3ParserARG_PDECL589#define sqlite3ParserARG_PARAM590#define sqlite3ParserARG_FETCH591#define sqlite3ParserARG_STORE592#undef YYREALLOC593#define YYREALLOC parserStackRealloc594#undef YYFREE595#define YYFREE parserStackFree596#undef YYDYNSTACK597#define YYDYNSTACK 1598#undef YYSIZELIMIT599#define YYSIZELIMIT parserStackSizeLimit600#define sqlite3ParserCTX(P) ((P)->pParse)601#define sqlite3ParserCTX_SDECL Parse *pParse;602#define sqlite3ParserCTX_PDECL ,Parse *pParse603#define sqlite3ParserCTX_PARAM ,pParse604#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;605#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;606#undef YYERRORSYMBOL607#undef YYERRSYMDT608#undef YYFALLBACK609#define YYFALLBACK 1610#define YYNSTATE 600611#define YYNRULE 412612#define YYNRULE_WITH_ACTION 348613#define YYNTOKEN 187614#define YY_MAX_SHIFT 599615#define YY_MIN_SHIFTREDUCE 867616#define YY_MAX_SHIFTREDUCE 1278617#define YY_ERROR_ACTION 1279618#define YY_ACCEPT_ACTION 1280619#define YY_NO_ACTION 1281620#define YY_MIN_REDUCE 1282621#define YY_MAX_REDUCE 1693622#define YY_MIN_DSTRCTR 206623#define YY_MAX_DSTRCTR 319624/************* End control #defines *******************************************/625#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))626 627/* Define the yytestcase() macro to be a no-op if is not already defined628** otherwise.629**630** Applications can choose to define yytestcase() in the %include section631** to a macro that can assist in verifying code coverage. For production632** code the yytestcase() macro should be turned off. But it is useful633** for testing.634*/635#ifndef yytestcase636# define yytestcase(X)637#endif638 639/* Macro to determine if stack space has the ability to grow using640** heap memory.641*/642#if YYSTACKDEPTH<=0 || YYDYNSTACK643# define YYGROWABLESTACK 1644#else645# define YYGROWABLESTACK 0646#endif647 648/* Guarantee a minimum number of initial stack slots.649*/650#if YYSTACKDEPTH<=0651# undef YYSTACKDEPTH652# define YYSTACKDEPTH 2 /* Need a minimum stack size */653#endif654 655 656/* Next are the tables used to determine what action to take based on the657** current state and lookahead token. These tables are used to implement658** functions that take a state number and lookahead value and return an659** action integer. 660**661** Suppose the action integer is N. Then the action is determined as662** follows663**664** 0 <= N <= YY_MAX_SHIFT Shift N. That is, push the lookahead665** token onto the stack and goto state N.666**667** N between YY_MIN_SHIFTREDUCE Shift to an arbitrary state then668** and YY_MAX_SHIFTREDUCE reduce by rule N-YY_MIN_SHIFTREDUCE.669**670** N == YY_ERROR_ACTION A syntax error has occurred.671**672** N == YY_ACCEPT_ACTION The parser accepts its input.673**674** N == YY_NO_ACTION No such action. Denotes unused675** slots in the yy_action[] table.676**677** N between YY_MIN_REDUCE Reduce by rule N-YY_MIN_REDUCE678** and YY_MAX_REDUCE679**680** The action table is constructed as a single large table named yy_action[].681** Given state S and lookahead X, the action is computed as either:682**683** (A) N = yy_action[ yy_shift_ofst[S] + X ]684** (B) N = yy_default[S]685**686** The (A) formula is preferred. The B formula is used instead if687** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X.688**689** The formulas above are for computing the action when the lookahead is690** a terminal symbol. If the lookahead is a non-terminal (as occurs after691** a reduce action) then the yy_reduce_ofst[] array is used in place of692** the yy_shift_ofst[] array.693**694** The following are the tables generated in this section:695**696** yy_action[] A single table containing all actions.697** yy_lookahead[] A table containing the lookahead for each entry in698** yy_action. Used to detect hash collisions.699** yy_shift_ofst[] For each state, the offset into yy_action for700** shifting terminals.701** yy_reduce_ofst[] For each state, the offset into yy_action for702** shifting non-terminals after a reduce.703** yy_default[] Default action for each state.704**705*********** Begin parsing tables **********************************************/706#define YY_ACTTAB_COUNT (2379)707static const YYACTIONTYPE yy_action[] = {708 /* 0 */ 134, 131, 238, 290, 290, 1353, 593, 1332, 478, 1606,709 /* 10 */ 593, 1315, 593, 7, 593, 1353, 590, 593, 579, 424,710 /* 20 */ 1566, 134, 131, 238, 1318, 541, 478, 477, 575, 84,711 /* 30 */ 84, 1005, 303, 84, 84, 51, 51, 63, 63, 1006,712 /* 40 */ 84, 84, 498, 141, 142, 93, 442, 1254, 1254, 1085,713 /* 50 */ 1088, 1075, 1075, 139, 139, 140, 140, 140, 140, 424,714 /* 60 */ 296, 296, 498, 296, 296, 567, 553, 296, 296, 1306,715 /* 70 */ 574, 1358, 1358, 590, 542, 579, 590, 574, 579, 548,716 /* 80 */ 590, 1304, 579, 141, 142, 93, 576, 1254, 1254, 1085,717 /* 90 */ 1088, 1075, 1075, 139, 139, 140, 140, 140, 140, 399,718 /* 100 */ 478, 395, 6, 138, 138, 138, 138, 137, 137, 136,719 /* 110 */ 136, 136, 135, 132, 463, 44, 342, 593, 305, 1127,720 /* 120 */ 1280, 1, 1, 599, 2, 1284, 598, 1200, 1284, 1200,721 /* 130 */ 330, 424, 158, 330, 1613, 158, 390, 116, 308, 1366,722 /* 140 */ 51, 51, 1366, 138, 138, 138, 138, 137, 137, 136,723 /* 150 */ 136, 136, 135, 132, 463, 141, 142, 93, 515, 1254,724 /* 160 */ 1254, 1085, 1088, 1075, 1075, 139, 139, 140, 140, 140,725 /* 170 */ 140, 1230, 329, 584, 296, 296, 212, 296, 296, 568,726 /* 180 */ 568, 488, 143, 1072, 1072, 1086, 1089, 590, 1195, 579,727 /* 190 */ 590, 340, 579, 140, 140, 140, 140, 133, 392, 564,728 /* 200 */ 536, 1195, 250, 425, 1195, 250, 137, 137, 136, 136,729 /* 210 */ 136, 135, 132, 463, 291, 138, 138, 138, 138, 137,730 /* 220 */ 137, 136, 136, 136, 135, 132, 463, 966, 1230, 1231,731 /* 230 */ 1230, 412, 965, 467, 412, 424, 467, 489, 357, 1611,732 /* 240 */ 391, 138, 138, 138, 138, 137, 137, 136, 136, 136,733 /* 250 */ 135, 132, 463, 463, 134, 131, 238, 555, 1076, 141,734 /* 260 */ 142, 93, 593, 1254, 1254, 1085, 1088, 1075, 1075, 139,735 /* 270 */ 139, 140, 140, 140, 140, 1317, 134, 131, 238, 424,736 /* 280 */ 549, 1597, 1531, 333, 97, 83, 83, 140, 140, 140,737 /* 290 */ 140, 138, 138, 138, 138, 137, 137, 136, 136, 136,738 /* 300 */ 135, 132, 463, 141, 142, 93, 1657, 1254, 1254, 1085,739 /* 310 */ 1088, 1075, 1075, 139, 139, 140, 140, 140, 140, 138,740 /* 320 */ 138, 138, 138, 137, 137, 136, 136, 136, 135, 132,741 /* 330 */ 463, 591, 1230, 958, 958, 138, 138, 138, 138, 137,742 /* 340 */ 137, 136, 136, 136, 135, 132, 463, 44, 398, 547,743 /* 350 */ 1306, 136, 136, 136, 135, 132, 463, 386, 593, 442,744 /* 360 */ 595, 145, 595, 138, 138, 138, 138, 137, 137, 136,745 /* 370 */ 136, 136, 135, 132, 463, 500, 1230, 112, 550, 460,746 /* 380 */ 459, 51, 51, 424, 296, 296, 479, 334, 1259, 1230,747 /* 390 */ 1231, 1230, 1599, 1261, 388, 312, 444, 590, 246, 579,748 /* 400 */ 546, 1260, 271, 235, 329, 584, 551, 141, 142, 93,749 /* 410 */ 429, 1254, 1254, 1085, 1088, 1075, 1075, 139, 139, 140,750 /* 420 */ 140, 140, 140, 22, 22, 1230, 1262, 424, 1262, 216,751 /* 430 */ 296, 296, 98, 1230, 1231, 1230, 264, 884, 45, 528,752 /* 440 */ 525, 524, 1041, 590, 1269, 579, 421, 420, 393, 523,753 /* 450 */ 44, 141, 142, 93, 498, 1254, 1254, 1085, 1088, 1075,754 /* 460 */ 1075, 139, 139, 140, 140, 140, 140, 138, 138, 138,755 /* 470 */ 138, 137, 137, 136, 136, 136, 135, 132, 463, 593,756 /* 480 */ 1611, 561, 1230, 1231, 1230, 23, 264, 515, 200, 528,757 /* 490 */ 525, 524, 127, 585, 509, 4, 355, 487, 506, 523,758 /* 500 */ 593, 498, 84, 84, 134, 131, 238, 329, 584, 588,759 /* 510 */ 1627, 138, 138, 138, 138, 137, 137, 136, 136, 136,760 /* 520 */ 135, 132, 463, 19, 19, 435, 1230, 1460, 297, 297,761 /* 530 */ 311, 424, 1565, 464, 1631, 599, 2, 1284, 437, 574,762 /* 540 */ 1107, 590, 330, 579, 158, 582, 489, 357, 573, 593,763 /* 550 */ 592, 1366, 409, 1274, 1230, 141, 142, 93, 1364, 1254,764 /* 560 */ 1254, 1085, 1088, 1075, 1075, 139, 139, 140, 140, 140,765 /* 570 */ 140, 389, 84, 84, 1062, 567, 1230, 313, 1523, 593,766 /* 580 */ 125, 125, 970, 1230, 1231, 1230, 296, 296, 126, 46,767 /* 590 */ 464, 594, 464, 296, 296, 1050, 1230, 218, 439, 590,768 /* 600 */ 1604, 579, 84, 84, 7, 403, 590, 515, 579, 325,769 /* 610 */ 417, 1230, 1231, 1230, 250, 138, 138, 138, 138, 137,770 /* 620 */ 137, 136, 136, 136, 135, 132, 463, 1050, 1050, 1052,771 /* 630 */ 1053, 35, 1275, 1230, 1231, 1230, 424, 1370, 993, 574,772 /* 640 */ 371, 414, 274, 412, 1597, 467, 1302, 552, 451, 590,773 /* 650 */ 543, 579, 1530, 1230, 1231, 1230, 1214, 201, 409, 1174,774 /* 660 */ 141, 142, 93, 223, 1254, 1254, 1085, 1088, 1075, 1075,775 /* 670 */ 139, 139, 140, 140, 140, 140, 296, 296, 1250, 593,776 /* 680 */ 424, 296, 296, 236, 529, 296, 296, 515, 100, 590,777 /* 690 */ 1600, 579, 48, 1605, 590, 1230, 579, 7, 590, 577,778 /* 700 */ 579, 904, 84, 84, 141, 142, 93, 496, 1254, 1254,779 /* 710 */ 1085, 1088, 1075, 1075, 139, 139, 140, 140, 140, 140,780 /* 720 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,781 /* 730 */ 132, 463, 1365, 1230, 296, 296, 1250, 115, 1275, 326,782 /* 740 */ 233, 539, 1062, 40, 282, 127, 585, 590, 4, 579,783 /* 750 */ 329, 584, 1230, 1231, 1230, 1598, 593, 388, 904, 1051,784 /* 760 */ 1356, 1356, 588, 1050, 138, 138, 138, 138, 137, 137,785 /* 770 */ 136, 136, 136, 135, 132, 463, 185, 593, 1230, 19,786 /* 780 */ 19, 1230, 971, 1597, 424, 1651, 464, 129, 908, 1195,787 /* 790 */ 1230, 1231, 1230, 1325, 443, 1050, 1050, 1052, 582, 1603,788 /* 800 */ 149, 149, 1195, 7, 5, 1195, 1687, 410, 141, 142,789 /* 810 */ 93, 1536, 1254, 1254, 1085, 1088, 1075, 1075, 139, 139,790 /* 820 */ 140, 140, 140, 140, 1214, 397, 593, 1062, 424, 1536,791 /* 830 */ 1538, 50, 901, 125, 125, 1230, 1231, 1230, 1230, 1231,792 /* 840 */ 1230, 126, 1230, 464, 594, 464, 515, 1230, 1050, 84,793 /* 850 */ 84, 3, 141, 142, 93, 924, 1254, 1254, 1085, 1088,794 /* 860 */ 1075, 1075, 139, 139, 140, 140, 140, 140, 138, 138,795 /* 870 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 463,796 /* 880 */ 1050, 1050, 1052, 1053, 35, 442, 457, 532, 433, 1230,797 /* 890 */ 1062, 1361, 540, 540, 1598, 925, 388, 7, 1129, 1230,798 /* 900 */ 1231, 1230, 1129, 1536, 1230, 1231, 1230, 1051, 570, 1214,799 /* 910 */ 593, 1050, 138, 138, 138, 138, 137, 137, 136, 136,800 /* 920 */ 136, 135, 132, 463, 6, 185, 1195, 1230, 231, 593,801 /* 930 */ 382, 992, 424, 151, 151, 510, 1213, 557, 482, 1195,802 /* 940 */ 381, 160, 1195, 1050, 1050, 1052, 1230, 1231, 1230, 422,803 /* 950 */ 593, 447, 84, 84, 593, 217, 141, 142, 93, 593,804 /* 960 */ 1254, 1254, 1085, 1088, 1075, 1075, 139, 139, 140, 140,805 /* 970 */ 140, 140, 1214, 19, 19, 593, 424, 19, 19, 442,806 /* 980 */ 1063, 442, 19, 19, 1230, 1231, 1230, 515, 445, 458,807 /* 990 */ 1597, 386, 315, 1175, 1685, 556, 1685, 450, 84, 84,808 /* 1000 */ 141, 142, 93, 505, 1254, 1254, 1085, 1088, 1075, 1075,809 /* 1010 */ 139, 139, 140, 140, 140, 140, 138, 138, 138, 138,810 /* 1020 */ 137, 137, 136, 136, 136, 135, 132, 463, 442, 1147,811 /* 1030 */ 454, 1597, 362, 1041, 593, 462, 1460, 1233, 47, 1393,812 /* 1040 */ 324, 565, 565, 115, 1148, 449, 7, 460, 459, 307,813 /* 1050 */ 375, 354, 593, 113, 593, 329, 584, 19, 19, 1149,814 /* 1060 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,815 /* 1070 */ 132, 463, 209, 1173, 563, 19, 19, 19, 19, 49,816 /* 1080 */ 424, 944, 1175, 1686, 1046, 1686, 218, 355, 484, 343,817 /* 1090 */ 210, 945, 569, 562, 1262, 1233, 1262, 490, 314, 423,818 /* 1100 */ 424, 1598, 1206, 388, 141, 142, 93, 440, 1254, 1254,819 /* 1110 */ 1085, 1088, 1075, 1075, 139, 139, 140, 140, 140, 140,820 /* 1120 */ 352, 316, 531, 316, 141, 142, 93, 549, 1254, 1254,821 /* 1130 */ 1085, 1088, 1075, 1075, 139, 139, 140, 140, 140, 140,822 /* 1140 */ 446, 10, 1598, 274, 388, 915, 281, 299, 383, 534,823 /* 1150 */ 378, 533, 269, 593, 1206, 587, 587, 587, 374, 293,824 /* 1160 */ 1579, 991, 1173, 302, 138, 138, 138, 138, 137, 137,825 /* 1170 */ 136, 136, 136, 135, 132, 463, 53, 53, 520, 1250,826 /* 1180 */ 593, 1147, 1576, 431, 138, 138, 138, 138, 137, 137,827 /* 1190 */ 136, 136, 136, 135, 132, 463, 1148, 301, 593, 1577,828 /* 1200 */ 593, 1307, 431, 54, 54, 593, 268, 593, 461, 461,829 /* 1210 */ 461, 1149, 347, 492, 424, 135, 132, 463, 1146, 1195,830 /* 1220 */ 474, 68, 68, 69, 69, 550, 332, 287, 21, 21,831 /* 1230 */ 55, 55, 1195, 581, 424, 1195, 309, 1250, 141, 142,832 /* 1240 */ 93, 119, 1254, 1254, 1085, 1088, 1075, 1075, 139, 139,833 /* 1250 */ 140, 140, 140, 140, 593, 237, 480, 1476, 141, 142,834 /* 1260 */ 93, 593, 1254, 1254, 1085, 1088, 1075, 1075, 139, 139,835 /* 1270 */ 140, 140, 140, 140, 344, 430, 346, 70, 70, 494,836 /* 1280 */ 991, 1132, 1132, 512, 56, 56, 1269, 593, 268, 593,837 /* 1290 */ 369, 374, 593, 481, 215, 384, 1624, 481, 138, 138,838 /* 1300 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 463,839 /* 1310 */ 71, 71, 72, 72, 225, 73, 73, 593, 138, 138,840 /* 1320 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 463,841 /* 1330 */ 586, 431, 593, 872, 873, 874, 593, 911, 593, 1602,842 /* 1340 */ 74, 74, 593, 7, 1460, 242, 593, 306, 424, 1578,843 /* 1350 */ 472, 306, 364, 219, 367, 75, 75, 430, 345, 57,844 /* 1360 */ 57, 58, 58, 432, 187, 59, 59, 593, 424, 61,845 /* 1370 */ 61, 1475, 141, 142, 93, 123, 1254, 1254, 1085, 1088,846 /* 1380 */ 1075, 1075, 139, 139, 140, 140, 140, 140, 424, 570,847 /* 1390 */ 62, 62, 141, 142, 93, 911, 1254, 1254, 1085, 1088,848 /* 1400 */ 1075, 1075, 139, 139, 140, 140, 140, 140, 161, 384,849 /* 1410 */ 1624, 1474, 141, 130, 93, 441, 1254, 1254, 1085, 1088,850 /* 1420 */ 1075, 1075, 139, 139, 140, 140, 140, 140, 267, 266,851 /* 1430 */ 265, 1460, 138, 138, 138, 138, 137, 137, 136, 136,852 /* 1440 */ 136, 135, 132, 463, 593, 1336, 593, 1269, 1460, 384,853 /* 1450 */ 1624, 231, 138, 138, 138, 138, 137, 137, 136, 136,854 /* 1460 */ 136, 135, 132, 463, 593, 163, 593, 76, 76, 77,855 /* 1470 */ 77, 593, 138, 138, 138, 138, 137, 137, 136, 136,856 /* 1480 */ 136, 135, 132, 463, 475, 593, 483, 78, 78, 20,857 /* 1490 */ 20, 1249, 424, 491, 79, 79, 495, 422, 295, 235,858 /* 1500 */ 1574, 38, 511, 896, 422, 335, 240, 422, 147, 147,859 /* 1510 */ 112, 593, 424, 593, 101, 222, 991, 142, 93, 455,860 /* 1520 */ 1254, 1254, 1085, 1088, 1075, 1075, 139, 139, 140, 140,861 /* 1530 */ 140, 140, 593, 39, 148, 148, 80, 80, 93, 551,862 /* 1540 */ 1254, 1254, 1085, 1088, 1075, 1075, 139, 139, 140, 140,863 /* 1550 */ 140, 140, 328, 923, 922, 64, 64, 502, 1656, 1005,864 /* 1560 */ 933, 896, 124, 422, 121, 254, 593, 1006, 593, 226,865 /* 1570 */ 593, 127, 585, 164, 4, 16, 138, 138, 138, 138,866 /* 1580 */ 137, 137, 136, 136, 136, 135, 132, 463, 588, 81,867 /* 1590 */ 81, 65, 65, 82, 82, 593, 138, 138, 138, 138,868 /* 1600 */ 137, 137, 136, 136, 136, 135, 132, 463, 593, 226,869 /* 1610 */ 237, 966, 464, 593, 298, 593, 965, 593, 66, 66,870 /* 1620 */ 593, 1170, 593, 411, 582, 353, 469, 115, 593, 471,871 /* 1630 */ 169, 173, 173, 593, 44, 991, 174, 174, 89, 89,872 /* 1640 */ 67, 67, 593, 85, 85, 150, 150, 1114, 1043, 593,873 /* 1650 */ 273, 86, 86, 1062, 593, 503, 171, 171, 593, 125,874 /* 1660 */ 125, 497, 593, 273, 336, 152, 152, 126, 1335, 464,875 /* 1670 */ 594, 464, 146, 146, 1050, 593, 545, 172, 172, 593,876 /* 1680 */ 1054, 165, 165, 256, 339, 156, 156, 127, 585, 1586,877 /* 1690 */ 4, 329, 584, 499, 358, 273, 115, 348, 155, 155,878 /* 1700 */ 930, 931, 153, 153, 588, 1114, 1050, 1050, 1052, 1053,879 /* 1710 */ 35, 1554, 521, 593, 270, 1008, 1009, 9, 593, 372,880 /* 1720 */ 593, 115, 593, 168, 593, 115, 593, 1110, 464, 270,881 /* 1730 */ 996, 964, 273, 129, 1645, 1214, 154, 154, 1054, 1404,882 /* 1740 */ 582, 88, 88, 90, 90, 87, 87, 52, 52, 60,883 /* 1750 */ 60, 1405, 504, 537, 559, 1179, 961, 507, 129, 558,884 /* 1760 */ 127, 585, 1126, 4, 1126, 1125, 894, 1125, 162, 1062,885 /* 1770 */ 963, 359, 129, 1401, 363, 125, 125, 588, 366, 368,886 /* 1780 */ 370, 1349, 1334, 126, 1333, 464, 594, 464, 377, 387,887 /* 1790 */ 1050, 1391, 1414, 1618, 1459, 1387, 1399, 208, 580, 1464,888 /* 1800 */ 1314, 464, 243, 516, 1305, 1293, 1384, 1292, 1294, 1638,889 /* 1810 */ 288, 170, 228, 582, 12, 408, 321, 322, 241, 323,890 /* 1820 */ 245, 1446, 1050, 1050, 1052, 1053, 35, 559, 304, 350,891 /* 1830 */ 351, 501, 560, 127, 585, 1441, 4, 1451, 1434, 310,892 /* 1840 */ 1450, 526, 1062, 1332, 415, 380, 232, 1527, 125, 125,893 /* 1850 */ 588, 1214, 1396, 356, 1526, 583, 126, 1397, 464, 594,894 /* 1860 */ 464, 1641, 535, 1050, 1581, 1395, 1269, 1583, 1582, 213,895 /* 1870 */ 402, 277, 214, 227, 464, 1573, 239, 1571, 1266, 1394,896 /* 1880 */ 434, 198, 100, 224, 96, 183, 582, 191, 485, 193,897 /* 1890 */ 486, 194, 195, 196, 519, 1050, 1050, 1052, 1053, 35,898 /* 1900 */ 559, 113, 252, 413, 1447, 558, 493, 13, 1455, 416,899 /* 1910 */ 1453, 1452, 14, 202, 1521, 1062, 1532, 508, 258, 106,900 /* 1920 */ 514, 125, 125, 99, 1214, 1543, 289, 260, 206, 126,901 /* 1930 */ 365, 464, 594, 464, 361, 517, 1050, 261, 448, 1295,902 /* 1940 */ 262, 418, 1352, 1351, 108, 1350, 1655, 1654, 1343, 915,903 /* 1950 */ 419, 1322, 233, 452, 319, 379, 1321, 453, 1623, 320,904 /* 1960 */ 1320, 275, 1653, 544, 276, 1609, 1608, 1342, 1050, 1050,905 /* 1970 */ 1052, 1053, 35, 1630, 1218, 466, 385, 456, 300, 1419,906 /* 1980 */ 144, 1418, 570, 407, 407, 406, 284, 404, 11, 1508,907 /* 1990 */ 881, 396, 120, 127, 585, 394, 4, 1214, 327, 114,908 /* 2000 */ 1375, 1374, 220, 247, 400, 338, 401, 554, 42, 1224,909 /* 2010 */ 588, 596, 283, 337, 285, 286, 188, 597, 1290, 1285,910 /* 2020 */ 175, 1558, 176, 1559, 1557, 1556, 159, 317, 229, 177,911 /* 2030 */ 868, 230, 91, 465, 464, 221, 331, 468, 1165, 470,912 /* 2040 */ 473, 94, 244, 95, 249, 189, 582, 1124, 1122, 341,913 /* 2050 */ 427, 190, 178, 1249, 179, 43, 192, 947, 349, 428,914 /* 2060 */ 1138, 197, 251, 180, 181, 436, 102, 182, 438, 103,915 /* 2070 */ 104, 199, 248, 1140, 253, 1062, 105, 255, 1137, 166,916 /* 2080 */ 24, 125, 125, 257, 1264, 273, 360, 513, 259, 126,917 /* 2090 */ 15, 464, 594, 464, 204, 883, 1050, 518, 263, 373,918 /* 2100 */ 381, 92, 585, 1130, 4, 203, 205, 426, 107, 522,919 /* 2110 */ 25, 26, 329, 584, 913, 572, 527, 376, 588, 926,920 /* 2120 */ 530, 109, 184, 318, 167, 110, 27, 538, 1050, 1050,921 /* 2130 */ 1052, 1053, 35, 1211, 1091, 17, 476, 111, 1181, 234,922 /* 2140 */ 292, 1180, 464, 294, 207, 994, 129, 1201, 272, 1000,923 /* 2150 */ 28, 1197, 29, 30, 582, 1199, 1205, 1214, 31, 1204,924 /* 2160 */ 32, 1186, 41, 566, 33, 1105, 211, 8, 115, 1092,925 /* 2170 */ 1090, 1094, 34, 278, 578, 1095, 117, 122, 118, 1145,926 /* 2180 */ 36, 18, 128, 1062, 1055, 895, 957, 37, 589, 125,927 /* 2190 */ 125, 279, 186, 280, 1646, 157, 405, 126, 1220, 464,928 /* 2200 */ 594, 464, 1218, 466, 1050, 1219, 300, 1281, 1281, 1281,929 /* 2210 */ 1281, 407, 407, 406, 284, 404, 1281, 1281, 881, 1281,930 /* 2220 */ 300, 1281, 1281, 571, 1281, 407, 407, 406, 284, 404,931 /* 2230 */ 1281, 247, 881, 338, 1281, 1281, 1050, 1050, 1052, 1053,932 /* 2240 */ 35, 337, 1281, 1281, 1281, 247, 1281, 338, 1281, 1281,933 /* 2250 */ 1281, 1281, 1281, 1281, 1281, 337, 1281, 1281, 1281, 1281,934 /* 2260 */ 1281, 1281, 1281, 1281, 1281, 1214, 1281, 1281, 1281, 1281,935 /* 2270 */ 1281, 1281, 249, 1281, 1281, 1281, 1281, 1281, 1281, 1281,936 /* 2280 */ 178, 1281, 1281, 43, 1281, 1281, 249, 1281, 1281, 1281,937 /* 2290 */ 1281, 1281, 1281, 1281, 178, 1281, 1281, 43, 1281, 1281,938 /* 2300 */ 248, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,939 /* 2310 */ 1281, 1281, 1281, 1281, 248, 1281, 1281, 1281, 1281, 1281,940 /* 2320 */ 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,941 /* 2330 */ 1281, 1281, 1281, 1281, 1281, 426, 1281, 1281, 1281, 1281,942 /* 2340 */ 329, 584, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 426,943 /* 2350 */ 1281, 1281, 1281, 1281, 329, 584, 1281, 1281, 1281, 1281,944 /* 2360 */ 1281, 1281, 1281, 1281, 476, 1281, 1281, 1281, 1281, 1281,945 /* 2370 */ 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 476,946};947static const YYCODETYPE yy_lookahead[] = {948 /* 0 */ 277, 278, 279, 241, 242, 225, 195, 227, 195, 312,949 /* 10 */ 195, 218, 195, 316, 195, 235, 254, 195, 256, 19,950 /* 20 */ 297, 277, 278, 279, 218, 206, 213, 214, 206, 218,951 /* 30 */ 219, 31, 206, 218, 219, 218, 219, 218, 219, 39,952 /* 40 */ 218, 219, 195, 43, 44, 45, 195, 47, 48, 49,953 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 19,954 /* 60 */ 241, 242, 195, 241, 242, 195, 255, 241, 242, 195,955 /* 70 */ 255, 237, 238, 254, 255, 256, 254, 255, 256, 264,956 /* 80 */ 254, 207, 256, 43, 44, 45, 264, 47, 48, 49,957 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 251,958 /* 100 */ 287, 253, 215, 103, 104, 105, 106, 107, 108, 109,959 /* 110 */ 110, 111, 112, 113, 114, 82, 265, 195, 271, 11,960 /* 120 */ 187, 188, 189, 190, 191, 192, 190, 87, 192, 89,961 /* 130 */ 197, 19, 199, 197, 317, 199, 319, 25, 271, 206,962 /* 140 */ 218, 219, 206, 103, 104, 105, 106, 107, 108, 109,963 /* 150 */ 110, 111, 112, 113, 114, 43, 44, 45, 195, 47,964 /* 160 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,965 /* 170 */ 58, 60, 139, 140, 241, 242, 289, 241, 242, 309,966 /* 180 */ 310, 294, 70, 47, 48, 49, 50, 254, 77, 256,967 /* 190 */ 254, 195, 256, 55, 56, 57, 58, 59, 221, 88,968 /* 200 */ 109, 90, 269, 240, 93, 269, 107, 108, 109, 110,969 /* 210 */ 111, 112, 113, 114, 215, 103, 104, 105, 106, 107,970 /* 220 */ 108, 109, 110, 111, 112, 113, 114, 136, 117, 118,971 /* 230 */ 119, 298, 141, 300, 298, 19, 300, 129, 130, 317,972 /* 240 */ 318, 103, 104, 105, 106, 107, 108, 109, 110, 111,973 /* 250 */ 112, 113, 114, 114, 277, 278, 279, 146, 122, 43,974 /* 260 */ 44, 45, 195, 47, 48, 49, 50, 51, 52, 53,975 /* 270 */ 54, 55, 56, 57, 58, 218, 277, 278, 279, 19,976 /* 280 */ 19, 195, 286, 23, 68, 218, 219, 55, 56, 57,977 /* 290 */ 58, 103, 104, 105, 106, 107, 108, 109, 110, 111,978 /* 300 */ 112, 113, 114, 43, 44, 45, 232, 47, 48, 49,979 /* 310 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 103,980 /* 320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,981 /* 330 */ 114, 135, 60, 137, 138, 103, 104, 105, 106, 107,982 /* 340 */ 108, 109, 110, 111, 112, 113, 114, 82, 281, 206,983 /* 350 */ 195, 109, 110, 111, 112, 113, 114, 195, 195, 195,984 /* 360 */ 205, 22, 207, 103, 104, 105, 106, 107, 108, 109,985 /* 370 */ 110, 111, 112, 113, 114, 195, 60, 116, 117, 107,986 /* 380 */ 108, 218, 219, 19, 241, 242, 121, 23, 116, 117,987 /* 390 */ 118, 119, 306, 121, 308, 206, 234, 254, 15, 256,988 /* 400 */ 195, 129, 259, 260, 139, 140, 145, 43, 44, 45,989 /* 410 */ 200, 47, 48, 49, 50, 51, 52, 53, 54, 55,990 /* 420 */ 56, 57, 58, 218, 219, 60, 154, 19, 156, 265,991 /* 430 */ 241, 242, 24, 117, 118, 119, 120, 21, 73, 123,992 /* 440 */ 124, 125, 74, 254, 61, 256, 107, 108, 221, 133,993 /* 450 */ 82, 43, 44, 45, 195, 47, 48, 49, 50, 51,994 /* 460 */ 52, 53, 54, 55, 56, 57, 58, 103, 104, 105,995 /* 470 */ 106, 107, 108, 109, 110, 111, 112, 113, 114, 195,996 /* 480 */ 317, 318, 117, 118, 119, 22, 120, 195, 22, 123,997 /* 490 */ 124, 125, 19, 20, 284, 22, 128, 81, 288, 133,998 /* 500 */ 195, 195, 218, 219, 277, 278, 279, 139, 140, 36,999 /* 510 */ 195, 103, 104, 105, 106, 107, 108, 109, 110, 111,1000 /* 520 */ 112, 113, 114, 218, 219, 62, 60, 195, 241, 242,1001 /* 530 */ 271, 19, 240, 60, 189, 190, 191, 192, 233, 255,1002 /* 540 */ 124, 254, 197, 256, 199, 72, 129, 130, 264, 195,1003 /* 550 */ 195, 206, 22, 23, 60, 43, 44, 45, 206, 47,1004 /* 560 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,1005 /* 570 */ 58, 195, 218, 219, 101, 195, 60, 271, 162, 195,1006 /* 580 */ 107, 108, 109, 117, 118, 119, 241, 242, 115, 73,1007 /* 590 */ 117, 118, 119, 241, 242, 122, 60, 195, 266, 254,1008 /* 600 */ 312, 256, 218, 219, 316, 203, 254, 195, 256, 255,1009 /* 610 */ 208, 117, 118, 119, 269, 103, 104, 105, 106, 107,1010 /* 620 */ 108, 109, 110, 111, 112, 113, 114, 154, 155, 156,1011 /* 630 */ 157, 158, 102, 117, 118, 119, 19, 242, 144, 255,1012 /* 640 */ 23, 206, 24, 298, 195, 300, 206, 195, 264, 254,1013 /* 650 */ 206, 256, 240, 117, 118, 119, 183, 22, 22, 23,1014 /* 660 */ 43, 44, 45, 151, 47, 48, 49, 50, 51, 52,1015 /* 670 */ 53, 54, 55, 56, 57, 58, 241, 242, 60, 195,1016 /* 680 */ 19, 241, 242, 195, 23, 241, 242, 195, 152, 254,1017 /* 690 */ 310, 256, 243, 312, 254, 60, 256, 316, 254, 206,1018 /* 700 */ 256, 60, 218, 219, 43, 44, 45, 272, 47, 48,1019 /* 710 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,1020 /* 720 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,1021 /* 730 */ 113, 114, 240, 60, 241, 242, 118, 25, 102, 255,1022 /* 740 */ 166, 167, 101, 22, 26, 19, 20, 254, 22, 256,1023 /* 750 */ 139, 140, 117, 118, 119, 306, 195, 308, 117, 118,1024 /* 760 */ 237, 238, 36, 122, 103, 104, 105, 106, 107, 108,1025 /* 770 */ 109, 110, 111, 112, 113, 114, 195, 195, 60, 218,1026 /* 780 */ 219, 60, 109, 195, 19, 217, 60, 25, 23, 77,1027 /* 790 */ 117, 118, 119, 225, 233, 154, 155, 156, 72, 312,1028 /* 800 */ 218, 219, 90, 316, 22, 93, 303, 304, 43, 44,1029 /* 810 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,1030 /* 820 */ 55, 56, 57, 58, 183, 195, 195, 101, 19, 213,1031 /* 830 */ 214, 243, 23, 107, 108, 117, 118, 119, 117, 118,1032 /* 840 */ 119, 115, 60, 117, 118, 119, 195, 60, 122, 218,1033 /* 850 */ 219, 22, 43, 44, 45, 35, 47, 48, 49, 50,1034 /* 860 */ 51, 52, 53, 54, 55, 56, 57, 58, 103, 104,1035 /* 870 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,1036 /* 880 */ 154, 155, 156, 157, 158, 195, 255, 67, 195, 60,1037 /* 890 */ 101, 240, 311, 312, 306, 75, 308, 316, 29, 117,1038 /* 900 */ 118, 119, 33, 287, 117, 118, 119, 118, 146, 183,1039 /* 910 */ 195, 122, 103, 104, 105, 106, 107, 108, 109, 110,1040 /* 920 */ 111, 112, 113, 114, 215, 195, 77, 60, 25, 195,1041 /* 930 */ 122, 144, 19, 218, 219, 66, 23, 88, 246, 90,1042 /* 940 */ 132, 25, 93, 154, 155, 156, 117, 118, 119, 257,1043 /* 950 */ 195, 131, 218, 219, 195, 265, 43, 44, 45, 195,1044 /* 960 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,1045 /* 970 */ 57, 58, 183, 218, 219, 195, 19, 218, 219, 195,1046 /* 980 */ 23, 195, 218, 219, 117, 118, 119, 195, 233, 255,1047 /* 990 */ 195, 195, 233, 22, 23, 146, 25, 233, 218, 219,1048 /* 1000 */ 43, 44, 45, 294, 47, 48, 49, 50, 51, 52,1049 /* 1010 */ 53, 54, 55, 56, 57, 58, 103, 104, 105, 106,1050 /* 1020 */ 107, 108, 109, 110, 111, 112, 113, 114, 195, 12,1051 /* 1030 */ 234, 195, 240, 74, 195, 255, 195, 60, 243, 262,1052 /* 1040 */ 263, 311, 312, 25, 27, 19, 316, 107, 108, 265,1053 /* 1050 */ 24, 265, 195, 150, 195, 139, 140, 218, 219, 42,1054 /* 1060 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,1055 /* 1070 */ 113, 114, 233, 102, 67, 218, 219, 218, 219, 243,1056 /* 1080 */ 19, 64, 22, 23, 23, 25, 195, 128, 129, 130,1057 /* 1090 */ 233, 74, 233, 86, 154, 118, 156, 130, 265, 208,1058 /* 1100 */ 19, 306, 95, 308, 43, 44, 45, 266, 47, 48,1059 /* 1110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,1060 /* 1120 */ 153, 230, 96, 232, 43, 44, 45, 19, 47, 48,1061 /* 1130 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,1062 /* 1140 */ 114, 22, 306, 24, 308, 127, 120, 121, 122, 123,1063 /* 1150 */ 124, 125, 126, 195, 147, 212, 213, 214, 132, 23,1064 /* 1160 */ 195, 25, 102, 100, 103, 104, 105, 106, 107, 108,1065 /* 1170 */ 109, 110, 111, 112, 113, 114, 218, 219, 19, 60,1066 /* 1180 */ 195, 12, 210, 211, 103, 104, 105, 106, 107, 108,1067 /* 1190 */ 109, 110, 111, 112, 113, 114, 27, 134, 195, 195,1068 /* 1200 */ 195, 210, 211, 218, 219, 195, 47, 195, 212, 213,1069 /* 1210 */ 214, 42, 16, 130, 19, 112, 113, 114, 23, 77,1070 /* 1220 */ 195, 218, 219, 218, 219, 117, 163, 164, 218, 219,1071 /* 1230 */ 218, 219, 90, 64, 19, 93, 153, 118, 43, 44,1072 /* 1240 */ 45, 160, 47, 48, 49, 50, 51, 52, 53, 54,1073 /* 1250 */ 55, 56, 57, 58, 195, 119, 272, 276, 43, 44,1074 /* 1260 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,1075 /* 1270 */ 55, 56, 57, 58, 78, 116, 80, 218, 219, 116,1076 /* 1280 */ 144, 128, 129, 130, 218, 219, 61, 195, 47, 195,1077 /* 1290 */ 16, 132, 195, 263, 195, 314, 315, 267, 103, 104,1078 /* 1300 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,1079 /* 1310 */ 218, 219, 218, 219, 151, 218, 219, 195, 103, 104,1080 /* 1320 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,1081 /* 1330 */ 210, 211, 195, 7, 8, 9, 195, 60, 195, 312,1082 /* 1340 */ 218, 219, 195, 316, 195, 120, 195, 263, 19, 195,1083 /* 1350 */ 125, 267, 78, 24, 80, 218, 219, 116, 162, 218,1084 /* 1360 */ 219, 218, 219, 301, 302, 218, 219, 195, 19, 218,1085 /* 1370 */ 219, 276, 43, 44, 45, 160, 47, 48, 49, 50,1086 /* 1380 */ 51, 52, 53, 54, 55, 56, 57, 58, 19, 146,1087 /* 1390 */ 218, 219, 43, 44, 45, 118, 47, 48, 49, 50,1088 /* 1400 */ 51, 52, 53, 54, 55, 56, 57, 58, 165, 314,1089 /* 1410 */ 315, 276, 43, 44, 45, 266, 47, 48, 49, 50,1090 /* 1420 */ 51, 52, 53, 54, 55, 56, 57, 58, 128, 129,1091 /* 1430 */ 130, 195, 103, 104, 105, 106, 107, 108, 109, 110,1092 /* 1440 */ 111, 112, 113, 114, 195, 228, 195, 61, 195, 314,1093 /* 1450 */ 315, 25, 103, 104, 105, 106, 107, 108, 109, 110,1094 /* 1460 */ 111, 112, 113, 114, 195, 22, 195, 218, 219, 218,1095 /* 1470 */ 219, 195, 103, 104, 105, 106, 107, 108, 109, 110,1096 /* 1480 */ 111, 112, 113, 114, 195, 195, 246, 218, 219, 218,1097 /* 1490 */ 219, 25, 19, 246, 218, 219, 246, 257, 259, 260,1098 /* 1500 */ 195, 22, 266, 60, 257, 195, 120, 257, 218, 219,1099 /* 1510 */ 116, 195, 19, 195, 150, 151, 25, 44, 45, 266,1100 /* 1520 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,1101 /* 1530 */ 57, 58, 195, 54, 218, 219, 218, 219, 45, 145,1102 /* 1540 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,1103 /* 1550 */ 57, 58, 246, 121, 122, 218, 219, 19, 23, 31,1104 /* 1560 */ 25, 118, 159, 257, 161, 24, 195, 39, 195, 143,1105 /* 1570 */ 195, 19, 20, 22, 22, 24, 103, 104, 105, 106,1106 /* 1580 */ 107, 108, 109, 110, 111, 112, 113, 114, 36, 218,1107 /* 1590 */ 219, 218, 219, 218, 219, 195, 103, 104, 105, 106,1108 /* 1600 */ 107, 108, 109, 110, 111, 112, 113, 114, 195, 143,1109 /* 1610 */ 119, 136, 60, 195, 22, 195, 141, 195, 218, 219,1110 /* 1620 */ 195, 23, 195, 25, 72, 23, 131, 25, 195, 134,1111 /* 1630 */ 23, 218, 219, 195, 82, 144, 218, 219, 218, 219,1112 /* 1640 */ 218, 219, 195, 218, 219, 218, 219, 60, 23, 195,1113 /* 1650 */ 25, 218, 219, 101, 195, 117, 218, 219, 195, 107,1114 /* 1660 */ 108, 23, 195, 25, 195, 218, 219, 115, 228, 117,1115 /* 1670 */ 118, 119, 218, 219, 122, 195, 19, 218, 219, 195,1116 /* 1680 */ 60, 218, 219, 142, 195, 218, 219, 19, 20, 195,1117 /* 1690 */ 22, 139, 140, 23, 23, 25, 25, 195, 218, 219,1118 /* 1700 */ 7, 8, 218, 219, 36, 118, 154, 155, 156, 157,1119 /* 1710 */ 158, 195, 23, 195, 25, 84, 85, 49, 195, 23,1120 /* 1720 */ 195, 25, 195, 23, 195, 25, 195, 23, 60, 25,1121 /* 1730 */ 23, 23, 25, 25, 142, 183, 218, 219, 118, 195,1122 /* 1740 */ 72, 218, 219, 218, 219, 218, 219, 218, 219, 218,1123 /* 1750 */ 219, 195, 195, 146, 86, 98, 23, 195, 25, 91,1124 /* 1760 */ 19, 20, 154, 22, 156, 154, 23, 156, 25, 101,1125 /* 1770 */ 23, 195, 25, 195, 195, 107, 108, 36, 195, 195,1126 /* 1780 */ 195, 195, 228, 115, 195, 117, 118, 119, 195, 195,1127 /* 1790 */ 122, 261, 195, 321, 195, 195, 195, 258, 238, 195,1128 /* 1800 */ 195, 60, 299, 291, 195, 195, 258, 195, 195, 195,1129 /* 1810 */ 290, 244, 216, 72, 245, 193, 258, 258, 299, 258,1130 /* 1820 */ 299, 274, 154, 155, 156, 157, 158, 86, 247, 295,1131 /* 1830 */ 248, 295, 91, 19, 20, 270, 22, 274, 270, 248,1132 /* 1840 */ 274, 222, 101, 227, 274, 221, 231, 221, 107, 108,1133 /* 1850 */ 36, 183, 262, 247, 221, 283, 115, 262, 117, 118,1134 /* 1860 */ 119, 198, 116, 122, 220, 262, 61, 220, 220, 251,1135 /* 1870 */ 247, 142, 251, 245, 60, 202, 299, 202, 38, 262,1136 /* 1880 */ 202, 22, 152, 151, 296, 43, 72, 236, 18, 239,1137 /* 1890 */ 202, 239, 239, 239, 18, 154, 155, 156, 157, 158,1138 /* 1900 */ 86, 150, 201, 248, 275, 91, 248, 273, 236, 248,1139 /* 1910 */ 275, 275, 273, 236, 248, 101, 286, 202, 201, 159,1140 /* 1920 */ 63, 107, 108, 296, 183, 293, 202, 201, 22, 115,1141 /* 1930 */ 202, 117, 118, 119, 292, 223, 122, 201, 65, 202,1142 /* 1940 */ 201, 223, 220, 220, 22, 220, 226, 226, 229, 127,1143 /* 1950 */ 223, 220, 166, 24, 285, 220, 222, 114, 315, 285,1144 /* 1960 */ 220, 202, 220, 307, 92, 320, 320, 229, 154, 155,1145 /* 1970 */ 156, 157, 158, 0, 1, 2, 223, 83, 5, 268,1146 /* 1980 */ 149, 268, 146, 10, 11, 12, 13, 14, 22, 280,1147 /* 1990 */ 17, 202, 159, 19, 20, 251, 22, 183, 282, 148,1148 /* 2000 */ 252, 252, 250, 30, 249, 32, 248, 147, 25, 13,1149 /* 2010 */ 36, 204, 196, 40, 196, 6, 302, 194, 194, 194,1150 /* 2020 */ 209, 215, 209, 215, 215, 215, 224, 224, 216, 209,1151 /* 2030 */ 4, 216, 215, 3, 60, 22, 122, 19, 122, 19,1152 /* 2040 */ 125, 22, 15, 22, 71, 16, 72, 23, 23, 140,1153 /* 2050 */ 305, 152, 79, 25, 131, 82, 143, 20, 16, 305,1154 /* 2060 */ 1, 143, 145, 131, 131, 62, 54, 131, 37, 54,1155 /* 2070 */ 54, 152, 99, 117, 34, 101, 54, 24, 1, 5,1156 /* 2080 */ 22, 107, 108, 116, 76, 25, 162, 41, 142, 115,1157 /* 2090 */ 24, 117, 118, 119, 116, 20, 122, 19, 126, 23,1158 /* 2100 */ 132, 19, 20, 69, 22, 69, 22, 134, 22, 68,1159 /* 2110 */ 22, 22, 139, 140, 60, 141, 68, 24, 36, 28,1160 /* 2120 */ 97, 22, 37, 68, 23, 150, 34, 22, 154, 155,1161 /* 2130 */ 156, 157, 158, 23, 23, 22, 163, 25, 23, 142,1162 /* 2140 */ 23, 98, 60, 23, 22, 144, 25, 76, 34, 117,1163 /* 2150 */ 34, 89, 34, 34, 72, 87, 76, 183, 34, 94,1164 /* 2160 */ 34, 23, 22, 24, 34, 23, 25, 44, 25, 23,1165 /* 2170 */ 23, 23, 22, 22, 25, 11, 143, 25, 143, 23,1166 /* 2180 */ 22, 22, 22, 101, 23, 23, 136, 22, 25, 107,1167 /* 2190 */ 108, 142, 25, 142, 142, 23, 15, 115, 1, 117,1168 /* 2200 */ 118, 119, 1, 2, 122, 1, 5, 322, 322, 322,1169 /* 2210 */ 322, 10, 11, 12, 13, 14, 322, 322, 17, 322,1170 /* 2220 */ 5, 322, 322, 141, 322, 10, 11, 12, 13, 14,1171 /* 2230 */ 322, 30, 17, 32, 322, 322, 154, 155, 156, 157,1172 /* 2240 */ 158, 40, 322, 322, 322, 30, 322, 32, 322, 322,1173 /* 2250 */ 322, 322, 322, 322, 322, 40, 322, 322, 322, 322,1174 /* 2260 */ 322, 322, 322, 322, 322, 183, 322, 322, 322, 322,1175 /* 2270 */ 322, 322, 71, 322, 322, 322, 322, 322, 322, 322,1176 /* 2280 */ 79, 322, 322, 82, 322, 322, 71, 322, 322, 322,1177 /* 2290 */ 322, 322, 322, 322, 79, 322, 322, 82, 322, 322,1178 /* 2300 */ 99, 322, 322, 322, 322, 322, 322, 322, 322, 322,1179 /* 2310 */ 322, 322, 322, 322, 99, 322, 322, 322, 322, 322,1180 /* 2320 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,1181 /* 2330 */ 322, 322, 322, 322, 322, 134, 322, 322, 322, 322,1182 /* 2340 */ 139, 140, 322, 322, 322, 322, 322, 322, 322, 134,1183 /* 2350 */ 322, 322, 322, 322, 139, 140, 322, 322, 322, 322,1184 /* 2360 */ 322, 322, 322, 322, 163, 322, 322, 322, 322, 322,1185 /* 2370 */ 322, 322, 322, 322, 322, 322, 322, 322, 163, 322,1186 /* 2380 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,1187 /* 2390 */ 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,1188 /* 2400 */ 322, 322, 322, 322, 322, 322, 322, 322, 187, 187,1189 /* 2410 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1190 /* 2420 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1191 /* 2430 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1192 /* 2440 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1193 /* 2450 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1194 /* 2460 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1195 /* 2470 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1196 /* 2480 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1197 /* 2490 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1198 /* 2500 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1199 /* 2510 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,1200 /* 2520 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,