Fossil SCM

Update to the latest SQLite from upstream to fix minor problems in the shell.

drh 2025-11-21 17:32 trunk
Commit f07aa62601038515d1a14d6ed74163d68cfd7a61d804183a564f1303bd0ee171
3 files changed +11 -5 +1910 -1105 +2 -2
+11 -5
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -3240,17 +3240,21 @@
32403240
sqlite3_str_appendf(p->pOut, "%lld\n", p->nRow);
32413241
qrfWrite(p);
32423242
break;
32433243
}
32443244
case QRF_STYLE_Json: {
3245
- sqlite3_str_append(p->pOut, "}]\n", 3);
3246
- qrfWrite(p);
3245
+ if( p->nRow>0 ){
3246
+ sqlite3_str_append(p->pOut, "}]\n", 3);
3247
+ qrfWrite(p);
3248
+ }
32473249
break;
32483250
}
32493251
case QRF_STYLE_JObject: {
3250
- sqlite3_str_append(p->pOut, "}\n", 2);
3251
- qrfWrite(p);
3252
+ if( p->nRow>0 ){
3253
+ sqlite3_str_append(p->pOut, "}\n", 2);
3254
+ qrfWrite(p);
3255
+ }
32523256
break;
32533257
}
32543258
case QRF_STYLE_Line: {
32553259
if( p->u.sLine.azCol ) sqlite3_free(p->u.sLine.azCol);
32563260
break;
@@ -24041,18 +24045,20 @@
2404124045
/*
2404224046
** Clear a display mode, freeing any allocated memory that it
2404324047
** contains.
2404424048
*/
2404524049
static void modeFree(Mode *p){
24050
+ u8 autoExplain = p->autoExplain;
2404624051
free(p->spec.aWidth);
2404724052
free(p->spec.aAlign);
2404824053
free(p->spec.zColumnSep);
2404924054
free(p->spec.zRowSep);
2405024055
free(p->spec.zTableName);
2405124056
free(p->spec.zNull);
2405224057
memset(p, 0, sizeof(*p));
2405324058
p->spec.iVersion = 1;
24059
+ p->autoExplain = autoExplain;
2405424060
}
2405524061
2405624062
/*
2405724063
** Duplicate Mode pSrc into pDest. pDest is assumed to be
2405824064
** uninitialized prior to invoking this routine.
@@ -32711,11 +32717,11 @@
3271132717
sqlite3_str_appendf(pSql,
3271232718
"SELECT shell_format_schema(shell_add_schema(sql,NULL,name),%d)",
3271332719
bIndent);
3271432720
}else{
3271532721
sqlite3_str_appendf(pSql,
32716
- "SELECT shell_format_schema(shell_add_schema(sql,%Q,name),%d))",
32722
+ "SELECT shell_format_schema(shell_add_schema(sql,%Q,name),%d)",
3271732723
zDb, bIndent);
3271832724
}
3271932725
sqlite3_str_appendf(pSql,
3272032726
" AS sql, type, tbl_name, name, rowid, %d AS snum, %Q as sname",
3272132727
++iSchema, zDb);
3272232728
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -3240,17 +3240,21 @@
3240 sqlite3_str_appendf(p->pOut, "%lld\n", p->nRow);
3241 qrfWrite(p);
3242 break;
3243 }
3244 case QRF_STYLE_Json: {
3245 sqlite3_str_append(p->pOut, "}]\n", 3);
3246 qrfWrite(p);
 
 
3247 break;
3248 }
3249 case QRF_STYLE_JObject: {
3250 sqlite3_str_append(p->pOut, "}\n", 2);
3251 qrfWrite(p);
 
 
3252 break;
3253 }
3254 case QRF_STYLE_Line: {
3255 if( p->u.sLine.azCol ) sqlite3_free(p->u.sLine.azCol);
3256 break;
@@ -24041,18 +24045,20 @@
24041 /*
24042 ** Clear a display mode, freeing any allocated memory that it
24043 ** contains.
24044 */
24045 static void modeFree(Mode *p){
 
24046 free(p->spec.aWidth);
24047 free(p->spec.aAlign);
24048 free(p->spec.zColumnSep);
24049 free(p->spec.zRowSep);
24050 free(p->spec.zTableName);
24051 free(p->spec.zNull);
24052 memset(p, 0, sizeof(*p));
24053 p->spec.iVersion = 1;
 
24054 }
24055
24056 /*
24057 ** Duplicate Mode pSrc into pDest. pDest is assumed to be
24058 ** uninitialized prior to invoking this routine.
@@ -32711,11 +32717,11 @@
32711 sqlite3_str_appendf(pSql,
32712 "SELECT shell_format_schema(shell_add_schema(sql,NULL,name),%d)",
32713 bIndent);
32714 }else{
32715 sqlite3_str_appendf(pSql,
32716 "SELECT shell_format_schema(shell_add_schema(sql,%Q,name),%d))",
32717 zDb, bIndent);
32718 }
32719 sqlite3_str_appendf(pSql,
32720 " AS sql, type, tbl_name, name, rowid, %d AS snum, %Q as sname",
32721 ++iSchema, zDb);
32722
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -3240,17 +3240,21 @@
3240 sqlite3_str_appendf(p->pOut, "%lld\n", p->nRow);
3241 qrfWrite(p);
3242 break;
3243 }
3244 case QRF_STYLE_Json: {
3245 if( p->nRow>0 ){
3246 sqlite3_str_append(p->pOut, "}]\n", 3);
3247 qrfWrite(p);
3248 }
3249 break;
3250 }
3251 case QRF_STYLE_JObject: {
3252 if( p->nRow>0 ){
3253 sqlite3_str_append(p->pOut, "}\n", 2);
3254 qrfWrite(p);
3255 }
3256 break;
3257 }
3258 case QRF_STYLE_Line: {
3259 if( p->u.sLine.azCol ) sqlite3_free(p->u.sLine.azCol);
3260 break;
@@ -24041,18 +24045,20 @@
24045 /*
24046 ** Clear a display mode, freeing any allocated memory that it
24047 ** contains.
24048 */
24049 static void modeFree(Mode *p){
24050 u8 autoExplain = p->autoExplain;
24051 free(p->spec.aWidth);
24052 free(p->spec.aAlign);
24053 free(p->spec.zColumnSep);
24054 free(p->spec.zRowSep);
24055 free(p->spec.zTableName);
24056 free(p->spec.zNull);
24057 memset(p, 0, sizeof(*p));
24058 p->spec.iVersion = 1;
24059 p->autoExplain = autoExplain;
24060 }
24061
24062 /*
24063 ** Duplicate Mode pSrc into pDest. pDest is assumed to be
24064 ** uninitialized prior to invoking this routine.
@@ -32711,11 +32717,11 @@
32717 sqlite3_str_appendf(pSql,
32718 "SELECT shell_format_schema(shell_add_schema(sql,NULL,name),%d)",
32719 bIndent);
32720 }else{
32721 sqlite3_str_appendf(pSql,
32722 "SELECT shell_format_schema(shell_add_schema(sql,%Q,name),%d)",
32723 zDb, bIndent);
32724 }
32725 sqlite3_str_appendf(pSql,
32726 " AS sql, type, tbl_name, name, rowid, %d AS snum, %Q as sname",
32727 ++iSchema, zDb);
32728
+1910 -1105
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
1616
** if you want a wrapper to interface SQLite with your choice of programming
1717
** language. The code for the "sqlite3" command-line shell is also in a
1818
** separate file. This file contains only code for the core SQLite library.
1919
**
2020
** The content in this amalgamation comes from Fossil check-in
21
-** b65b29656c835db22557733f4dcfe906bf21 with changes in files:
21
+** 8a230e4da230a7b103749b069a99a58e4c22 with changes in files:
2222
**
2323
**
2424
*/
2525
#ifndef SQLITE_AMALGAMATION
2626
#define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467467
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468468
** [sqlite_version()] and [sqlite_source_id()].
469469
*/
470470
#define SQLITE_VERSION "3.52.0"
471471
#define SQLITE_VERSION_NUMBER 3052000
472
-#define SQLITE_SOURCE_ID "2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901"
472
+#define SQLITE_SOURCE_ID "2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3"
473473
#define SQLITE_SCM_BRANCH "trunk"
474474
#define SQLITE_SCM_TAGS ""
475
-#define SQLITE_SCM_DATETIME "2025-11-19T19:37:28.777Z"
475
+#define SQLITE_SCM_DATETIME "2025-11-21T17:30:44.138Z"
476476
477477
/*
478478
** CAPI3REF: Run-Time Library Version Numbers
479479
** KEYWORDS: sqlite3_version sqlite3_sourceid
480480
**
@@ -20881,14 +20881,15 @@
2088120881
} InitData;
2088220882
2088320883
/*
2088420884
** Allowed values for mInitFlags
2088520885
*/
20886
-#define INITFLAG_AlterMask 0x0003 /* Types of ALTER */
20886
+#define INITFLAG_AlterMask 0x0007 /* Types of ALTER */
2088720887
#define INITFLAG_AlterRename 0x0001 /* Reparse after a RENAME */
2088820888
#define INITFLAG_AlterDrop 0x0002 /* Reparse after a DROP COLUMN */
2088920889
#define INITFLAG_AlterAdd 0x0003 /* Reparse after an ADD COLUMN */
20890
+#define INITFLAG_AlterDropCons 0x0004 /* Reparse after an ADD COLUMN */
2089020891
2089120892
/* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
2089220893
** on debug-builds of the CLI using ".testctrl tune ID VALUE". Tuning
2089320894
** parameters are for temporary use during development, to help find
2089420895
** optimal values for parameters in the query planner. The should not
@@ -22065,10 +22066,13 @@
2206522066
SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3*, int, Pgno, Pgno);
2206622067
SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
2206722068
SQLITE_PRIVATE void sqlite3AlterFunctions(void);
2206822069
SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
2206922070
SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
22071
+SQLITE_PRIVATE void sqlite3AlterDropConstraint(Parse*,SrcList*,Token*,Token*);
22072
+SQLITE_PRIVATE void sqlite3AlterAddConstraint(Parse*,SrcList*,Token*,Token*,const char*,int);
22073
+SQLITE_PRIVATE void sqlite3AlterSetNotNull(Parse*, SrcList*, Token*, Token*);
2207022074
SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *, int *);
2207122075
SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
2207222076
SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
2207322077
SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
2207422078
SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
@@ -95332,10 +95336,11 @@
9533295336
#ifndef SQLITE_HWTIME_H
9533395337
#define SQLITE_HWTIME_H
9533495338
9533595339
#if defined(_MSC_VER) && defined(_WIN32)
9533695340
95341
+/* #include "windows.h" */
9533795342
#include <profileapi.h>
9533895343
9533995344
__inline sqlite3_uint64 sqlite3Hwtime(void){
9534095345
LARGE_INTEGER tm;
9534195346
QueryPerformanceCounter(&tm);
@@ -119669,11 +119674,11 @@
119669119674
sqlite3 *db = pParse->db;
119670119675
119671119676
/* Look up the table being altered. */
119672119677
assert( pParse->pNewTable==0 );
119673119678
assert( sqlite3BtreeHoldsAllMutexes(db) );
119674
- if( db->mallocFailed ) goto exit_begin_add_column;
119679
+ if( NEVER(db->mallocFailed) ) goto exit_begin_add_column;
119675119680
pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
119676119681
if( !pTab ) goto exit_begin_add_column;
119677119682
119678119683
#ifndef SQLITE_OMIT_VIRTUALTABLE
119679119684
if( IsVirtual(pTab) ){
@@ -119741,11 +119746,11 @@
119741119746
** it loads an error message into pParse and returns non-zero.
119742119747
**
119743119748
** Or, if pTab is not a view or virtual table, zero is returned.
119744119749
*/
119745119750
#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
119746
-static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
119751
+static int isRealTable(Parse *pParse, Table *pTab, int iOp){
119747119752
const char *zType = 0;
119748119753
#ifndef SQLITE_OMIT_VIEW
119749119754
if( IsView(pTab) ){
119750119755
zType = "view";
119751119756
}
@@ -119754,13 +119759,16 @@
119754119759
if( IsVirtual(pTab) ){
119755119760
zType = "virtual table";
119756119761
}
119757119762
#endif
119758119763
if( zType ){
119764
+ const char *azMsg[] = {
119765
+ "rename columns of", "drop column from", "edit constraints of"
119766
+ };
119767
+ assert( iOp>=0 && iOp<ArraySize(azMsg) );
119759119768
sqlite3ErrorMsg(pParse, "cannot %s %s \"%s\"",
119760
- (bDrop ? "drop column from" : "rename columns of"),
119761
- zType, pTab->zName
119769
+ azMsg[iOp], zType, pTab->zName
119762119770
);
119763119771
return 1;
119764119772
}
119765119773
return 0;
119766119774
}
@@ -120226,10 +120234,29 @@
120226120234
for(pp=&pCtx->pList; *pp!=pBest; pp=&(*pp)->pNext);
120227120235
*pp = pBest->pNext;
120228120236
120229120237
return pBest;
120230120238
}
120239
+
120240
+/*
120241
+** Set the error message of the context passed as the first argument to
120242
+** the result of formatting zFmt using printf() style formatting.
120243
+*/
120244
+static void errorMPrintf(sqlite3_context *pCtx, const char *zFmt, ...){
120245
+ sqlite3 *db = sqlite3_context_db_handle(pCtx);
120246
+ char *zErr = 0;
120247
+ va_list ap;
120248
+ va_start(ap, zFmt);
120249
+ zErr = sqlite3VMPrintf(db, zFmt, ap);
120250
+ va_end(ap);
120251
+ if( zErr ){
120252
+ sqlite3_result_error(pCtx, zErr, -1);
120253
+ sqlite3DbFree(db, zErr);
120254
+ }else{
120255
+ sqlite3_result_error_nomem(pCtx);
120256
+ }
120257
+}
120231120258
120232120259
/*
120233120260
** An error occurred while parsing or otherwise processing a database
120234120261
** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an
120235120262
** ALTER TABLE RENAME COLUMN program. The error message emitted by the
@@ -121490,10 +121517,700 @@
121490121517
121491121518
exit_drop_column:
121492121519
sqlite3DbFree(db, zCol);
121493121520
sqlite3SrcListDelete(db, pSrc);
121494121521
}
121522
+
121523
+/*
121524
+** Return the number of bytes of leading whitespace/comments in string z[].
121525
+*/
121526
+static int getWhitespace(const u8 *z){
121527
+ int nRet = 0;
121528
+ while( 1 ){
121529
+ int t = 0;
121530
+ int n = sqlite3GetToken(&z[nRet], &t);
121531
+ if( t!=TK_SPACE && t!=TK_COMMENT ) break;
121532
+ nRet += n;
121533
+ }
121534
+ return nRet;
121535
+}
121536
+
121537
+
121538
+/*
121539
+** Return the number of bytes until the end of the next non-whitespace and
121540
+** non-comment token. For the purpose of this function, a "(" token includes
121541
+** all of the bytes through and including the matching ")", or until the
121542
+** first illegal token, whichever comes first.
121543
+**
121544
+** Write the token type into *piToken.
121545
+**
121546
+** The value returned is the number of bytes in the token itself plus
121547
+** the number of bytes of leading whitespace and comments skipped plus
121548
+** all bytes through the next matching ")" if the token is TK_LP.
121549
+**
121550
+** Example: (Note: '.' used in place of '*' in the example z[] text)
121551
+**
121552
+** ,--------- *piToken := TK_RP
121553
+** v
121554
+** z[] = " /.comment./ --comment\n (two three four) five"
121555
+** | |
121556
+** |<-------------------------------------->|
121557
+** |
121558
+** `--- return value
121559
+*/
121560
+static int getConstraintToken(const u8 *z, int *piToken){
121561
+ int iOff = 0;
121562
+ int t = 0;
121563
+ do {
121564
+ iOff += sqlite3GetToken(&z[iOff], &t);
121565
+ }while( t==TK_SPACE || t==TK_COMMENT );
121566
+
121567
+ *piToken = t;
121568
+
121569
+ if( t==TK_LP ){
121570
+ int nNest = 1;
121571
+ while( nNest>0 ){
121572
+ iOff += sqlite3GetToken(&z[iOff], &t);
121573
+ if( t==TK_LP ){
121574
+ nNest++;
121575
+ }else if( t==TK_RP ){
121576
+ t = TK_LP;
121577
+ nNest--;
121578
+ }else if( t==TK_ILLEGAL ){
121579
+ break;
121580
+ }
121581
+ }
121582
+ }
121583
+
121584
+ *piToken = t;
121585
+ return iOff;
121586
+}
121587
+
121588
+/*
121589
+** Argument z points into the body of a constraint - specifically the
121590
+** second token of the constraint definition. For a named constraint,
121591
+** z points to the first token past the CONSTRAINT keyword. For an
121592
+** unnamed NOT NULL constraint, z points to the first byte past the NOT
121593
+** keyword.
121594
+**
121595
+** Return the number of bytes until the end of the constraint.
121596
+*/
121597
+static int getConstraint(const u8 *z){
121598
+ int iOff = 0;
121599
+ int t = 0;
121600
+
121601
+ /* Now, the current constraint proceeds until the next occurence of one
121602
+ ** of the following tokens:
121603
+ **
121604
+ ** CONSTRAINT, PRIMARY, NOT, UNIQUE, CHECK, DEFAULT,
121605
+ ** COLLATE, REFERENCES, FOREIGN, GENERATED, AS, RP, or COMMA
121606
+ **
121607
+ ** Also exit the loop if ILLEGAL turns up.
121608
+ */
121609
+ while( 1 ){
121610
+ int n = getConstraintToken(&z[iOff], &t);
121611
+ if( t==TK_CONSTRAINT || t==TK_PRIMARY || t==TK_NOT || t==TK_UNIQUE
121612
+ || t==TK_CHECK || t==TK_DEFAULT || t==TK_COLLATE || t==TK_REFERENCES
121613
+ || t==TK_FOREIGN || t==TK_RP || t==TK_COMMA || t==TK_ILLEGAL
121614
+ || t==TK_AS || t==TK_GENERATED
121615
+ ){
121616
+ break;
121617
+ }
121618
+ iOff += n;
121619
+ }
121620
+
121621
+ return iOff;
121622
+}
121623
+
121624
+/*
121625
+** Compare two constraint names.
121626
+**
121627
+** Summary: *pRes := zQuote != zCmp
121628
+**
121629
+** Details:
121630
+** Compare the (possibly quoted) constraint name zQuote[0..nQuote-1]
121631
+** against zCmp[]. Write zero into *pRes if they are the same and
121632
+** non-zero if they differ. Normally return SQLITE_OK, except if there
121633
+** is an OOM, set the OOM error condition on ctx and return SQLITE_NOMEM.
121634
+*/
121635
+static int quotedCompare(
121636
+ sqlite3_context *ctx, /* Function context on which to report errors */
121637
+ const u8 *zQuote, /* Possibly quoted text. Not zero-terminated. */
121638
+ int nQuote, /* Length of zQuote in bytes */
121639
+ const u8 *zCmp, /* Zero-terminated, unquoted name to compare against */
121640
+ int *pRes /* OUT: Set to 0 if equal, non-zero if unequal */
121641
+){
121642
+ char *zCopy = 0; /* De-quoted, zero-terminated copy of zQuote[] */
121643
+
121644
+ zCopy = sqlite3MallocZero(nQuote+1);
121645
+ if( zCopy==0 ){
121646
+ sqlite3_result_error_nomem(ctx);
121647
+ return SQLITE_NOMEM_BKPT;
121648
+ }
121649
+ memcpy(zCopy, zQuote, nQuote);
121650
+ sqlite3Dequote(zCopy);
121651
+ *pRes = sqlite3_stricmp((const char*)zCopy, (const char*)zCmp);
121652
+ sqlite3_free(zCopy);
121653
+ return SQLITE_OK;
121654
+}
121655
+
121656
+/*
121657
+** zSql[] is a CREATE TABLE statement, supposedly. Find the offset
121658
+** into zSql[] of the first character past the first "(" and write
121659
+** that offset into *piOff and return SQLITE_OK. Or, if not found,
121660
+** set the SQLITE_CORRUPT error code and return SQLITE_ERROR.
121661
+*/
121662
+static int skipCreateTable(sqlite3_context *ctx, const u8 *zSql, int *piOff){
121663
+ int iOff = 0;
121664
+
121665
+ if( zSql==0 ) return SQLITE_ERROR;
121666
+
121667
+ /* Jump past the "CREATE TABLE" bit. */
121668
+ while( 1 ){
121669
+ int t = 0;
121670
+ iOff += sqlite3GetToken(&zSql[iOff], &t);
121671
+ if( t==TK_LP ) break;
121672
+ if( t==TK_ILLEGAL ){
121673
+ sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
121674
+ return SQLITE_ERROR;
121675
+ }
121676
+ }
121677
+
121678
+ *piOff = iOff;
121679
+ return SQLITE_OK;
121680
+}
121681
+
121682
+/*
121683
+** Internal SQL function sqlite3_drop_constraint(): Given an input
121684
+** CREATE TABLE statement, return a revised CREATE TABLE statement
121685
+** with a constraint removed. Two forms, depending on the datatype
121686
+** of argv[2]:
121687
+**
121688
+** sqlite_drop_constraint(SQL, INT) -- Omit NOT NULL from the INT-th column
121689
+** sqlite_drop_constraint(SQL, TEXT) -- OMIT constraint with name TEXT
121690
+**
121691
+** In the first case, the left-most column is 0.
121692
+*/
121693
+static void dropConstraintFunc(
121694
+ sqlite3_context *ctx,
121695
+ int NotUsed,
121696
+ sqlite3_value **argv
121697
+){
121698
+ const u8 *zSql = sqlite3_value_text(argv[0]);
121699
+ const u8 *zCons = 0;
121700
+ int iNotNull = -1;
121701
+ int ii;
121702
+ int iOff = 0;
121703
+ int iStart = 0;
121704
+ int iEnd = 0;
121705
+ char *zNew = 0;
121706
+ int t = 0;
121707
+ sqlite3 *db;
121708
+ UNUSED_PARAMETER(NotUsed);
121709
+
121710
+ if( zSql==0 ) return;
121711
+
121712
+ /* Jump past the "CREATE TABLE" bit. */
121713
+ if( skipCreateTable(ctx, zSql, &iOff) ) return;
121714
+
121715
+ if( sqlite3_value_type(argv[1])==SQLITE_INTEGER ){
121716
+ iNotNull = sqlite3_value_int(argv[1]);
121717
+ }else{
121718
+ zCons = sqlite3_value_text(argv[1]);
121719
+ }
121720
+
121721
+ /* Search for the named constraint within column definitions. */
121722
+ for(ii=0; iEnd==0; ii++){
121723
+
121724
+ /* Now parse the column or table constraint definition. Search
121725
+ ** for the token CONSTRAINT if this is a DROP CONSTRAINT command, or
121726
+ ** NOT in the right column if this is a DROP NOT NULL. */
121727
+ while( 1 ){
121728
+ iStart = iOff;
121729
+ iOff += getConstraintToken(&zSql[iOff], &t);
121730
+ if( t==TK_CONSTRAINT && (zCons || iNotNull==ii) ){
121731
+ /* Check if this is the constraint we are searching for. */
121732
+ int nTok = 0;
121733
+ int cmp = 1;
121734
+
121735
+ /* Skip past any whitespace. */
121736
+ iOff += getWhitespace(&zSql[iOff]);
121737
+
121738
+ /* Compare the next token - which may be quoted - with the name of
121739
+ ** the constraint being dropped. */
121740
+ nTok = getConstraintToken(&zSql[iOff], &t);
121741
+ if( zCons ){
121742
+ if( quotedCompare(ctx, &zSql[iOff], nTok, zCons, &cmp) ) return;
121743
+ }
121744
+ iOff += nTok;
121745
+
121746
+ /* The next token is usually the first token of the constraint
121747
+ ** definition. This is enough to tell the type of the constraint -
121748
+ ** TK_NOT means it is a NOT NULL, TK_CHECK a CHECK constraint etc.
121749
+ **
121750
+ ** There is also the chance that the next token is TK_CONSTRAINT
121751
+ ** (or TK_DEFAULT or TK_COLLATE), for example if a table has been
121752
+ ** created as follows:
121753
+ **
121754
+ ** CREATE TABLE t1(cols, CONSTRAINT one CONSTRAINT two NOT NULL);
121755
+ **
121756
+ ** In this case, allow the "CONSTRAINT one" bit to be dropped by
121757
+ ** this command if that is what is requested, or to advance to
121758
+ ** the next iteration of the loop with &zSql[iOff] still pointing
121759
+ ** to the CONSTRAINT keyword. */
121760
+ nTok = getConstraintToken(&zSql[iOff], &t);
121761
+ if( t==TK_CONSTRAINT || t==TK_DEFAULT || t==TK_COLLATE
121762
+ || t==TK_COMMA || t==TK_RP || t==TK_GENERATED || t==TK_AS
121763
+ ){
121764
+ t = TK_CHECK;
121765
+ }else{
121766
+ iOff += nTok;
121767
+ iOff += getConstraint(&zSql[iOff]);
121768
+ }
121769
+
121770
+ if( cmp==0 || (iNotNull>=0 && t==TK_NOT) ){
121771
+ if( t!=TK_NOT && t!=TK_CHECK ){
121772
+ errorMPrintf(ctx, "constraint may not be dropped: %s", zCons);
121773
+ return;
121774
+ }
121775
+ iEnd = iOff;
121776
+ break;
121777
+ }
121778
+
121779
+ }else if( t==TK_NOT && iNotNull==ii ){
121780
+ iEnd = iOff + getConstraint(&zSql[iOff]);
121781
+ break;
121782
+ }else if( t==TK_RP || t==TK_ILLEGAL ){
121783
+ iEnd = -1;
121784
+ break;
121785
+ }else if( t==TK_COMMA ){
121786
+ break;
121787
+ }
121788
+ }
121789
+ }
121790
+
121791
+ /* If the constraint has not been found it is an error. */
121792
+ if( iEnd<=0 ){
121793
+ if( zCons ){
121794
+ errorMPrintf(ctx, "no such constraint: %s", zCons);
121795
+ }else{
121796
+ /* SQLite follows postgres in that a DROP NOT NULL on a column that is
121797
+ ** not NOT NULL is not an error. So just return the original SQL here. */
121798
+ sqlite3_result_text(ctx, (const char*)zSql, -1, SQLITE_TRANSIENT);
121799
+ }
121800
+ }else{
121801
+
121802
+ /* Figure out if an extra space should be inserted after the constraint
121803
+ ** is removed. And if an additional comma preceding the constraint
121804
+ ** should be removed. */
121805
+ const char *zSpace = " ";
121806
+ iEnd += getWhitespace(&zSql[iEnd]);
121807
+ sqlite3GetToken(&zSql[iEnd], &t);
121808
+ if( t==TK_RP || t==TK_COMMA ){
121809
+ zSpace = "";
121810
+ if( zSql[iStart-1]==',' ) iStart--;
121811
+ }
121812
+
121813
+ db = sqlite3_context_db_handle(ctx);
121814
+ zNew = sqlite3MPrintf(db, "%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
121815
+ sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
121816
+ }
121817
+}
121818
+
121819
+/*
121820
+** Internal SQL function:
121821
+**
121822
+** sqlite_add_constraint(SQL, CONSTRAINT-TEXT, ICOL)
121823
+**
121824
+** SQL is a CREATE TABLE statement. Return a modified version of
121825
+** SQL that adds CONSTRAINT-TEXT at the end of the ICOL-th column
121826
+** definition. (The left-most column defintion is 0.)
121827
+*/
121828
+static void addConstraintFunc(
121829
+ sqlite3_context *ctx,
121830
+ int NotUsed,
121831
+ sqlite3_value **argv
121832
+){
121833
+ const u8 *zSql = sqlite3_value_text(argv[0]);
121834
+ const char *zCons = (const char*)sqlite3_value_text(argv[1]);
121835
+ int iCol = sqlite3_value_int(argv[2]);
121836
+ int iOff = 0;
121837
+ int ii;
121838
+ char *zNew = 0;
121839
+ int t = 0;
121840
+ sqlite3 *db;
121841
+ UNUSED_PARAMETER(NotUsed);
121842
+
121843
+ if( skipCreateTable(ctx, zSql, &iOff) ) return;
121844
+
121845
+ for(ii=0; ii<=iCol || (iCol<0 && t!=TK_RP); ii++){
121846
+ iOff += getConstraintToken(&zSql[iOff], &t);
121847
+ while( 1 ){
121848
+ int nTok = getConstraintToken(&zSql[iOff], &t);
121849
+ if( t==TK_COMMA || t==TK_RP ) break;
121850
+ if( t==TK_ILLEGAL ){
121851
+ sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
121852
+ return;
121853
+ }
121854
+ iOff += nTok;
121855
+ }
121856
+ }
121857
+
121858
+ iOff += getWhitespace(&zSql[iOff]);
121859
+
121860
+ db = sqlite3_context_db_handle(ctx);
121861
+ if( iCol<0 ){
121862
+ zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
121863
+ }else{
121864
+ zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
121865
+ }
121866
+ sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
121867
+}
121868
+
121869
+/*
121870
+** Find a column named pCol in table pTab. If successful, set output
121871
+** parameter *piCol to the index of the column in the table and return
121872
+** SQLITE_OK. Otherwise, set *piCol to -1 and return an SQLite error
121873
+** code.
121874
+*/
121875
+static int alterFindCol(Parse *pParse, Table *pTab, Token *pCol, int *piCol){
121876
+ sqlite3 *db = pParse->db;
121877
+ char *zName = sqlite3NameFromToken(db, pCol);
121878
+ int rc = SQLITE_NOMEM;
121879
+ int iCol = -1;
121880
+
121881
+ if( zName ){
121882
+ iCol = sqlite3ColumnIndex(pTab, zName);
121883
+ if( iCol<0 ){
121884
+ sqlite3ErrorMsg(pParse, "no such column: %s", zName);
121885
+ rc = SQLITE_ERROR;
121886
+ }else{
121887
+ rc = SQLITE_OK;
121888
+ }
121889
+ }
121890
+
121891
+#ifndef SQLITE_OMIT_AUTHORIZATION
121892
+ if( rc==SQLITE_OK ){
121893
+ const char *zDb = db->aDb[sqlite3SchemaToIndex(db, pTab->pSchema)].zDbSName;
121894
+ const char *zCol = pTab->aCol[iCol].zCnName;
121895
+ if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, zCol) ){
121896
+ pTab = 0;
121897
+ }
121898
+ }
121899
+#endif
121900
+
121901
+ sqlite3DbFree(db, zName);
121902
+ *piCol = iCol;
121903
+ return rc;
121904
+}
121905
+
121906
+
121907
+/*
121908
+** Find the table named by the first entry in source list pSrc. If successful,
121909
+** return a pointer to the Table structure and set output variable (*pzDb)
121910
+** to point to the name of the database containin the table (i.e. "main",
121911
+** "temp" or the name of an attached database).
121912
+**
121913
+** If the table cannot be located, return NULL. The value of the two output
121914
+** parameters is undefined in this case.
121915
+*/
121916
+static Table *alterFindTable(
121917
+ Parse *pParse, /* Parsing context */
121918
+ SrcList *pSrc, /* Name of the table to look for */
121919
+ int *piDb, /* OUT: write the iDb here */
121920
+ const char **pzDb, /* OUT: write name of schema here */
121921
+ int bAuth /* Do ALTER TABLE authorization checks if true */
121922
+){
121923
+ sqlite3 *db = pParse->db;
121924
+ Table *pTab = 0;
121925
+ assert( sqlite3BtreeHoldsAllMutexes(db) );
121926
+ pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
121927
+ if( pTab ){
121928
+ int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
121929
+ *pzDb = db->aDb[iDb].zDbSName;
121930
+ *piDb = iDb;
121931
+
121932
+ if( SQLITE_OK!=isRealTable(pParse, pTab, 2)
121933
+ || SQLITE_OK!=isAlterableTable(pParse, pTab)
121934
+ ){
121935
+ pTab = 0;
121936
+ }
121937
+ }
121938
+#ifndef SQLITE_OMIT_AUTHORIZATION
121939
+ if( pTab && bAuth ){
121940
+ if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, *pzDb, pTab->zName, 0) ){
121941
+ pTab = 0;
121942
+ }
121943
+ }
121944
+#endif
121945
+ sqlite3SrcListDelete(db, pSrc);
121946
+ return pTab;
121947
+}
121948
+
121949
+/*
121950
+** Generate bytecode for one of:
121951
+**
121952
+** (1) ALTER TABLE pSrc DROP CONSTRAINT pCons
121953
+** (2) ALTER TABLE pSrc ALTER pCol DROP NOT NULL
121954
+**
121955
+** One of pCons and pCol must be NULL and the other non-null.
121956
+*/
121957
+SQLITE_PRIVATE void sqlite3AlterDropConstraint(
121958
+ Parse *pParse, /* Parsing context */
121959
+ SrcList *pSrc, /* The table being altered */
121960
+ Token *pCons, /* Name of the constraint to drop */
121961
+ Token *pCol /* Name of the column from which to remove the NOT NULL */
121962
+){
121963
+ sqlite3 *db = pParse->db;
121964
+ Table *pTab = 0;
121965
+ int iDb = 0;
121966
+ const char *zDb = 0;
121967
+ char *zArg = 0;
121968
+
121969
+ assert( (pCol==0)!=(pCons==0) );
121970
+ assert( pSrc->nSrc==1 );
121971
+ pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, pCons!=0);
121972
+ if( !pTab ) return;
121973
+
121974
+ if( pCons ){
121975
+ zArg = sqlite3MPrintf(db, "%.*Q", pCons->n, pCons->z);
121976
+ }else{
121977
+ int iCol;
121978
+ if( alterFindCol(pParse, pTab, pCol, &iCol) ) return;
121979
+ zArg = sqlite3MPrintf(db, "%d", iCol);
121980
+ }
121981
+
121982
+ /* Edit the SQL for the named table. */
121983
+ sqlite3NestedParse(pParse,
121984
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
121985
+ "sql = sqlite_drop_constraint(sql, %s) "
121986
+ "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
121987
+ , zDb, zArg, pTab->zName
121988
+ );
121989
+ sqlite3DbFree(db, zArg);
121990
+
121991
+ /* Finally, reload the database schema. */
121992
+ renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
121993
+}
121994
+
121995
+/*
121996
+** The implementation of SQL function sqlite_fail(MSG). This takes a single
121997
+** argument, and returns it as an error message with the error code set to
121998
+** SQLITE_CONSTRAINT.
121999
+*/
122000
+static void failConstraintFunc(
122001
+ sqlite3_context *ctx,
122002
+ int NotUsed,
122003
+ sqlite3_value **argv
122004
+){
122005
+ const char *zText = (const char*)sqlite3_value_text(argv[0]);
122006
+ int err = sqlite3_value_int(argv[1]);
122007
+ (void)NotUsed;
122008
+ sqlite3_result_error(ctx, zText, -1);
122009
+ sqlite3_result_error_code(ctx, err);
122010
+}
122011
+
122012
+/*
122013
+** Buffer pCons, which is nCons bytes in size, contains the text of a
122014
+** NOT NULL or CHECK constraint that will be inserted into a CREATE TABLE
122015
+** statement. If successful, this function returns the size of the buffer in
122016
+** bytes not including any trailing whitespace or "--" style comments. Or,
122017
+** if an OOM occurs, it returns 0 and sets db->mallocFailed to true.
122018
+**
122019
+** C-style comments at the end are preserved. "--" style comments are
122020
+** removed because the comment terminator might be \000, and we are about
122021
+** to insert the pCons[] text into the middle of a larger string, and that
122022
+** will have the effect of removing the comment terminator and messing up
122023
+** the syntax.
122024
+*/
122025
+static int alterRtrimConstraint(
122026
+ sqlite3 *db, /* used to record OOM error */
122027
+ const char *pCons, /* Buffer containing constraint */
122028
+ int nCons /* Size of pCons in bytes */
122029
+){
122030
+ u8 *zTmp = (u8*)sqlite3MPrintf(db, "%.*s", nCons, pCons);
122031
+ int iOff = 0;
122032
+ int iEnd = 0;
122033
+
122034
+ if( zTmp==0 ) return 0;
122035
+
122036
+ while( 1 ){
122037
+ int t = 0;
122038
+ int nToken = sqlite3GetToken(&zTmp[iOff], &t);
122039
+ if( t==TK_ILLEGAL ) break;
122040
+ if( t!=TK_SPACE && (t!=TK_COMMENT || zTmp[iOff]!='-') ){
122041
+ iEnd = iOff+nToken;
122042
+ }
122043
+ iOff += nToken;
122044
+ }
122045
+
122046
+ sqlite3DbFree(db, zTmp);
122047
+ return iEnd;
122048
+}
122049
+
122050
+/*
122051
+** Prepare a statement of the form:
122052
+**
122053
+** ALTER TABLE pSrc ALTER pCol SET NOT NULL
122054
+*/
122055
+SQLITE_PRIVATE void sqlite3AlterSetNotNull(
122056
+ Parse *pParse, /* Parsing context */
122057
+ SrcList *pSrc, /* Name of the table being altered */
122058
+ Token *pCol, /* Name of the column to add a NOT NULL constraint to */
122059
+ Token *pFirst /* The NOT token of the NOT NULL constraint text */
122060
+){
122061
+ Table *pTab = 0;
122062
+ int iCol = 0;
122063
+ int iDb = 0;
122064
+ const char *zDb = 0;
122065
+ const char *pCons = 0;
122066
+ int nCons = 0;
122067
+
122068
+ /* Look up the table being altered. */
122069
+ assert( pSrc->nSrc==1 );
122070
+ pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 0);
122071
+ if( !pTab ) return;
122072
+
122073
+ /* Find the column being altered. */
122074
+ if( alterFindCol(pParse, pTab, pCol, &iCol) ){
122075
+ return;
122076
+ }
122077
+
122078
+ /* Find the length in bytes of the constraint definition */
122079
+ pCons = pFirst->z;
122080
+ nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
122081
+
122082
+ /* Search for a constraint violation. Throw an exception if one is found. */
122083
+ sqlite3NestedParse(pParse,
122084
+ "SELECT sqlite_fail('constraint failed', %d) "
122085
+ "FROM %Q.%Q AS x WHERE x.%.*s IS NULL",
122086
+ SQLITE_CONSTRAINT, zDb, pTab->zName, (int)pCol->n, pCol->z
122087
+ );
122088
+
122089
+ /* Edit the SQL for the named table. */
122090
+ sqlite3NestedParse(pParse,
122091
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
122092
+ "sql = sqlite_add_constraint(sqlite_drop_constraint(sql, %d), %.*Q, %d) "
122093
+ "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
122094
+ , zDb, iCol, nCons, pCons, iCol, pTab->zName
122095
+ );
122096
+
122097
+ /* Finally, reload the database schema. */
122098
+ renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
122099
+}
122100
+
122101
+/*
122102
+** Implementation of internal SQL function:
122103
+**
122104
+** sqlite_find_constraint(SQL, CONSTRAINT-NAME)
122105
+**
122106
+** This function returns true if the SQL passed as the first argument is a
122107
+** CREATE TABLE that contains a constraint with the name CONSTRAINT-NAME,
122108
+** or false otherwise.
122109
+*/
122110
+static void findConstraintFunc(
122111
+ sqlite3_context *ctx,
122112
+ int NotUsed,
122113
+ sqlite3_value **argv
122114
+){
122115
+ const u8 *zSql = 0;
122116
+ const u8 *zCons = 0;
122117
+ int iOff = 0;
122118
+ int t = 0;
122119
+
122120
+ (void)NotUsed;
122121
+ zSql = sqlite3_value_text(argv[0]);
122122
+ zCons = sqlite3_value_text(argv[1]);
122123
+
122124
+ if( zSql==0 || zCons==0 ) return;
122125
+ while( t!=TK_LP && t!=TK_ILLEGAL ){
122126
+ iOff += sqlite3GetToken(&zSql[iOff], &t);
122127
+ }
122128
+
122129
+ while( 1 ){
122130
+ iOff += getConstraintToken(&zSql[iOff], &t);
122131
+ if( t==TK_CONSTRAINT ){
122132
+ int nTok = 0;
122133
+ int cmp = 0;
122134
+ iOff += getWhitespace(&zSql[iOff]);
122135
+ nTok = getConstraintToken(&zSql[iOff], &t);
122136
+ if( quotedCompare(ctx, &zSql[iOff], nTok, zCons, &cmp) ) return;
122137
+ if( cmp==0 ){
122138
+ sqlite3_result_int(ctx, 1);
122139
+ return;
122140
+ }
122141
+ }else if( t==TK_ILLEGAL ){
122142
+ break;
122143
+ }
122144
+ }
122145
+
122146
+ sqlite3_result_int(ctx, 0);
122147
+}
122148
+
122149
+/*
122150
+** Generate bytecode to implement:
122151
+**
122152
+** ALTER TABLE pSrc ADD [CONSTRAINT pName] CHECK(pExpr)
122153
+**
122154
+** Any "ON CONFLICT" text that occurs after the "CHECK(...)", up
122155
+** until pParse->sLastToken, is included as part of the new constraint.
122156
+*/
122157
+SQLITE_PRIVATE void sqlite3AlterAddConstraint(
122158
+ Parse *pParse, /* Parse context */
122159
+ SrcList *pSrc, /* Table to add constraint to */
122160
+ Token *pFirst, /* First token of new constraint */
122161
+ Token *pName, /* Name of new constraint. NULL if name omitted. */
122162
+ const char *pExpr, /* Text of CHECK expression */
122163
+ int nExpr /* Size of pExpr in bytes */
122164
+){
122165
+ Table *pTab = 0; /* Table identified by pSrc */
122166
+ int iDb = 0; /* Which schema does pTab live in */
122167
+ const char *zDb = 0; /* Name of the schema in which pTab lives */
122168
+ const char *pCons = 0; /* Text of the constraint */
122169
+ int nCons; /* Bytes of text to use from pCons[] */
122170
+
122171
+ /* Look up the table being altered. */
122172
+ assert( pSrc->nSrc==1 );
122173
+ pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 1);
122174
+ if( !pTab ) return;
122175
+
122176
+ /* If this new constraint has a name, check that it is not a duplicate of
122177
+ ** an existing constraint. It is an error if it is. */
122178
+ if( pName ){
122179
+ char *zName = sqlite3NameFromToken(pParse->db, pName);
122180
+
122181
+ sqlite3NestedParse(pParse,
122182
+ "SELECT sqlite_fail('constraint %q already exists', %d) "
122183
+ "FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
122184
+ "WHERE type='table' AND tbl_name=%Q COLLATE nocase "
122185
+ "AND sqlite_find_constraint(sql, %Q)",
122186
+ zName, SQLITE_ERROR, zDb, pTab->zName, zName
122187
+ );
122188
+ sqlite3DbFree(pParse->db, zName);
122189
+ }
122190
+
122191
+ /* Search for a constraint violation. Throw an exception if one is found. */
122192
+ sqlite3NestedParse(pParse,
122193
+ "SELECT sqlite_fail('constraint failed', %d) "
122194
+ "FROM %Q.%Q WHERE (%.*s) IS NOT TRUE",
122195
+ SQLITE_CONSTRAINT, zDb, pTab->zName, nExpr, pExpr
122196
+ );
122197
+
122198
+ /* Edit the SQL for the named table. */
122199
+ pCons = pFirst->z;
122200
+ nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
122201
+
122202
+ sqlite3NestedParse(pParse,
122203
+ "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
122204
+ "sql = sqlite_add_constraint(sql, %.*Q, -1) "
122205
+ "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
122206
+ , zDb, nCons, pCons, pTab->zName
122207
+ );
122208
+
122209
+ /* Finally, reload the database schema. */
122210
+ renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
122211
+}
121495122212
121496122213
/*
121497122214
** Register built-in functions used to help implement ALTER TABLE
121498122215
*/
121499122216
SQLITE_PRIVATE void sqlite3AlterFunctions(void){
@@ -121501,10 +122218,14 @@
121501122218
INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc),
121502122219
INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc),
121503122220
INTERNAL_FUNCTION(sqlite_rename_test, 7, renameTableTest),
121504122221
INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc),
121505122222
INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
122223
+ INTERNAL_FUNCTION(sqlite_drop_constraint,2, dropConstraintFunc),
122224
+ INTERNAL_FUNCTION(sqlite_fail, 2, failConstraintFunc),
122225
+ INTERNAL_FUNCTION(sqlite_add_constraint, 3, addConstraintFunc),
122226
+ INTERNAL_FUNCTION(sqlite_find_constraint,2, findConstraintFunc),
121506122227
};
121507122228
sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
121508122229
}
121509122230
#endif /* SQLITE_ALTER_TABLE */
121510122231
@@ -145769,11 +146490,12 @@
145769146490
/* A error message has already been generated. Do not overwrite it */
145770146491
}else if( pData->mInitFlags & (INITFLAG_AlterMask) ){
145771146492
static const char *azAlterType[] = {
145772146493
"rename",
145773146494
"drop column",
145774
- "add column"
146495
+ "add column",
146496
+ "drop constraint"
145775146497
};
145776146498
*pData->pzErrMsg = sqlite3MPrintf(db,
145777146499
"error in %s %s after %s: %s", azObj[0], azObj[1],
145778146500
azAlterType[(pData->mInitFlags&INITFLAG_AlterMask)-1],
145779146501
zExtra
@@ -178135,22 +178857,22 @@
178135178857
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
178136178858
#undef YYERRORSYMBOL
178137178859
#undef YYERRSYMDT
178138178860
#undef YYFALLBACK
178139178861
#define YYFALLBACK 1
178140
-#define YYNSTATE 583
178141
-#define YYNRULE 409
178142
-#define YYNRULE_WITH_ACTION 344
178862
+#define YYNSTATE 602
178863
+#define YYNRULE 414
178864
+#define YYNRULE_WITH_ACTION 349
178143178865
#define YYNTOKEN 187
178144
-#define YY_MAX_SHIFT 582
178145
-#define YY_MIN_SHIFTREDUCE 845
178146
-#define YY_MAX_SHIFTREDUCE 1253
178147
-#define YY_ERROR_ACTION 1254
178148
-#define YY_ACCEPT_ACTION 1255
178149
-#define YY_NO_ACTION 1256
178150
-#define YY_MIN_REDUCE 1257
178151
-#define YY_MAX_REDUCE 1665
178866
+#define YY_MAX_SHIFT 601
178867
+#define YY_MIN_SHIFTREDUCE 870
178868
+#define YY_MAX_SHIFTREDUCE 1283
178869
+#define YY_ERROR_ACTION 1284
178870
+#define YY_ACCEPT_ACTION 1285
178871
+#define YY_NO_ACTION 1286
178872
+#define YY_MIN_REDUCE 1287
178873
+#define YY_MAX_REDUCE 1700
178152178874
#define YY_MIN_DSTRCTR 206
178153178875
#define YY_MAX_DSTRCTR 320
178154178876
/************* End control #defines *******************************************/
178155178877
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
178156178878
@@ -178231,647 +178953,686 @@
178231178953
** yy_reduce_ofst[] For each state, the offset into yy_action for
178232178954
** shifting non-terminals after a reduce.
178233178955
** yy_default[] Default action for each state.
178234178956
**
178235178957
*********** Begin parsing tables **********************************************/
178236
-#define YY_ACTTAB_COUNT (2207)
178958
+#define YY_ACTTAB_COUNT (2379)
178237178959
static const YYACTIONTYPE yy_action[] = {
178238
- /* 0 */ 130, 127, 234, 282, 282, 1328, 576, 1307, 460, 289,
178239
- /* 10 */ 289, 576, 1622, 381, 576, 1328, 573, 576, 562, 413,
178240
- /* 20 */ 1300, 1542, 573, 481, 562, 524, 460, 459, 558, 82,
178241
- /* 30 */ 82, 983, 294, 375, 51, 51, 498, 61, 61, 984,
178242
- /* 40 */ 82, 82, 1577, 137, 138, 91, 7, 1228, 1228, 1063,
178243
- /* 50 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 413,
178244
- /* 60 */ 288, 288, 182, 288, 288, 481, 536, 288, 288, 130,
178245
- /* 70 */ 127, 234, 432, 573, 525, 562, 573, 557, 562, 1290,
178246
- /* 80 */ 573, 421, 562, 137, 138, 91, 559, 1228, 1228, 1063,
178247
- /* 90 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 296,
178248
- /* 100 */ 460, 398, 1249, 134, 134, 134, 134, 133, 133, 132,
178249
- /* 110 */ 132, 132, 131, 128, 451, 451, 1050, 1050, 1064, 1067,
178250
- /* 120 */ 1255, 1, 1, 582, 2, 1259, 581, 1174, 1259, 1174,
178251
- /* 130 */ 321, 413, 155, 321, 1584, 155, 379, 112, 481, 1341,
178252
- /* 140 */ 456, 299, 1341, 134, 134, 134, 134, 133, 133, 132,
178253
- /* 150 */ 132, 132, 131, 128, 451, 137, 138, 91, 498, 1228,
178254
- /* 160 */ 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136,
178255
- /* 170 */ 136, 1204, 862, 1281, 288, 288, 283, 288, 288, 523,
178256
- /* 180 */ 523, 1250, 139, 578, 7, 578, 1345, 573, 1169, 562,
178257
- /* 190 */ 573, 1054, 562, 136, 136, 136, 136, 129, 573, 547,
178258
- /* 200 */ 562, 1169, 245, 1541, 1169, 245, 133, 133, 132, 132,
178259
- /* 210 */ 132, 131, 128, 451, 302, 134, 134, 134, 134, 133,
178260
- /* 220 */ 133, 132, 132, 132, 131, 128, 451, 1575, 1204, 1205,
178261
- /* 230 */ 1204, 7, 470, 550, 455, 413, 550, 455, 130, 127,
178262
- /* 240 */ 234, 134, 134, 134, 134, 133, 133, 132, 132, 132,
178263
- /* 250 */ 131, 128, 451, 136, 136, 136, 136, 538, 483, 137,
178264
- /* 260 */ 138, 91, 1019, 1228, 1228, 1063, 1066, 1053, 1053, 135,
178265
- /* 270 */ 135, 136, 136, 136, 136, 1085, 576, 1204, 132, 132,
178266
- /* 280 */ 132, 131, 128, 451, 93, 214, 134, 134, 134, 134,
178267
- /* 290 */ 133, 133, 132, 132, 132, 131, 128, 451, 401, 19,
178268
- /* 300 */ 19, 134, 134, 134, 134, 133, 133, 132, 132, 132,
178269
- /* 310 */ 131, 128, 451, 1498, 426, 267, 344, 467, 332, 134,
178270
- /* 320 */ 134, 134, 134, 133, 133, 132, 132, 132, 131, 128,
178271
- /* 330 */ 451, 1281, 576, 6, 1204, 1205, 1204, 257, 576, 413,
178272
- /* 340 */ 511, 508, 507, 1279, 94, 1019, 464, 1204, 551, 551,
178273
- /* 350 */ 506, 1224, 1571, 44, 38, 51, 51, 411, 576, 413,
178274
- /* 360 */ 45, 51, 51, 137, 138, 91, 530, 1228, 1228, 1063,
178275
- /* 370 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 398,
178276
- /* 380 */ 1148, 82, 82, 137, 138, 91, 39, 1228, 1228, 1063,
178277
- /* 390 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 344,
178278
- /* 400 */ 44, 288, 288, 375, 1204, 1205, 1204, 209, 1204, 1224,
178279
- /* 410 */ 320, 567, 471, 576, 573, 576, 562, 576, 316, 264,
178280
- /* 420 */ 231, 46, 160, 134, 134, 134, 134, 133, 133, 132,
178281
- /* 430 */ 132, 132, 131, 128, 451, 303, 82, 82, 82, 82,
178282
- /* 440 */ 82, 82, 442, 134, 134, 134, 134, 133, 133, 132,
178283
- /* 450 */ 132, 132, 131, 128, 451, 1582, 544, 320, 567, 1250,
178284
- /* 460 */ 874, 1582, 380, 382, 413, 1204, 1205, 1204, 360, 182,
178285
- /* 470 */ 288, 288, 1576, 557, 1339, 557, 7, 557, 1277, 472,
178286
- /* 480 */ 346, 526, 531, 573, 556, 562, 439, 1511, 137, 138,
178287
- /* 490 */ 91, 219, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135,
178288
- /* 500 */ 136, 136, 136, 136, 465, 1511, 1513, 532, 413, 288,
178289
- /* 510 */ 288, 423, 512, 288, 288, 411, 288, 288, 874, 130,
178290
- /* 520 */ 127, 234, 573, 1107, 562, 1204, 573, 1107, 562, 573,
178291
- /* 530 */ 560, 562, 137, 138, 91, 1293, 1228, 1228, 1063, 1066,
178292
- /* 540 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 134, 134,
178293
- /* 550 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451,
178294
- /* 560 */ 493, 503, 1292, 1204, 257, 288, 288, 511, 508, 507,
178295
- /* 570 */ 1204, 1628, 1169, 123, 568, 275, 4, 506, 573, 1511,
178296
- /* 580 */ 562, 331, 1204, 1205, 1204, 1169, 548, 548, 1169, 261,
178297
- /* 590 */ 571, 7, 134, 134, 134, 134, 133, 133, 132, 132,
178298
- /* 600 */ 132, 131, 128, 451, 108, 533, 130, 127, 234, 1204,
178299
- /* 610 */ 448, 447, 413, 1451, 452, 983, 886, 96, 1598, 1233,
178300
- /* 620 */ 1204, 1205, 1204, 984, 1235, 1450, 565, 1204, 1205, 1204,
178301
- /* 630 */ 229, 522, 1234, 534, 1333, 1333, 137, 138, 91, 1449,
178302
- /* 640 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178303
- /* 650 */ 136, 136, 373, 1595, 971, 1040, 413, 1236, 418, 1236,
178304
- /* 660 */ 879, 121, 121, 948, 373, 1595, 1204, 1205, 1204, 122,
178305
- /* 670 */ 1204, 452, 577, 452, 363, 417, 1028, 882, 373, 1595,
178306
- /* 680 */ 137, 138, 91, 462, 1228, 1228, 1063, 1066, 1053, 1053,
178307
- /* 690 */ 135, 135, 136, 136, 136, 136, 134, 134, 134, 134,
178308
- /* 700 */ 133, 133, 132, 132, 132, 131, 128, 451, 1028, 1028,
178309
- /* 710 */ 1030, 1031, 35, 570, 570, 570, 197, 423, 1040, 198,
178310
- /* 720 */ 1204, 123, 568, 1204, 4, 320, 567, 1204, 1205, 1204,
178311
- /* 730 */ 40, 388, 576, 384, 882, 1029, 423, 1188, 571, 1028,
178312
- /* 740 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178313
- /* 750 */ 128, 451, 529, 1568, 1204, 19, 19, 1204, 575, 492,
178314
- /* 760 */ 413, 157, 452, 489, 1187, 1331, 1331, 5, 1204, 949,
178315
- /* 770 */ 431, 1028, 1028, 1030, 565, 22, 22, 1204, 1205, 1204,
178316
- /* 780 */ 1204, 1205, 1204, 477, 137, 138, 91, 212, 1228, 1228,
178317
- /* 790 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178318
- /* 800 */ 1188, 48, 111, 1040, 413, 1204, 213, 970, 1041, 121,
178319
- /* 810 */ 121, 1204, 1205, 1204, 1204, 1205, 1204, 122, 221, 452,
178320
- /* 820 */ 577, 452, 44, 487, 1028, 1204, 1205, 1204, 137, 138,
178321
- /* 830 */ 91, 378, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135,
178322
- /* 840 */ 136, 136, 136, 136, 134, 134, 134, 134, 133, 133,
178323
- /* 850 */ 132, 132, 132, 131, 128, 451, 1028, 1028, 1030, 1031,
178324
- /* 860 */ 35, 461, 1204, 1205, 1204, 1569, 1040, 377, 214, 1149,
178325
- /* 870 */ 1657, 535, 1657, 437, 902, 320, 567, 1568, 364, 320,
178326
- /* 880 */ 567, 412, 329, 1029, 519, 1188, 3, 1028, 134, 134,
178327
- /* 890 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451,
178328
- /* 900 */ 1659, 399, 1169, 307, 893, 307, 515, 576, 413, 214,
178329
- /* 910 */ 498, 944, 1024, 540, 903, 1169, 943, 392, 1169, 1028,
178330
- /* 920 */ 1028, 1030, 406, 298, 1204, 50, 1149, 1658, 413, 1658,
178331
- /* 930 */ 145, 145, 137, 138, 91, 293, 1228, 1228, 1063, 1066,
178332
- /* 940 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 1188, 1147,
178333
- /* 950 */ 514, 1568, 137, 138, 91, 1505, 1228, 1228, 1063, 1066,
178334
- /* 960 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 434, 323,
178335
- /* 970 */ 435, 539, 111, 1506, 274, 291, 372, 517, 367, 516,
178336
- /* 980 */ 262, 1204, 1205, 1204, 1574, 481, 363, 576, 7, 1569,
178337
- /* 990 */ 1568, 377, 134, 134, 134, 134, 133, 133, 132, 132,
178338
- /* 1000 */ 132, 131, 128, 451, 1568, 576, 1147, 576, 232, 576,
178339
- /* 1010 */ 19, 19, 134, 134, 134, 134, 133, 133, 132, 132,
178340
- /* 1020 */ 132, 131, 128, 451, 1169, 433, 576, 1207, 19, 19,
178341
- /* 1030 */ 19, 19, 19, 19, 1627, 576, 911, 1169, 47, 120,
178342
- /* 1040 */ 1169, 117, 413, 306, 498, 438, 1125, 206, 336, 19,
178343
- /* 1050 */ 19, 1435, 49, 449, 449, 449, 1368, 315, 81, 81,
178344
- /* 1060 */ 576, 304, 413, 1570, 207, 377, 137, 138, 91, 115,
178345
- /* 1070 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178346
- /* 1080 */ 136, 136, 576, 82, 82, 1207, 137, 138, 91, 1340,
178347
- /* 1090 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178348
- /* 1100 */ 136, 136, 1569, 386, 377, 82, 82, 463, 1126, 1552,
178349
- /* 1110 */ 333, 463, 335, 131, 128, 451, 1569, 161, 377, 16,
178350
- /* 1120 */ 317, 387, 428, 1127, 448, 447, 134, 134, 134, 134,
178351
- /* 1130 */ 133, 133, 132, 132, 132, 131, 128, 451, 1128, 576,
178352
- /* 1140 */ 1105, 10, 445, 267, 576, 1554, 134, 134, 134, 134,
178353
- /* 1150 */ 133, 133, 132, 132, 132, 131, 128, 451, 532, 576,
178354
- /* 1160 */ 922, 576, 19, 19, 576, 1573, 576, 147, 147, 7,
178355
- /* 1170 */ 923, 1236, 498, 1236, 576, 487, 413, 552, 285, 1224,
178356
- /* 1180 */ 969, 215, 82, 82, 66, 66, 1435, 67, 67, 21,
178357
- /* 1190 */ 21, 1110, 1110, 495, 334, 297, 413, 53, 53, 297,
178358
- /* 1200 */ 137, 138, 91, 119, 1228, 1228, 1063, 1066, 1053, 1053,
178359
- /* 1210 */ 135, 135, 136, 136, 136, 136, 413, 1336, 1311, 446,
178360
- /* 1220 */ 137, 138, 91, 227, 1228, 1228, 1063, 1066, 1053, 1053,
178361
- /* 1230 */ 135, 135, 136, 136, 136, 136, 574, 1224, 936, 936,
178362
- /* 1240 */ 137, 126, 91, 141, 1228, 1228, 1063, 1066, 1053, 1053,
178363
- /* 1250 */ 135, 135, 136, 136, 136, 136, 533, 429, 472, 346,
178364
- /* 1260 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178365
- /* 1270 */ 128, 451, 576, 457, 233, 343, 1435, 403, 498, 1550,
178366
- /* 1280 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178367
- /* 1290 */ 128, 451, 576, 324, 576, 82, 82, 487, 576, 969,
178368
- /* 1300 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178369
- /* 1310 */ 128, 451, 288, 288, 546, 68, 68, 54, 54, 553,
178370
- /* 1320 */ 413, 69, 69, 351, 6, 573, 944, 562, 410, 409,
178371
- /* 1330 */ 1435, 943, 450, 545, 260, 259, 258, 576, 158, 576,
178372
- /* 1340 */ 413, 222, 1180, 479, 969, 138, 91, 430, 1228, 1228,
178373
- /* 1350 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178374
- /* 1360 */ 70, 70, 71, 71, 576, 1126, 91, 576, 1228, 1228,
178375
- /* 1370 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178376
- /* 1380 */ 1127, 166, 850, 851, 852, 1282, 419, 72, 72, 108,
178377
- /* 1390 */ 73, 73, 1310, 358, 1180, 1128, 576, 305, 576, 123,
178378
- /* 1400 */ 568, 494, 4, 488, 134, 134, 134, 134, 133, 133,
178379
- /* 1410 */ 132, 132, 132, 131, 128, 451, 571, 564, 534, 55,
178380
- /* 1420 */ 55, 56, 56, 576, 134, 134, 134, 134, 133, 133,
178381
- /* 1430 */ 132, 132, 132, 131, 128, 451, 576, 1104, 233, 1104,
178382
- /* 1440 */ 452, 1602, 582, 2, 1259, 576, 57, 57, 576, 321,
178383
- /* 1450 */ 576, 155, 565, 1435, 485, 353, 576, 356, 1341, 59,
178384
- /* 1460 */ 59, 576, 44, 969, 569, 419, 576, 238, 60, 60,
178385
- /* 1470 */ 261, 74, 74, 75, 75, 287, 231, 576, 1366, 76,
178386
- /* 1480 */ 76, 1040, 420, 184, 20, 20, 576, 121, 121, 77,
178387
- /* 1490 */ 77, 97, 218, 288, 288, 122, 125, 452, 577, 452,
178388
- /* 1500 */ 143, 143, 1028, 576, 520, 576, 573, 576, 562, 144,
178389
- /* 1510 */ 144, 474, 227, 1244, 478, 123, 568, 576, 4, 320,
178390
- /* 1520 */ 567, 245, 411, 576, 443, 411, 78, 78, 62, 62,
178391
- /* 1530 */ 79, 79, 571, 319, 1028, 1028, 1030, 1031, 35, 418,
178392
- /* 1540 */ 63, 63, 576, 290, 411, 9, 80, 80, 1144, 576,
178393
- /* 1550 */ 400, 576, 486, 455, 576, 1223, 452, 576, 325, 342,
178394
- /* 1560 */ 576, 111, 576, 1188, 242, 64, 64, 473, 565, 576,
178395
- /* 1570 */ 23, 576, 170, 170, 171, 171, 576, 87, 87, 328,
178396
- /* 1580 */ 65, 65, 542, 83, 83, 146, 146, 541, 123, 568,
178397
- /* 1590 */ 341, 4, 84, 84, 168, 168, 576, 1040, 576, 148,
178398
- /* 1600 */ 148, 576, 1380, 121, 121, 571, 1021, 576, 266, 576,
178399
- /* 1610 */ 424, 122, 576, 452, 577, 452, 576, 553, 1028, 142,
178400
- /* 1620 */ 142, 169, 169, 576, 162, 162, 528, 889, 371, 452,
178401
- /* 1630 */ 152, 152, 151, 151, 1379, 149, 149, 109, 370, 150,
178402
- /* 1640 */ 150, 565, 576, 480, 576, 266, 86, 86, 576, 1092,
178403
- /* 1650 */ 1028, 1028, 1030, 1031, 35, 542, 482, 576, 266, 466,
178404
- /* 1660 */ 543, 123, 568, 1616, 4, 88, 88, 85, 85, 475,
178405
- /* 1670 */ 1040, 52, 52, 222, 901, 900, 121, 121, 571, 1188,
178406
- /* 1680 */ 58, 58, 244, 1032, 122, 889, 452, 577, 452, 908,
178407
- /* 1690 */ 909, 1028, 300, 347, 504, 111, 263, 361, 165, 111,
178408
- /* 1700 */ 111, 1088, 452, 263, 974, 1153, 266, 1092, 986, 987,
178409
- /* 1710 */ 942, 939, 125, 125, 565, 1103, 872, 1103, 159, 941,
178410
- /* 1720 */ 1309, 125, 1557, 1028, 1028, 1030, 1031, 35, 542, 337,
178411
- /* 1730 */ 1530, 205, 1529, 541, 499, 1589, 490, 348, 1376, 352,
178412
- /* 1740 */ 355, 1032, 357, 1040, 359, 1324, 1308, 366, 563, 121,
178413
- /* 1750 */ 121, 376, 1188, 1389, 1434, 1362, 280, 122, 1374, 452,
178414
- /* 1760 */ 577, 452, 167, 1439, 1028, 1289, 1280, 1268, 1267, 1269,
178415
- /* 1770 */ 1609, 1359, 312, 313, 314, 397, 12, 237, 224, 1421,
178416
- /* 1780 */ 295, 1416, 1409, 1426, 339, 484, 340, 509, 1371, 1612,
178417
- /* 1790 */ 1372, 1425, 1244, 404, 301, 228, 1028, 1028, 1030, 1031,
178418
- /* 1800 */ 35, 1601, 1192, 454, 345, 1307, 292, 369, 1502, 1501,
178419
- /* 1810 */ 270, 396, 396, 395, 277, 393, 1370, 1369, 859, 1549,
178420
- /* 1820 */ 186, 123, 568, 235, 4, 1188, 391, 210, 211, 223,
178421
- /* 1830 */ 1547, 239, 1241, 327, 422, 96, 220, 195, 571, 180,
178422
- /* 1840 */ 188, 326, 468, 469, 190, 191, 502, 192, 193, 566,
178423
- /* 1850 */ 247, 109, 1430, 491, 199, 251, 102, 281, 402, 476,
178424
- /* 1860 */ 405, 1496, 452, 497, 253, 1422, 13, 1428, 14, 1427,
178425
- /* 1870 */ 203, 1507, 241, 500, 565, 354, 407, 92, 95, 1270,
178426
- /* 1880 */ 175, 254, 518, 43, 1327, 255, 1326, 1325, 436, 1518,
178427
- /* 1890 */ 350, 1318, 104, 229, 893, 1626, 440, 441, 1625, 408,
178428
- /* 1900 */ 240, 1296, 268, 1040, 310, 269, 1297, 527, 444, 121,
178429
- /* 1910 */ 121, 368, 1295, 1594, 1624, 311, 1394, 122, 1317, 452,
178430
- /* 1920 */ 577, 452, 374, 1580, 1028, 1393, 140, 553, 11, 90,
178431
- /* 1930 */ 568, 385, 4, 116, 318, 414, 1579, 110, 1483, 537,
178432
- /* 1940 */ 320, 567, 1350, 555, 42, 579, 571, 1349, 1198, 383,
178433
- /* 1950 */ 276, 390, 216, 389, 278, 279, 1028, 1028, 1030, 1031,
178434
- /* 1960 */ 35, 172, 580, 1265, 458, 1260, 415, 416, 185, 156,
178435
- /* 1970 */ 452, 1534, 1535, 173, 1533, 1532, 89, 308, 225, 226,
178436
- /* 1980 */ 846, 174, 565, 453, 217, 1188, 322, 236, 1102, 154,
178437
- /* 1990 */ 1100, 330, 187, 176, 1223, 243, 189, 925, 338, 246,
178438
- /* 2000 */ 1116, 194, 177, 425, 178, 427, 98, 196, 99, 100,
178439
- /* 2010 */ 101, 1040, 179, 1119, 1115, 248, 249, 121, 121, 163,
178440
- /* 2020 */ 24, 250, 349, 1238, 496, 122, 1108, 452, 577, 452,
178441
- /* 2030 */ 1192, 454, 1028, 266, 292, 200, 252, 201, 861, 396,
178442
- /* 2040 */ 396, 395, 277, 393, 15, 501, 859, 370, 292, 256,
178443
- /* 2050 */ 202, 554, 505, 396, 396, 395, 277, 393, 103, 239,
178444
- /* 2060 */ 859, 327, 25, 26, 1028, 1028, 1030, 1031, 35, 326,
178445
- /* 2070 */ 362, 510, 891, 239, 365, 327, 513, 904, 105, 309,
178446
- /* 2080 */ 164, 181, 27, 326, 106, 521, 107, 1185, 1069, 1155,
178447
- /* 2090 */ 17, 1154, 230, 1188, 284, 286, 265, 204, 125, 1171,
178448
- /* 2100 */ 241, 28, 978, 972, 29, 41, 1175, 1179, 175, 1173,
178449
- /* 2110 */ 30, 43, 31, 8, 241, 1178, 32, 1160, 208, 549,
178450
- /* 2120 */ 33, 111, 175, 1083, 1070, 43, 1068, 1072, 240, 113,
178451
- /* 2130 */ 114, 34, 561, 118, 1124, 271, 1073, 36, 18, 572,
178452
- /* 2140 */ 1033, 873, 240, 124, 37, 935, 272, 273, 1617, 183,
178453
- /* 2150 */ 153, 394, 1194, 1193, 1256, 1256, 1256, 1256, 1256, 1256,
178454
- /* 2160 */ 1256, 1256, 1256, 414, 1256, 1256, 1256, 1256, 320, 567,
178455
- /* 2170 */ 1256, 1256, 1256, 1256, 1256, 1256, 1256, 414, 1256, 1256,
178456
- /* 2180 */ 1256, 1256, 320, 567, 1256, 1256, 1256, 1256, 1256, 1256,
178457
- /* 2190 */ 1256, 1256, 458, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
178458
- /* 2200 */ 1256, 1256, 1256, 1256, 1256, 1256, 458,
178960
+ /* 0 */ 134, 131, 238, 291, 291, 1358, 595, 1337, 479, 483,
178961
+ /* 10 */ 595, 436, 595, 393, 595, 1358, 592, 595, 581, 425,
178962
+ /* 20 */ 423, 1572, 134, 131, 238, 543, 479, 478, 577, 84,
178963
+ /* 30 */ 84, 1008, 304, 51, 51, 51, 51, 63, 63, 1009,
178964
+ /* 40 */ 84, 84, 1132, 141, 142, 93, 1132, 1258, 1258, 1088,
178965
+ /* 50 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 425,
178966
+ /* 60 */ 297, 297, 1481, 297, 297, 569, 555, 297, 297, 134,
178967
+ /* 70 */ 131, 238, 1130, 592, 544, 581, 592, 576, 581, 512,
178968
+ /* 80 */ 592, 343, 581, 141, 142, 93, 578, 1258, 1258, 1088,
178969
+ /* 90 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 6,
178970
+ /* 100 */ 479, 385, 1630, 138, 138, 138, 138, 137, 137, 136,
178971
+ /* 110 */ 136, 136, 135, 132, 464, 1363, 1363, 595, 1044, 1603,
178972
+ /* 120 */ 1285, 1, 1, 601, 2, 1289, 44, 1204, 231, 1204,
178973
+ /* 130 */ 331, 425, 158, 1617, 392, 1617, 563, 116, 500, 1371,
178974
+ /* 140 */ 84, 84, 569, 138, 138, 138, 138, 137, 137, 136,
178975
+ /* 150 */ 136, 136, 135, 132, 464, 141, 142, 93, 517, 1258,
178976
+ /* 160 */ 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140,
178977
+ /* 170 */ 140, 1234, 356, 212, 297, 297, 464, 576, 490, 1234,
178978
+ /* 180 */ 570, 570, 143, 330, 586, 1320, 550, 592, 1199, 581,
178979
+ /* 190 */ 491, 358, 45, 140, 140, 140, 140, 133, 394, 566,
178980
+ /* 200 */ 1323, 1199, 253, 426, 1199, 137, 137, 136, 136, 136,
178981
+ /* 210 */ 135, 132, 464, 292, 306, 138, 138, 138, 138, 137,
178982
+ /* 220 */ 137, 136, 136, 136, 135, 132, 464, 1322, 1234, 1235,
178983
+ /* 230 */ 1234, 1605, 413, 389, 468, 425, 1234, 1235, 1234, 491,
178984
+ /* 240 */ 358, 138, 138, 138, 138, 137, 137, 136, 136, 136,
178985
+ /* 250 */ 135, 132, 464, 113, 134, 131, 238, 557, 1606, 141,
178986
+ /* 260 */ 142, 93, 595, 1258, 1258, 1088, 1091, 1078, 1078, 139,
178987
+ /* 270 */ 139, 140, 140, 140, 140, 134, 131, 238, 1612, 425,
178988
+ /* 280 */ 502, 185, 7, 334, 97, 19, 19, 994, 140, 140,
178989
+ /* 290 */ 140, 140, 136, 136, 136, 135, 132, 464, 1179, 1692,
178990
+ /* 300 */ 209, 1692, 1610, 141, 142, 93, 7, 1258, 1258, 1088,
178991
+ /* 310 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 138,
178992
+ /* 320 */ 138, 138, 138, 137, 137, 136, 136, 136, 135, 132,
178993
+ /* 330 */ 464, 1663, 1234, 589, 589, 589, 138, 138, 138, 138,
178994
+ /* 340 */ 137, 137, 136, 136, 136, 135, 132, 464, 138, 138,
178995
+ /* 350 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
178996
+ /* 360 */ 275, 595, 430, 138, 138, 138, 138, 137, 137, 136,
178997
+ /* 370 */ 136, 136, 135, 132, 464, 400, 1234, 396, 1177, 461,
178998
+ /* 380 */ 460, 237, 1611, 425, 51, 51, 7, 335, 1263, 1234,
178999
+ /* 390 */ 1235, 1234, 1311, 1265, 549, 145, 1254, 283, 542, 542,
179000
+ /* 400 */ 595, 1264, 597, 7, 597, 927, 994, 141, 142, 93,
179001
+ /* 410 */ 506, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140,
179002
+ /* 420 */ 140, 140, 140, 19, 19, 44, 1266, 425, 1266, 297,
179003
+ /* 430 */ 297, 1234, 98, 1234, 1235, 1234, 265, 534, 439, 530,
179004
+ /* 440 */ 527, 526, 592, 1633, 581, 928, 511, 272, 235, 525,
179005
+ /* 450 */ 508, 141, 142, 93, 1254, 1258, 1258, 1088, 1091, 1078,
179006
+ /* 460 */ 1078, 139, 139, 140, 140, 140, 140, 138, 138, 138,
179007
+ /* 470 */ 138, 137, 137, 136, 136, 136, 135, 132, 464, 595,
179008
+ /* 480 */ 422, 421, 330, 586, 1619, 517, 391, 517, 1234, 1235,
179009
+ /* 490 */ 1234, 1274, 127, 587, 265, 4, 1311, 530, 527, 526,
179010
+ /* 500 */ 595, 448, 84, 84, 594, 595, 572, 525, 1309, 590,
179011
+ /* 510 */ 308, 138, 138, 138, 138, 137, 137, 136, 136, 136,
179012
+ /* 520 */ 135, 132, 464, 19, 19, 161, 1234, 390, 19, 19,
179013
+ /* 530 */ 1571, 425, 1535, 465, 1637, 601, 2, 1289, 444, 576,
179014
+ /* 540 */ 330, 586, 331, 446, 158, 584, 1274, 481, 575, 595,
179015
+ /* 550 */ 240, 1371, 506, 551, 1234, 141, 142, 93, 313, 1258,
179016
+ /* 560 */ 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140,
179017
+ /* 570 */ 140, 160, 83, 83, 1065, 974, 135, 132, 464, 595,
179018
+ /* 580 */ 125, 125, 973, 1234, 1235, 1234, 297, 297, 126, 517,
179019
+ /* 590 */ 465, 596, 465, 297, 297, 1053, 1234, 1369, 387, 592,
179020
+ /* 600 */ 1234, 581, 84, 84, 517, 242, 592, 1465, 581, 46,
179021
+ /* 610 */ 473, 1234, 1235, 1234, 253, 138, 138, 138, 138, 137,
179022
+ /* 620 */ 137, 136, 136, 136, 135, 132, 464, 1053, 1053, 1055,
179023
+ /* 630 */ 1056, 35, 297, 297, 1370, 399, 425, 445, 996, 576,
179024
+ /* 640 */ 372, 415, 233, 541, 413, 592, 468, 581, 452, 1366,
179025
+ /* 650 */ 112, 552, 355, 1234, 1235, 1234, 1218, 1234, 1235, 1234,
179026
+ /* 660 */ 141, 142, 93, 223, 1258, 1258, 1088, 1091, 1078, 1078,
179027
+ /* 670 */ 139, 139, 140, 140, 140, 140, 297, 297, 441, 553,
179028
+ /* 680 */ 425, 298, 298, 1375, 531, 330, 586, 1199, 115, 592,
179029
+ /* 690 */ 1465, 581, 100, 1480, 592, 592, 581, 581, 559, 1307,
179030
+ /* 700 */ 1199, 907, 545, 1199, 141, 142, 93, 498, 1258, 1258,
179031
+ /* 710 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179032
+ /* 720 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,
179033
+ /* 730 */ 132, 464, 385, 1630, 297, 297, 470, 297, 297, 472,
179034
+ /* 740 */ 200, 579, 1065, 201, 44, 127, 587, 592, 4, 581,
179035
+ /* 750 */ 592, 1044, 581, 482, 40, 500, 558, 482, 907, 1054,
179036
+ /* 760 */ 1479, 442, 590, 1053, 138, 138, 138, 138, 137, 137,
179037
+ /* 770 */ 136, 136, 136, 135, 132, 464, 297, 297, 1234, 1657,
179038
+ /* 780 */ 492, 1234, 1603, 480, 425, 506, 465, 1330, 911, 592,
179039
+ /* 790 */ 918, 581, 1234, 1361, 1361, 1053, 1053, 1055, 584, 385,
179040
+ /* 800 */ 1630, 330, 586, 353, 5, 356, 486, 344, 141, 142,
179041
+ /* 810 */ 93, 185, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179042
+ /* 820 */ 140, 140, 140, 140, 1218, 1694, 411, 1065, 425, 1234,
179043
+ /* 830 */ 48, 309, 904, 125, 125, 1234, 1235, 1234, 1234, 1235,
179044
+ /* 840 */ 1234, 126, 1234, 465, 596, 465, 348, 517, 1053, 1234,
179045
+ /* 850 */ 1235, 1234, 141, 142, 93, 3, 1258, 1258, 1088, 1091,
179046
+ /* 860 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 138, 138,
179047
+ /* 870 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179048
+ /* 880 */ 1053, 1053, 1055, 1056, 35, 315, 1234, 1235, 1234, 1234,
179049
+ /* 890 */ 1065, 1237, 363, 1234, 1604, 887, 389, 341, 500, 1234,
179050
+ /* 900 */ 1235, 1234, 595, 1075, 1075, 1089, 1092, 1054, 345, 1218,
179051
+ /* 910 */ 347, 1053, 138, 138, 138, 138, 137, 137, 136, 136,
179052
+ /* 920 */ 136, 135, 132, 464, 436, 19, 19, 370, 567, 567,
179053
+ /* 930 */ 595, 554, 425, 7, 1398, 325, 1217, 462, 462, 462,
179054
+ /* 940 */ 316, 1582, 432, 1053, 1053, 1055, 1234, 1235, 1234, 1237,
179055
+ /* 950 */ 1234, 1235, 1234, 84, 84, 489, 141, 142, 93, 595,
179056
+ /* 960 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179057
+ /* 970 */ 140, 140, 1218, 995, 312, 383, 425, 600, 1079, 1289,
179058
+ /* 980 */ 1066, 115, 19, 19, 331, 382, 158, 1603, 1536, 365,
179059
+ /* 990 */ 326, 368, 346, 1371, 216, 461, 460, 451, 1110, 236,
179060
+ /* 1000 */ 141, 142, 93, 1465, 1258, 1258, 1088, 1091, 1078, 1078,
179061
+ /* 1010 */ 139, 139, 140, 140, 140, 140, 138, 138, 138, 138,
179062
+ /* 1020 */ 137, 137, 136, 136, 136, 135, 132, 464, 297, 297,
179063
+ /* 1030 */ 595, 500, 1008, 1199, 595, 50, 1528, 398, 218, 218,
179064
+ /* 1040 */ 1009, 592, 1266, 581, 1266, 450, 1199, 404, 522, 1199,
179065
+ /* 1050 */ 376, 424, 418, 84, 84, 595, 253, 19, 19, 548,
179066
+ /* 1060 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,
179067
+ /* 1070 */ 132, 464, 210, 317, 443, 317, 269, 307, 19, 19,
179068
+ /* 1080 */ 425, 307, 22, 22, 1049, 294, 413, 994, 468, 593,
179069
+ /* 1090 */ 327, 961, 961, 571, 269, 1603, 1603, 595, 231, 1604,
179070
+ /* 1100 */ 425, 389, 410, 1279, 141, 142, 93, 314, 1258, 1258,
179071
+ /* 1110 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179072
+ /* 1120 */ 84, 84, 533, 387, 141, 142, 93, 434, 1258, 1258,
179073
+ /* 1130 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179074
+ /* 1140 */ 447, 1541, 1585, 47, 49, 431, 282, 300, 384, 536,
179075
+ /* 1150 */ 379, 535, 270, 595, 436, 595, 1465, 458, 375, 1541,
179076
+ /* 1160 */ 1543, 375, 455, 431, 138, 138, 138, 138, 137, 137,
179077
+ /* 1170 */ 136, 136, 136, 135, 132, 464, 84, 84, 84, 84,
179078
+ /* 1180 */ 595, 237, 1280, 1583, 138, 138, 138, 138, 137, 137,
179079
+ /* 1190 */ 136, 136, 136, 135, 132, 464, 1179, 1693, 10, 1693,
179080
+ /* 1200 */ 275, 565, 1151, 149, 149, 475, 994, 1604, 1604, 389,
179081
+ /* 1210 */ 389, 1465, 1199, 459, 425, 463, 226, 1152, 1150, 1609,
179082
+ /* 1220 */ 564, 303, 1608, 7, 217, 1199, 7, 513, 1199, 1210,
179083
+ /* 1230 */ 1312, 432, 1153, 1541, 425, 1662, 1254, 936, 141, 142,
179084
+ /* 1240 */ 93, 119, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179085
+ /* 1250 */ 140, 140, 140, 140, 583, 302, 538, 1396, 141, 142,
179086
+ /* 1260 */ 93, 6, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179087
+ /* 1270 */ 140, 140, 140, 140, 588, 432, 1177, 1135, 1135, 514,
179088
+ /* 1280 */ 1151, 1210, 456, 969, 333, 288, 433, 187, 968, 595,
179089
+ /* 1290 */ 129, 595, 547, 595, 1254, 1152, 1341, 551, 138, 138,
179090
+ /* 1300 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179091
+ /* 1310 */ 1153, 595, 151, 151, 53, 53, 54, 54, 138, 138,
179092
+ /* 1320 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179093
+ /* 1330 */ 504, 595, 947, 595, 68, 68, 595, 296, 235, 595,
179094
+ /* 1340 */ 507, 595, 948, 595, 101, 222, 595, 484, 425, 875,
179095
+ /* 1350 */ 876, 877, 215, 219, 69, 69, 21, 21, 423, 55,
179096
+ /* 1360 */ 55, 1584, 70, 70, 56, 56, 71, 71, 425, 72,
179097
+ /* 1370 */ 72, 1183, 141, 142, 93, 123, 1258, 1258, 1088, 1091,
179098
+ /* 1380 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 425, 268,
179099
+ /* 1390 */ 267, 266, 141, 142, 93, 552, 1258, 1258, 1088, 1091,
179100
+ /* 1400 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 23, 163,
179101
+ /* 1410 */ 496, 572, 141, 130, 93, 476, 1258, 1258, 1088, 1091,
179102
+ /* 1420 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 505, 124,
179103
+ /* 1430 */ 1580, 121, 138, 138, 138, 138, 137, 137, 136, 136,
179104
+ /* 1440 */ 136, 135, 132, 464, 595, 225, 595, 899, 437, 246,
179105
+ /* 1450 */ 336, 1253, 138, 138, 138, 138, 137, 137, 136, 136,
179106
+ /* 1460 */ 136, 135, 132, 464, 595, 1340, 595, 73, 73, 74,
179107
+ /* 1470 */ 74, 337, 138, 138, 138, 138, 137, 137, 136, 136,
179108
+ /* 1480 */ 136, 135, 132, 464, 38, 595, 493, 75, 75, 57,
179109
+ /* 1490 */ 57, 595, 425, 410, 1178, 1274, 497, 423, 250, 969,
179110
+ /* 1500 */ 329, 164, 914, 16, 968, 899, 1117, 423, 58, 58,
179111
+ /* 1510 */ 595, 423, 425, 595, 59, 59, 39, 142, 93, 340,
179112
+ /* 1520 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179113
+ /* 1530 */ 140, 140, 595, 61, 61, 595, 62, 62, 93, 595,
179114
+ /* 1540 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179115
+ /* 1550 */ 140, 140, 1410, 926, 925, 76, 76, 1409, 77, 77,
179116
+ /* 1560 */ 914, 485, 78, 78, 1117, 1174, 595, 412, 595, 226,
179117
+ /* 1570 */ 595, 127, 587, 1280, 4, 1592, 138, 138, 138, 138,
179118
+ /* 1580 */ 137, 137, 136, 136, 136, 135, 132, 464, 590, 20,
179119
+ /* 1590 */ 20, 79, 79, 147, 147, 595, 138, 138, 138, 138,
179120
+ /* 1600 */ 137, 137, 136, 136, 136, 135, 132, 464, 595, 354,
179121
+ /* 1610 */ 169, 115, 465, 595, 349, 595, 252, 595, 148, 148,
179122
+ /* 1620 */ 595, 1046, 595, 274, 584, 494, 112, 499, 595, 274,
179123
+ /* 1630 */ 1560, 80, 80, 595, 44, 1559, 64, 64, 81, 81,
179124
+ /* 1640 */ 65, 65, 595, 82, 82, 66, 66, 509, 310, 595,
179125
+ /* 1650 */ 360, 173, 173, 1065, 595, 553, 174, 174, 595, 125,
179126
+ /* 1660 */ 125, 501, 595, 274, 1406, 89, 89, 126, 299, 465,
179127
+ /* 1670 */ 596, 465, 67, 67, 1053, 595, 364, 85, 85, 595,
179128
+ /* 1680 */ 1057, 150, 150, 933, 934, 86, 86, 127, 587, 367,
179129
+ /* 1690 */ 4, 330, 586, 359, 523, 115, 271, 369, 171, 171,
179130
+ /* 1700 */ 1011, 1012, 152, 152, 590, 1339, 1053, 1053, 1055, 1056,
179131
+ /* 1710 */ 35, 371, 373, 595, 115, 1354, 1338, 9, 595, 168,
179132
+ /* 1720 */ 595, 115, 595, 1113, 595, 271, 595, 378, 465, 595,
179133
+ /* 1730 */ 388, 1419, 595, 539, 595, 1218, 146, 146, 1057, 1464,
179134
+ /* 1740 */ 584, 172, 172, 165, 165, 156, 156, 155, 155, 153,
179135
+ /* 1750 */ 153, 1392, 154, 154, 561, 88, 88, 90, 90, 560,
179136
+ /* 1760 */ 127, 587, 1129, 4, 1129, 999, 208, 274, 595, 1065,
179137
+ /* 1770 */ 595, 967, 595, 129, 1404, 125, 125, 590, 964, 1128,
179138
+ /* 1780 */ 129, 1128, 897, 126, 162, 465, 596, 465, 1651, 582,
179139
+ /* 1790 */ 1053, 87, 87, 52, 52, 60, 60, 966, 1624, 129,
179140
+ /* 1800 */ 1469, 465, 1319, 243, 1310, 1298, 1297, 1299, 1644, 170,
179141
+ /* 1810 */ 518, 1389, 289, 584, 12, 322, 323, 324, 228, 409,
179142
+ /* 1820 */ 1451, 305, 1053, 1053, 1055, 1056, 35, 561, 241, 351,
179143
+ /* 1830 */ 245, 1446, 562, 127, 587, 357, 4, 1439, 352, 311,
179144
+ /* 1840 */ 1456, 503, 1065, 528, 1455, 416, 232, 1401, 125, 125,
179145
+ /* 1850 */ 590, 1218, 381, 1532, 1337, 1531, 126, 1402, 465, 596,
179146
+ /* 1860 */ 465, 1400, 1399, 1053, 585, 213, 403, 227, 214, 537,
179147
+ /* 1870 */ 1647, 1587, 1274, 1589, 465, 1588, 239, 278, 1271, 1579,
179148
+ /* 1880 */ 1577, 96, 435, 100, 224, 198, 584, 1537, 183, 99,
179149
+ /* 1890 */ 191, 487, 488, 1452, 521, 1053, 1053, 1055, 1056, 35,
179150
+ /* 1900 */ 561, 13, 193, 194, 195, 560, 196, 255, 113, 414,
179151
+ /* 1910 */ 1458, 1457, 14, 510, 495, 1065, 259, 1460, 202, 106,
179152
+ /* 1920 */ 516, 125, 125, 417, 1218, 290, 1548, 1526, 261, 126,
179153
+ /* 1930 */ 206, 465, 596, 465, 362, 519, 1053, 419, 366, 262,
179154
+ /* 1940 */ 1357, 1300, 1356, 449, 263, 1355, 1348, 108, 918, 1327,
179155
+ /* 1950 */ 1661, 420, 1660, 233, 1326, 453, 1629, 380, 546, 1347,
179156
+ /* 1960 */ 1325, 454, 277, 276, 1659, 1615, 1614, 457, 1053, 1053,
179157
+ /* 1970 */ 1055, 1056, 35, 1636, 1222, 467, 320, 321, 301, 386,
179158
+ /* 1980 */ 144, 1424, 572, 408, 408, 407, 285, 405, 11, 1423,
179159
+ /* 1990 */ 884, 397, 120, 127, 587, 220, 4, 1218, 1380, 1513,
179160
+ /* 2000 */ 395, 114, 1379, 247, 42, 339, 556, 598, 1228, 284,
179161
+ /* 2010 */ 590, 401, 402, 338, 286, 287, 328, 599, 1295, 1290,
179162
+ /* 2020 */ 1564, 175, 428, 1565, 429, 1563, 176, 871, 159, 177,
179163
+ /* 2030 */ 1562, 318, 229, 466, 465, 230, 221, 91, 332, 469,
179164
+ /* 2040 */ 1169, 471, 474, 94, 249, 189, 584, 95, 244, 1127,
179165
+ /* 2050 */ 188, 1125, 178, 342, 190, 43, 1253, 179, 251, 950,
179166
+ /* 2060 */ 254, 350, 192, 1141, 197, 180, 181, 438, 182, 440,
179167
+ /* 2070 */ 102, 103, 248, 104, 199, 1065, 1144, 256, 105, 1140,
179168
+ /* 2080 */ 257, 125, 125, 24, 166, 258, 361, 1133, 274, 126,
179169
+ /* 2090 */ 515, 465, 596, 465, 260, 15, 1053, 204, 264, 382,
179170
+ /* 2100 */ 886, 92, 587, 1268, 4, 203, 520, 427, 205, 524,
179171
+ /* 2110 */ 107, 25, 330, 586, 374, 574, 26, 916, 590, 529,
179172
+ /* 2120 */ 377, 929, 109, 319, 167, 110, 27, 184, 1053, 1053,
179173
+ /* 2130 */ 1055, 1056, 35, 540, 532, 1215, 477, 1094, 111, 1185,
179174
+ /* 2140 */ 17, 234, 465, 293, 1184, 295, 207, 997, 129, 273,
179175
+ /* 2150 */ 1205, 28, 1003, 29, 584, 30, 1201, 1218, 1208, 31,
179176
+ /* 2160 */ 1203, 1209, 32, 1190, 41, 568, 33, 34, 211, 115,
179177
+ /* 2170 */ 8, 1108, 1095, 1093, 1097, 1098, 279, 580, 122, 1149,
179178
+ /* 2180 */ 36, 117, 18, 1065, 1058, 118, 898, 128, 37, 125,
179179
+ /* 2190 */ 125, 406, 591, 186, 960, 280, 281, 126, 1652, 465,
179180
+ /* 2200 */ 596, 465, 1222, 467, 1053, 157, 301, 1224, 1223, 1286,
179181
+ /* 2210 */ 1286, 408, 408, 407, 285, 405, 1286, 1286, 884, 1286,
179182
+ /* 2220 */ 301, 1286, 1286, 573, 1286, 408, 408, 407, 285, 405,
179183
+ /* 2230 */ 1286, 247, 884, 339, 1286, 1286, 1053, 1053, 1055, 1056,
179184
+ /* 2240 */ 35, 338, 1286, 1286, 1286, 247, 1286, 339, 1286, 1286,
179185
+ /* 2250 */ 1286, 1286, 1286, 1286, 1286, 338, 1286, 1286, 1286, 1286,
179186
+ /* 2260 */ 1286, 1286, 1286, 1286, 1286, 1218, 1286, 1286, 1286, 1286,
179187
+ /* 2270 */ 1286, 1286, 249, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179188
+ /* 2280 */ 178, 1286, 1286, 43, 1286, 1286, 249, 1286, 1286, 1286,
179189
+ /* 2290 */ 1286, 1286, 1286, 1286, 178, 1286, 1286, 43, 1286, 1286,
179190
+ /* 2300 */ 248, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179191
+ /* 2310 */ 1286, 1286, 1286, 1286, 248, 1286, 1286, 1286, 1286, 1286,
179192
+ /* 2320 */ 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179193
+ /* 2330 */ 1286, 1286, 1286, 1286, 1286, 427, 1286, 1286, 1286, 1286,
179194
+ /* 2340 */ 330, 586, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 427,
179195
+ /* 2350 */ 1286, 1286, 1286, 1286, 330, 586, 1286, 1286, 1286, 1286,
179196
+ /* 2360 */ 1286, 1286, 1286, 1286, 477, 1286, 1286, 1286, 1286, 1286,
179197
+ /* 2370 */ 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 477,
178459179198
};
178460179199
static const YYCODETYPE yy_lookahead[] = {
178461
- /* 0 */ 277, 278, 279, 241, 242, 225, 195, 227, 195, 241,
178462
- /* 10 */ 242, 195, 217, 221, 195, 235, 254, 195, 256, 19,
178463
- /* 20 */ 225, 298, 254, 195, 256, 206, 213, 214, 206, 218,
178464
- /* 30 */ 219, 31, 206, 195, 218, 219, 195, 218, 219, 39,
178465
- /* 40 */ 218, 219, 313, 43, 44, 45, 317, 47, 48, 49,
179200
+ /* 0 */ 277, 278, 279, 241, 242, 225, 195, 227, 195, 246,
179201
+ /* 10 */ 195, 195, 195, 221, 195, 235, 254, 195, 256, 19,
179202
+ /* 20 */ 257, 298, 277, 278, 279, 206, 213, 214, 206, 218,
179203
+ /* 30 */ 219, 31, 206, 218, 219, 218, 219, 218, 219, 39,
179204
+ /* 40 */ 218, 219, 29, 43, 44, 45, 33, 47, 48, 49,
178466179205
/* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 19,
178467
- /* 60 */ 241, 242, 195, 241, 242, 195, 255, 241, 242, 277,
178468
- /* 70 */ 278, 279, 234, 254, 255, 256, 254, 255, 256, 218,
178469
- /* 80 */ 254, 240, 256, 43, 44, 45, 264, 47, 48, 49,
178470
- /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 271,
178471
- /* 100 */ 287, 22, 23, 103, 104, 105, 106, 107, 108, 109,
178472
- /* 110 */ 110, 111, 112, 113, 114, 114, 47, 48, 49, 50,
178473
- /* 120 */ 187, 188, 189, 190, 191, 192, 190, 87, 192, 89,
178474
- /* 130 */ 197, 19, 199, 197, 318, 199, 320, 25, 195, 206,
178475
- /* 140 */ 299, 271, 206, 103, 104, 105, 106, 107, 108, 109,
179206
+ /* 60 */ 241, 242, 276, 241, 242, 195, 255, 241, 242, 277,
179207
+ /* 70 */ 278, 279, 11, 254, 255, 256, 254, 255, 256, 66,
179208
+ /* 80 */ 254, 265, 256, 43, 44, 45, 264, 47, 48, 49,
179209
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 215,
179210
+ /* 100 */ 287, 315, 316, 103, 104, 105, 106, 107, 108, 109,
179211
+ /* 110 */ 110, 111, 112, 113, 114, 237, 238, 195, 74, 195,
179212
+ /* 120 */ 187, 188, 189, 190, 191, 192, 82, 87, 25, 89,
179213
+ /* 130 */ 197, 19, 199, 318, 319, 318, 319, 25, 195, 206,
179214
+ /* 140 */ 218, 219, 195, 103, 104, 105, 106, 107, 108, 109,
178476179215
/* 150 */ 110, 111, 112, 113, 114, 43, 44, 45, 195, 47,
178477179216
/* 160 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
178478
- /* 170 */ 58, 60, 21, 195, 241, 242, 215, 241, 242, 312,
178479
- /* 180 */ 313, 102, 70, 205, 317, 207, 242, 254, 77, 256,
178480
- /* 190 */ 254, 122, 256, 55, 56, 57, 58, 59, 254, 88,
178481
- /* 200 */ 256, 90, 269, 240, 93, 269, 107, 108, 109, 110,
178482
- /* 210 */ 111, 112, 113, 114, 271, 103, 104, 105, 106, 107,
178483
- /* 220 */ 108, 109, 110, 111, 112, 113, 114, 313, 117, 118,
178484
- /* 230 */ 119, 317, 81, 195, 301, 19, 195, 301, 277, 278,
178485
- /* 240 */ 279, 103, 104, 105, 106, 107, 108, 109, 110, 111,
178486
- /* 250 */ 112, 113, 114, 55, 56, 57, 58, 146, 195, 43,
178487
- /* 260 */ 44, 45, 74, 47, 48, 49, 50, 51, 52, 53,
178488
- /* 270 */ 54, 55, 56, 57, 58, 124, 195, 60, 109, 110,
178489
- /* 280 */ 111, 112, 113, 114, 68, 195, 103, 104, 105, 106,
178490
- /* 290 */ 107, 108, 109, 110, 111, 112, 113, 114, 208, 218,
178491
- /* 300 */ 219, 103, 104, 105, 106, 107, 108, 109, 110, 111,
178492
- /* 310 */ 112, 113, 114, 162, 233, 24, 128, 129, 130, 103,
179217
+ /* 170 */ 58, 60, 128, 289, 241, 242, 114, 255, 294, 60,
179218
+ /* 180 */ 310, 311, 70, 139, 140, 218, 264, 254, 77, 256,
179219
+ /* 190 */ 129, 130, 73, 55, 56, 57, 58, 59, 221, 88,
179220
+ /* 200 */ 218, 90, 269, 240, 93, 107, 108, 109, 110, 111,
179221
+ /* 210 */ 112, 113, 114, 215, 271, 103, 104, 105, 106, 107,
179222
+ /* 220 */ 108, 109, 110, 111, 112, 113, 114, 218, 117, 118,
179223
+ /* 230 */ 119, 307, 299, 309, 301, 19, 117, 118, 119, 129,
179224
+ /* 240 */ 130, 103, 104, 105, 106, 107, 108, 109, 110, 111,
179225
+ /* 250 */ 112, 113, 114, 150, 277, 278, 279, 146, 311, 43,
179226
+ /* 260 */ 44, 45, 195, 47, 48, 49, 50, 51, 52, 53,
179227
+ /* 270 */ 54, 55, 56, 57, 58, 277, 278, 279, 313, 19,
179228
+ /* 280 */ 195, 195, 317, 23, 68, 218, 219, 25, 55, 56,
179229
+ /* 290 */ 57, 58, 109, 110, 111, 112, 113, 114, 22, 23,
179230
+ /* 300 */ 233, 25, 313, 43, 44, 45, 317, 47, 48, 49,
179231
+ /* 310 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 103,
178493179232
/* 320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
178494
- /* 330 */ 114, 195, 195, 215, 117, 118, 119, 120, 195, 19,
178495
- /* 340 */ 123, 124, 125, 207, 24, 74, 246, 60, 310, 311,
178496
- /* 350 */ 133, 60, 311, 82, 22, 218, 219, 257, 195, 19,
178497
- /* 360 */ 73, 218, 219, 43, 44, 45, 206, 47, 48, 49,
178498
- /* 370 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 22,
178499
- /* 380 */ 23, 218, 219, 43, 44, 45, 54, 47, 48, 49,
178500
- /* 390 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 128,
178501
- /* 400 */ 82, 241, 242, 195, 117, 118, 119, 289, 60, 118,
178502
- /* 410 */ 139, 140, 294, 195, 254, 195, 256, 195, 255, 259,
178503
- /* 420 */ 260, 73, 22, 103, 104, 105, 106, 107, 108, 109,
178504
- /* 430 */ 110, 111, 112, 113, 114, 206, 218, 219, 218, 219,
178505
- /* 440 */ 218, 219, 234, 103, 104, 105, 106, 107, 108, 109,
178506
- /* 450 */ 110, 111, 112, 113, 114, 318, 319, 139, 140, 102,
178507
- /* 460 */ 60, 318, 319, 221, 19, 117, 118, 119, 23, 195,
178508
- /* 470 */ 241, 242, 313, 255, 206, 255, 317, 255, 206, 129,
178509
- /* 480 */ 130, 206, 264, 254, 264, 256, 264, 195, 43, 44,
178510
- /* 490 */ 45, 151, 47, 48, 49, 50, 51, 52, 53, 54,
178511
- /* 500 */ 55, 56, 57, 58, 246, 213, 214, 19, 19, 241,
178512
- /* 510 */ 242, 195, 23, 241, 242, 257, 241, 242, 118, 277,
178513
- /* 520 */ 278, 279, 254, 29, 256, 60, 254, 33, 256, 254,
178514
- /* 530 */ 206, 256, 43, 44, 45, 218, 47, 48, 49, 50,
178515
- /* 540 */ 51, 52, 53, 54, 55, 56, 57, 58, 103, 104,
178516
- /* 550 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
178517
- /* 560 */ 66, 19, 218, 60, 120, 241, 242, 123, 124, 125,
178518
- /* 570 */ 60, 232, 77, 19, 20, 26, 22, 133, 254, 287,
178519
- /* 580 */ 256, 265, 117, 118, 119, 90, 312, 313, 93, 47,
178520
- /* 590 */ 36, 317, 103, 104, 105, 106, 107, 108, 109, 110,
178521
- /* 600 */ 111, 112, 113, 114, 116, 117, 277, 278, 279, 60,
178522
- /* 610 */ 107, 108, 19, 276, 60, 31, 23, 152, 195, 116,
178523
- /* 620 */ 117, 118, 119, 39, 121, 276, 72, 117, 118, 119,
178524
- /* 630 */ 166, 167, 129, 145, 237, 238, 43, 44, 45, 276,
178525
- /* 640 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178526
- /* 650 */ 57, 58, 315, 316, 144, 101, 19, 154, 116, 156,
178527
- /* 660 */ 23, 107, 108, 109, 315, 316, 117, 118, 119, 115,
178528
- /* 670 */ 60, 117, 118, 119, 132, 200, 122, 60, 315, 316,
178529
- /* 680 */ 43, 44, 45, 272, 47, 48, 49, 50, 51, 52,
178530
- /* 690 */ 53, 54, 55, 56, 57, 58, 103, 104, 105, 106,
178531
- /* 700 */ 107, 108, 109, 110, 111, 112, 113, 114, 154, 155,
178532
- /* 710 */ 156, 157, 158, 212, 213, 214, 22, 195, 101, 22,
178533
- /* 720 */ 60, 19, 20, 60, 22, 139, 140, 117, 118, 119,
178534
- /* 730 */ 22, 251, 195, 253, 117, 118, 195, 183, 36, 122,
178535
- /* 740 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178536
- /* 750 */ 113, 114, 195, 195, 60, 218, 219, 60, 195, 284,
178537
- /* 760 */ 19, 25, 60, 288, 23, 237, 238, 22, 60, 109,
178538
- /* 770 */ 233, 154, 155, 156, 72, 218, 219, 117, 118, 119,
178539
- /* 780 */ 117, 118, 119, 116, 43, 44, 45, 265, 47, 48,
178540
- /* 790 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178541
- /* 800 */ 183, 243, 25, 101, 19, 60, 265, 144, 23, 107,
178542
- /* 810 */ 108, 117, 118, 119, 117, 118, 119, 115, 151, 117,
178543
- /* 820 */ 118, 119, 82, 195, 122, 117, 118, 119, 43, 44,
178544
- /* 830 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,
178545
- /* 840 */ 55, 56, 57, 58, 103, 104, 105, 106, 107, 108,
178546
- /* 850 */ 109, 110, 111, 112, 113, 114, 154, 155, 156, 157,
178547
- /* 860 */ 158, 121, 117, 118, 119, 307, 101, 309, 195, 22,
178548
- /* 870 */ 23, 195, 25, 19, 35, 139, 140, 195, 24, 139,
178549
- /* 880 */ 140, 208, 195, 118, 109, 183, 22, 122, 103, 104,
178550
- /* 890 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
178551
- /* 900 */ 304, 305, 77, 230, 127, 232, 67, 195, 19, 195,
178552
- /* 910 */ 195, 136, 23, 88, 75, 90, 141, 203, 93, 154,
178553
- /* 920 */ 155, 156, 208, 295, 60, 243, 22, 23, 19, 25,
178554
- /* 930 */ 218, 219, 43, 44, 45, 100, 47, 48, 49, 50,
178555
- /* 940 */ 51, 52, 53, 54, 55, 56, 57, 58, 183, 102,
178556
- /* 950 */ 96, 195, 43, 44, 45, 240, 47, 48, 49, 50,
178557
- /* 960 */ 51, 52, 53, 54, 55, 56, 57, 58, 114, 134,
178558
- /* 970 */ 131, 146, 25, 286, 120, 121, 122, 123, 124, 125,
178559
- /* 980 */ 126, 117, 118, 119, 313, 195, 132, 195, 317, 307,
178560
- /* 990 */ 195, 309, 103, 104, 105, 106, 107, 108, 109, 110,
178561
- /* 1000 */ 111, 112, 113, 114, 195, 195, 102, 195, 195, 195,
178562
- /* 1010 */ 218, 219, 103, 104, 105, 106, 107, 108, 109, 110,
178563
- /* 1020 */ 111, 112, 113, 114, 77, 233, 195, 60, 218, 219,
178564
- /* 1030 */ 218, 219, 218, 219, 23, 195, 25, 90, 243, 159,
178565
- /* 1040 */ 93, 161, 19, 233, 195, 233, 23, 233, 16, 218,
178566
- /* 1050 */ 219, 195, 243, 212, 213, 214, 262, 263, 218, 219,
178567
- /* 1060 */ 195, 271, 19, 307, 233, 309, 43, 44, 45, 160,
178568
- /* 1070 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178569
- /* 1080 */ 57, 58, 195, 218, 219, 118, 43, 44, 45, 240,
178570
- /* 1090 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178571
- /* 1100 */ 57, 58, 307, 195, 309, 218, 219, 263, 12, 195,
178572
- /* 1110 */ 78, 267, 80, 112, 113, 114, 307, 22, 309, 24,
178573
- /* 1120 */ 255, 281, 266, 27, 107, 108, 103, 104, 105, 106,
178574
- /* 1130 */ 107, 108, 109, 110, 111, 112, 113, 114, 42, 195,
178575
- /* 1140 */ 11, 22, 255, 24, 195, 195, 103, 104, 105, 106,
178576
- /* 1150 */ 107, 108, 109, 110, 111, 112, 113, 114, 19, 195,
178577
- /* 1160 */ 64, 195, 218, 219, 195, 313, 195, 218, 219, 317,
178578
- /* 1170 */ 74, 154, 195, 156, 195, 195, 19, 233, 23, 60,
178579
- /* 1180 */ 25, 24, 218, 219, 218, 219, 195, 218, 219, 218,
178580
- /* 1190 */ 219, 128, 129, 130, 162, 263, 19, 218, 219, 267,
178581
- /* 1200 */ 43, 44, 45, 160, 47, 48, 49, 50, 51, 52,
178582
- /* 1210 */ 53, 54, 55, 56, 57, 58, 19, 240, 228, 255,
178583
- /* 1220 */ 43, 44, 45, 25, 47, 48, 49, 50, 51, 52,
178584
- /* 1230 */ 53, 54, 55, 56, 57, 58, 135, 118, 137, 138,
178585
- /* 1240 */ 43, 44, 45, 22, 47, 48, 49, 50, 51, 52,
178586
- /* 1250 */ 53, 54, 55, 56, 57, 58, 117, 266, 129, 130,
178587
- /* 1260 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178588
- /* 1270 */ 113, 114, 195, 195, 119, 295, 195, 206, 195, 195,
178589
- /* 1280 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178590
- /* 1290 */ 113, 114, 195, 195, 195, 218, 219, 195, 195, 144,
178591
- /* 1300 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178592
- /* 1310 */ 113, 114, 241, 242, 67, 218, 219, 218, 219, 146,
178593
- /* 1320 */ 19, 218, 219, 240, 215, 254, 136, 256, 107, 108,
178594
- /* 1330 */ 195, 141, 255, 86, 128, 129, 130, 195, 165, 195,
178595
- /* 1340 */ 19, 143, 95, 272, 25, 44, 45, 266, 47, 48,
178596
- /* 1350 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178597
- /* 1360 */ 218, 219, 218, 219, 195, 12, 45, 195, 47, 48,
178598
- /* 1370 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178599
- /* 1380 */ 27, 23, 7, 8, 9, 210, 211, 218, 219, 116,
178600
- /* 1390 */ 218, 219, 228, 16, 147, 42, 195, 295, 195, 19,
178601
- /* 1400 */ 20, 266, 22, 294, 103, 104, 105, 106, 107, 108,
178602
- /* 1410 */ 109, 110, 111, 112, 113, 114, 36, 64, 145, 218,
178603
- /* 1420 */ 219, 218, 219, 195, 103, 104, 105, 106, 107, 108,
178604
- /* 1430 */ 109, 110, 111, 112, 113, 114, 195, 154, 119, 156,
178605
- /* 1440 */ 60, 189, 190, 191, 192, 195, 218, 219, 195, 197,
178606
- /* 1450 */ 195, 199, 72, 195, 19, 78, 195, 80, 206, 218,
178607
- /* 1460 */ 219, 195, 82, 144, 210, 211, 195, 15, 218, 219,
178608
- /* 1470 */ 47, 218, 219, 218, 219, 259, 260, 195, 261, 218,
178609
- /* 1480 */ 219, 101, 302, 303, 218, 219, 195, 107, 108, 218,
178610
- /* 1490 */ 219, 150, 151, 241, 242, 115, 25, 117, 118, 119,
178611
- /* 1500 */ 218, 219, 122, 195, 146, 195, 254, 195, 256, 218,
178612
- /* 1510 */ 219, 246, 25, 61, 246, 19, 20, 195, 22, 139,
178613
- /* 1520 */ 140, 269, 257, 195, 266, 257, 218, 219, 218, 219,
178614
- /* 1530 */ 218, 219, 36, 246, 154, 155, 156, 157, 158, 116,
178615
- /* 1540 */ 218, 219, 195, 22, 257, 49, 218, 219, 23, 195,
178616
- /* 1550 */ 25, 195, 117, 301, 195, 25, 60, 195, 195, 23,
178617
- /* 1560 */ 195, 25, 195, 183, 24, 218, 219, 130, 72, 195,
178618
- /* 1570 */ 22, 195, 218, 219, 218, 219, 195, 218, 219, 195,
178619
- /* 1580 */ 218, 219, 86, 218, 219, 218, 219, 91, 19, 20,
178620
- /* 1590 */ 153, 22, 218, 219, 218, 219, 195, 101, 195, 218,
178621
- /* 1600 */ 219, 195, 195, 107, 108, 36, 23, 195, 25, 195,
178622
- /* 1610 */ 62, 115, 195, 117, 118, 119, 195, 146, 122, 218,
178623
- /* 1620 */ 219, 218, 219, 195, 218, 219, 19, 60, 122, 60,
178624
- /* 1630 */ 218, 219, 218, 219, 195, 218, 219, 150, 132, 218,
178625
- /* 1640 */ 219, 72, 195, 23, 195, 25, 218, 219, 195, 60,
178626
- /* 1650 */ 154, 155, 156, 157, 158, 86, 23, 195, 25, 195,
178627
- /* 1660 */ 91, 19, 20, 142, 22, 218, 219, 218, 219, 130,
178628
- /* 1670 */ 101, 218, 219, 143, 121, 122, 107, 108, 36, 183,
178629
- /* 1680 */ 218, 219, 142, 60, 115, 118, 117, 118, 119, 7,
178630
- /* 1690 */ 8, 122, 153, 23, 23, 25, 25, 23, 23, 25,
178631
- /* 1700 */ 25, 23, 60, 25, 23, 98, 25, 118, 84, 85,
178632
- /* 1710 */ 23, 23, 25, 25, 72, 154, 23, 156, 25, 23,
178633
- /* 1720 */ 228, 25, 195, 154, 155, 156, 157, 158, 86, 195,
178634
- /* 1730 */ 195, 258, 195, 91, 291, 322, 195, 195, 195, 195,
178635
- /* 1740 */ 195, 118, 195, 101, 195, 195, 195, 195, 238, 107,
178636
- /* 1750 */ 108, 195, 183, 195, 195, 195, 290, 115, 195, 117,
178637
- /* 1760 */ 118, 119, 244, 195, 122, 195, 195, 195, 195, 195,
178638
- /* 1770 */ 195, 258, 258, 258, 258, 193, 245, 300, 216, 274,
178639
- /* 1780 */ 247, 270, 270, 274, 296, 296, 248, 222, 262, 198,
178640
- /* 1790 */ 262, 274, 61, 274, 248, 231, 154, 155, 156, 157,
178641
- /* 1800 */ 158, 0, 1, 2, 247, 227, 5, 221, 221, 221,
178642
- /* 1810 */ 142, 10, 11, 12, 13, 14, 262, 262, 17, 202,
178643
- /* 1820 */ 300, 19, 20, 300, 22, 183, 247, 251, 251, 245,
178644
- /* 1830 */ 202, 30, 38, 32, 202, 152, 151, 22, 36, 43,
178645
- /* 1840 */ 236, 40, 18, 202, 239, 239, 18, 239, 239, 283,
178646
- /* 1850 */ 201, 150, 236, 202, 236, 201, 159, 202, 248, 248,
178647
- /* 1860 */ 248, 248, 60, 63, 201, 275, 273, 275, 273, 275,
178648
- /* 1870 */ 22, 286, 71, 223, 72, 202, 223, 297, 297, 202,
178649
- /* 1880 */ 79, 201, 116, 82, 220, 201, 220, 220, 65, 293,
178650
- /* 1890 */ 292, 229, 22, 166, 127, 226, 24, 114, 226, 223,
178651
- /* 1900 */ 99, 222, 202, 101, 285, 92, 220, 308, 83, 107,
178652
- /* 1910 */ 108, 220, 220, 316, 220, 285, 268, 115, 229, 117,
178653
- /* 1920 */ 118, 119, 223, 321, 122, 268, 149, 146, 22, 19,
178654
- /* 1930 */ 20, 202, 22, 159, 282, 134, 321, 148, 280, 147,
178655
- /* 1940 */ 139, 140, 252, 141, 25, 204, 36, 252, 13, 251,
178656
- /* 1950 */ 196, 248, 250, 249, 196, 6, 154, 155, 156, 157,
178657
- /* 1960 */ 158, 209, 194, 194, 163, 194, 306, 306, 303, 224,
178658
- /* 1970 */ 60, 215, 215, 209, 215, 215, 215, 224, 216, 216,
178659
- /* 1980 */ 4, 209, 72, 3, 22, 183, 164, 15, 23, 16,
178660
- /* 1990 */ 23, 140, 152, 131, 25, 24, 143, 20, 16, 145,
178661
- /* 2000 */ 1, 143, 131, 62, 131, 37, 54, 152, 54, 54,
178662
- /* 2010 */ 54, 101, 131, 117, 1, 34, 142, 107, 108, 5,
178663
- /* 2020 */ 22, 116, 162, 76, 41, 115, 69, 117, 118, 119,
178664
- /* 2030 */ 1, 2, 122, 25, 5, 69, 142, 116, 20, 10,
178665
- /* 2040 */ 11, 12, 13, 14, 24, 19, 17, 132, 5, 126,
178666
- /* 2050 */ 22, 141, 68, 10, 11, 12, 13, 14, 22, 30,
178667
- /* 2060 */ 17, 32, 22, 22, 154, 155, 156, 157, 158, 40,
178668
- /* 2070 */ 23, 68, 60, 30, 24, 32, 97, 28, 22, 68,
178669
- /* 2080 */ 23, 37, 34, 40, 150, 22, 25, 23, 23, 23,
178670
- /* 2090 */ 22, 98, 142, 183, 23, 23, 34, 22, 25, 89,
178671
- /* 2100 */ 71, 34, 117, 144, 34, 22, 76, 76, 79, 87,
178672
- /* 2110 */ 34, 82, 34, 44, 71, 94, 34, 23, 25, 24,
178673
- /* 2120 */ 34, 25, 79, 23, 23, 82, 23, 23, 99, 143,
178674
- /* 2130 */ 143, 22, 25, 25, 23, 22, 11, 22, 22, 25,
178675
- /* 2140 */ 23, 23, 99, 22, 22, 136, 142, 142, 142, 25,
178676
- /* 2150 */ 23, 15, 1, 1, 323, 323, 323, 323, 323, 323,
178677
- /* 2160 */ 323, 323, 323, 134, 323, 323, 323, 323, 139, 140,
178678
- /* 2170 */ 323, 323, 323, 323, 323, 323, 323, 134, 323, 323,
178679
- /* 2180 */ 323, 323, 139, 140, 323, 323, 323, 323, 323, 323,
178680
- /* 2190 */ 323, 323, 163, 323, 323, 323, 323, 323, 323, 323,
178681
- /* 2200 */ 323, 323, 323, 323, 323, 323, 163, 323, 323, 323,
178682
- /* 2210 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178683
- /* 2220 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178684
- /* 2230 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178685
- /* 2240 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178686
- /* 2250 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178687
- /* 2260 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178688
- /* 2270 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178689
- /* 2280 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178690
- /* 2290 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178691
- /* 2300 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178692
- /* 2310 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179233
+ /* 330 */ 114, 232, 60, 212, 213, 214, 103, 104, 105, 106,
179234
+ /* 340 */ 107, 108, 109, 110, 111, 112, 113, 114, 103, 104,
179235
+ /* 350 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179236
+ /* 360 */ 24, 195, 200, 103, 104, 105, 106, 107, 108, 109,
179237
+ /* 370 */ 110, 111, 112, 113, 114, 251, 60, 253, 102, 107,
179238
+ /* 380 */ 108, 119, 313, 19, 218, 219, 317, 23, 116, 117,
179239
+ /* 390 */ 118, 119, 195, 121, 206, 22, 60, 26, 312, 313,
179240
+ /* 400 */ 195, 129, 205, 317, 207, 35, 144, 43, 44, 45,
179241
+ /* 410 */ 195, 47, 48, 49, 50, 51, 52, 53, 54, 55,
179242
+ /* 420 */ 56, 57, 58, 218, 219, 82, 154, 19, 156, 241,
179243
+ /* 430 */ 242, 60, 24, 117, 118, 119, 120, 67, 233, 123,
179244
+ /* 440 */ 124, 125, 254, 195, 256, 75, 284, 259, 260, 133,
179245
+ /* 450 */ 288, 43, 44, 45, 118, 47, 48, 49, 50, 51,
179246
+ /* 460 */ 52, 53, 54, 55, 56, 57, 58, 103, 104, 105,
179247
+ /* 470 */ 106, 107, 108, 109, 110, 111, 112, 113, 114, 195,
179248
+ /* 480 */ 107, 108, 139, 140, 318, 195, 320, 195, 117, 118,
179249
+ /* 490 */ 119, 61, 19, 20, 120, 22, 195, 123, 124, 125,
179250
+ /* 500 */ 195, 131, 218, 219, 195, 195, 146, 133, 207, 36,
179251
+ /* 510 */ 295, 103, 104, 105, 106, 107, 108, 109, 110, 111,
179252
+ /* 520 */ 112, 113, 114, 218, 219, 165, 60, 195, 218, 219,
179253
+ /* 530 */ 240, 19, 240, 60, 189, 190, 191, 192, 233, 255,
179254
+ /* 540 */ 139, 140, 197, 233, 199, 72, 61, 272, 264, 195,
179255
+ /* 550 */ 120, 206, 195, 19, 60, 43, 44, 45, 206, 47,
179256
+ /* 560 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
179257
+ /* 570 */ 58, 25, 218, 219, 101, 109, 112, 113, 114, 195,
179258
+ /* 580 */ 107, 108, 109, 117, 118, 119, 241, 242, 115, 195,
179259
+ /* 590 */ 117, 118, 119, 241, 242, 122, 60, 206, 195, 254,
179260
+ /* 600 */ 60, 256, 218, 219, 195, 120, 254, 195, 256, 73,
179261
+ /* 610 */ 125, 117, 118, 119, 269, 103, 104, 105, 106, 107,
179262
+ /* 620 */ 108, 109, 110, 111, 112, 113, 114, 154, 155, 156,
179263
+ /* 630 */ 157, 158, 241, 242, 240, 281, 19, 234, 144, 255,
179264
+ /* 640 */ 23, 206, 166, 167, 299, 254, 301, 256, 264, 240,
179265
+ /* 650 */ 116, 117, 295, 117, 118, 119, 183, 117, 118, 119,
179266
+ /* 660 */ 43, 44, 45, 151, 47, 48, 49, 50, 51, 52,
179267
+ /* 670 */ 53, 54, 55, 56, 57, 58, 241, 242, 266, 145,
179268
+ /* 680 */ 19, 241, 242, 242, 23, 139, 140, 77, 25, 254,
179269
+ /* 690 */ 195, 256, 152, 276, 254, 254, 256, 256, 88, 206,
179270
+ /* 700 */ 90, 60, 206, 93, 43, 44, 45, 272, 47, 48,
179271
+ /* 710 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179272
+ /* 720 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
179273
+ /* 730 */ 113, 114, 315, 316, 241, 242, 131, 241, 242, 134,
179274
+ /* 740 */ 22, 206, 101, 22, 82, 19, 20, 254, 22, 256,
179275
+ /* 750 */ 254, 74, 256, 263, 22, 195, 146, 267, 117, 118,
179276
+ /* 760 */ 276, 266, 36, 122, 103, 104, 105, 106, 107, 108,
179277
+ /* 770 */ 109, 110, 111, 112, 113, 114, 241, 242, 60, 217,
179278
+ /* 780 */ 130, 60, 195, 121, 19, 195, 60, 225, 23, 254,
179279
+ /* 790 */ 127, 256, 60, 237, 238, 154, 155, 156, 72, 315,
179280
+ /* 800 */ 316, 139, 140, 153, 22, 128, 129, 130, 43, 44,
179281
+ /* 810 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,
179282
+ /* 820 */ 55, 56, 57, 58, 183, 304, 305, 101, 19, 60,
179283
+ /* 830 */ 243, 271, 23, 107, 108, 117, 118, 119, 117, 118,
179284
+ /* 840 */ 119, 115, 60, 117, 118, 119, 16, 195, 122, 117,
179285
+ /* 850 */ 118, 119, 43, 44, 45, 22, 47, 48, 49, 50,
179286
+ /* 860 */ 51, 52, 53, 54, 55, 56, 57, 58, 103, 104,
179287
+ /* 870 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179288
+ /* 880 */ 154, 155, 156, 157, 158, 295, 117, 118, 119, 60,
179289
+ /* 890 */ 101, 60, 240, 60, 307, 21, 309, 195, 195, 117,
179290
+ /* 900 */ 118, 119, 195, 47, 48, 49, 50, 118, 78, 183,
179291
+ /* 910 */ 80, 122, 103, 104, 105, 106, 107, 108, 109, 110,
179292
+ /* 920 */ 111, 112, 113, 114, 195, 218, 219, 16, 312, 313,
179293
+ /* 930 */ 195, 195, 19, 317, 262, 263, 23, 212, 213, 214,
179294
+ /* 940 */ 233, 210, 211, 154, 155, 156, 117, 118, 119, 118,
179295
+ /* 950 */ 117, 118, 119, 218, 219, 81, 43, 44, 45, 195,
179296
+ /* 960 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179297
+ /* 970 */ 57, 58, 183, 144, 271, 122, 19, 190, 122, 192,
179298
+ /* 980 */ 23, 25, 218, 219, 197, 132, 199, 195, 286, 78,
179299
+ /* 990 */ 255, 80, 162, 206, 265, 107, 108, 233, 124, 195,
179300
+ /* 1000 */ 43, 44, 45, 195, 47, 48, 49, 50, 51, 52,
179301
+ /* 1010 */ 53, 54, 55, 56, 57, 58, 103, 104, 105, 106,
179302
+ /* 1020 */ 107, 108, 109, 110, 111, 112, 113, 114, 241, 242,
179303
+ /* 1030 */ 195, 195, 31, 77, 195, 243, 162, 195, 195, 195,
179304
+ /* 1040 */ 39, 254, 154, 256, 156, 19, 90, 203, 19, 93,
179305
+ /* 1050 */ 24, 208, 208, 218, 219, 195, 269, 218, 219, 195,
179306
+ /* 1060 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
179307
+ /* 1070 */ 113, 114, 233, 230, 266, 232, 47, 263, 218, 219,
179308
+ /* 1080 */ 19, 267, 218, 219, 23, 23, 299, 25, 301, 135,
179309
+ /* 1090 */ 255, 137, 138, 233, 47, 195, 195, 195, 25, 307,
179310
+ /* 1100 */ 19, 309, 22, 23, 43, 44, 45, 271, 47, 48,
179311
+ /* 1110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179312
+ /* 1120 */ 218, 219, 96, 195, 43, 44, 45, 195, 47, 48,
179313
+ /* 1130 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179314
+ /* 1140 */ 114, 195, 195, 243, 243, 116, 120, 121, 122, 123,
179315
+ /* 1150 */ 124, 125, 126, 195, 195, 195, 195, 255, 132, 213,
179316
+ /* 1160 */ 214, 132, 234, 116, 103, 104, 105, 106, 107, 108,
179317
+ /* 1170 */ 109, 110, 111, 112, 113, 114, 218, 219, 218, 219,
179318
+ /* 1180 */ 195, 119, 102, 195, 103, 104, 105, 106, 107, 108,
179319
+ /* 1190 */ 109, 110, 111, 112, 113, 114, 22, 23, 22, 25,
179320
+ /* 1200 */ 24, 67, 12, 218, 219, 195, 144, 307, 307, 309,
179321
+ /* 1210 */ 309, 195, 77, 255, 19, 255, 143, 27, 23, 313,
179322
+ /* 1220 */ 86, 100, 313, 317, 265, 90, 317, 266, 93, 95,
179323
+ /* 1230 */ 210, 211, 42, 287, 19, 23, 60, 25, 43, 44,
179324
+ /* 1240 */ 45, 160, 47, 48, 49, 50, 51, 52, 53, 54,
179325
+ /* 1250 */ 55, 56, 57, 58, 64, 134, 109, 261, 43, 44,
179326
+ /* 1260 */ 45, 215, 47, 48, 49, 50, 51, 52, 53, 54,
179327
+ /* 1270 */ 55, 56, 57, 58, 210, 211, 102, 128, 129, 130,
179328
+ /* 1280 */ 12, 147, 266, 136, 163, 164, 302, 303, 141, 195,
179329
+ /* 1290 */ 25, 195, 19, 195, 118, 27, 228, 19, 103, 104,
179330
+ /* 1300 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179331
+ /* 1310 */ 42, 195, 218, 219, 218, 219, 218, 219, 103, 104,
179332
+ /* 1320 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179333
+ /* 1330 */ 19, 195, 64, 195, 218, 219, 195, 259, 260, 195,
179334
+ /* 1340 */ 294, 195, 74, 195, 150, 151, 195, 246, 19, 7,
179335
+ /* 1350 */ 8, 9, 195, 24, 218, 219, 218, 219, 257, 218,
179336
+ /* 1360 */ 219, 195, 218, 219, 218, 219, 218, 219, 19, 218,
179337
+ /* 1370 */ 219, 98, 43, 44, 45, 160, 47, 48, 49, 50,
179338
+ /* 1380 */ 51, 52, 53, 54, 55, 56, 57, 58, 19, 128,
179339
+ /* 1390 */ 129, 130, 43, 44, 45, 117, 47, 48, 49, 50,
179340
+ /* 1400 */ 51, 52, 53, 54, 55, 56, 57, 58, 22, 22,
179341
+ /* 1410 */ 116, 146, 43, 44, 45, 195, 47, 48, 49, 50,
179342
+ /* 1420 */ 51, 52, 53, 54, 55, 56, 57, 58, 117, 159,
179343
+ /* 1430 */ 195, 161, 103, 104, 105, 106, 107, 108, 109, 110,
179344
+ /* 1440 */ 111, 112, 113, 114, 195, 151, 195, 60, 62, 15,
179345
+ /* 1450 */ 195, 25, 103, 104, 105, 106, 107, 108, 109, 110,
179346
+ /* 1460 */ 111, 112, 113, 114, 195, 228, 195, 218, 219, 218,
179347
+ /* 1470 */ 219, 195, 103, 104, 105, 106, 107, 108, 109, 110,
179348
+ /* 1480 */ 111, 112, 113, 114, 22, 195, 246, 218, 219, 218,
179349
+ /* 1490 */ 219, 195, 19, 22, 23, 61, 246, 257, 24, 136,
179350
+ /* 1500 */ 246, 22, 60, 24, 141, 118, 60, 257, 218, 219,
179351
+ /* 1510 */ 195, 257, 19, 195, 218, 219, 54, 44, 45, 195,
179352
+ /* 1520 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179353
+ /* 1530 */ 57, 58, 195, 218, 219, 195, 218, 219, 45, 195,
179354
+ /* 1540 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179355
+ /* 1550 */ 57, 58, 195, 121, 122, 218, 219, 195, 218, 219,
179356
+ /* 1560 */ 118, 195, 218, 219, 118, 23, 195, 25, 195, 143,
179357
+ /* 1570 */ 195, 19, 20, 102, 22, 195, 103, 104, 105, 106,
179358
+ /* 1580 */ 107, 108, 109, 110, 111, 112, 113, 114, 36, 218,
179359
+ /* 1590 */ 219, 218, 219, 218, 219, 195, 103, 104, 105, 106,
179360
+ /* 1600 */ 107, 108, 109, 110, 111, 112, 113, 114, 195, 23,
179361
+ /* 1610 */ 23, 25, 60, 195, 195, 195, 142, 195, 218, 219,
179362
+ /* 1620 */ 195, 23, 195, 25, 72, 130, 116, 23, 195, 25,
179363
+ /* 1630 */ 195, 218, 219, 195, 82, 195, 218, 219, 218, 219,
179364
+ /* 1640 */ 218, 219, 195, 218, 219, 218, 219, 195, 153, 195,
179365
+ /* 1650 */ 195, 218, 219, 101, 195, 145, 218, 219, 195, 107,
179366
+ /* 1660 */ 108, 23, 195, 25, 195, 218, 219, 115, 22, 117,
179367
+ /* 1670 */ 118, 119, 218, 219, 122, 195, 195, 218, 219, 195,
179368
+ /* 1680 */ 60, 218, 219, 7, 8, 218, 219, 19, 20, 195,
179369
+ /* 1690 */ 22, 139, 140, 23, 23, 25, 25, 195, 218, 219,
179370
+ /* 1700 */ 84, 85, 218, 219, 36, 228, 154, 155, 156, 157,
179371
+ /* 1710 */ 158, 195, 23, 195, 25, 195, 195, 49, 195, 23,
179372
+ /* 1720 */ 195, 25, 195, 23, 195, 25, 195, 195, 60, 195,
179373
+ /* 1730 */ 195, 195, 195, 146, 195, 183, 218, 219, 118, 195,
179374
+ /* 1740 */ 72, 218, 219, 218, 219, 218, 219, 218, 219, 218,
179375
+ /* 1750 */ 219, 195, 218, 219, 86, 218, 219, 218, 219, 91,
179376
+ /* 1760 */ 19, 20, 154, 22, 156, 23, 258, 25, 195, 101,
179377
+ /* 1770 */ 195, 23, 195, 25, 195, 107, 108, 36, 23, 154,
179378
+ /* 1780 */ 25, 156, 23, 115, 25, 117, 118, 119, 142, 238,
179379
+ /* 1790 */ 122, 218, 219, 218, 219, 218, 219, 23, 322, 25,
179380
+ /* 1800 */ 195, 60, 195, 300, 195, 195, 195, 195, 195, 244,
179381
+ /* 1810 */ 291, 258, 290, 72, 245, 258, 258, 258, 216, 193,
179382
+ /* 1820 */ 274, 247, 154, 155, 156, 157, 158, 86, 300, 296,
179383
+ /* 1830 */ 300, 270, 91, 19, 20, 247, 22, 270, 248, 248,
179384
+ /* 1840 */ 274, 296, 101, 222, 274, 274, 231, 262, 107, 108,
179385
+ /* 1850 */ 36, 183, 221, 221, 227, 221, 115, 262, 117, 118,
179386
+ /* 1860 */ 119, 262, 262, 122, 283, 251, 247, 245, 251, 116,
179387
+ /* 1870 */ 198, 220, 61, 220, 60, 220, 300, 142, 38, 202,
179388
+ /* 1880 */ 202, 297, 202, 152, 151, 22, 72, 286, 43, 297,
179389
+ /* 1890 */ 236, 18, 202, 275, 18, 154, 155, 156, 157, 158,
179390
+ /* 1900 */ 86, 273, 239, 239, 239, 91, 239, 201, 150, 248,
179391
+ /* 1910 */ 275, 275, 273, 202, 248, 101, 201, 236, 236, 159,
179392
+ /* 1920 */ 63, 107, 108, 248, 183, 202, 293, 248, 201, 115,
179393
+ /* 1930 */ 22, 117, 118, 119, 292, 223, 122, 223, 202, 201,
179394
+ /* 1940 */ 220, 202, 220, 65, 201, 220, 229, 22, 127, 220,
179395
+ /* 1950 */ 226, 223, 226, 166, 222, 24, 316, 220, 308, 229,
179396
+ /* 1960 */ 220, 114, 92, 202, 220, 321, 321, 83, 154, 155,
179397
+ /* 1970 */ 156, 157, 158, 0, 1, 2, 285, 285, 5, 223,
179398
+ /* 1980 */ 149, 268, 146, 10, 11, 12, 13, 14, 22, 268,
179399
+ /* 1990 */ 17, 202, 159, 19, 20, 250, 22, 183, 252, 280,
179400
+ /* 2000 */ 251, 148, 252, 30, 25, 32, 147, 204, 13, 196,
179401
+ /* 2010 */ 36, 249, 248, 40, 196, 6, 282, 194, 194, 194,
179402
+ /* 2020 */ 215, 209, 306, 215, 306, 215, 209, 4, 224, 209,
179403
+ /* 2030 */ 215, 224, 216, 3, 60, 216, 22, 215, 122, 19,
179404
+ /* 2040 */ 122, 19, 125, 22, 71, 16, 72, 22, 15, 23,
179405
+ /* 2050 */ 303, 23, 79, 140, 152, 82, 25, 131, 24, 20,
179406
+ /* 2060 */ 145, 16, 143, 1, 143, 131, 131, 62, 131, 37,
179407
+ /* 2070 */ 54, 54, 99, 54, 152, 101, 117, 34, 54, 1,
179408
+ /* 2080 */ 142, 107, 108, 22, 5, 116, 162, 69, 25, 115,
179409
+ /* 2090 */ 41, 117, 118, 119, 142, 24, 122, 116, 126, 132,
179410
+ /* 2100 */ 20, 19, 20, 76, 22, 69, 19, 134, 22, 68,
179411
+ /* 2110 */ 22, 22, 139, 140, 23, 141, 22, 60, 36, 68,
179412
+ /* 2120 */ 24, 28, 22, 68, 23, 150, 34, 37, 154, 155,
179413
+ /* 2130 */ 156, 157, 158, 22, 97, 23, 163, 23, 25, 23,
179414
+ /* 2140 */ 22, 142, 60, 23, 98, 23, 22, 144, 25, 34,
179415
+ /* 2150 */ 76, 34, 117, 34, 72, 34, 89, 183, 94, 34,
179416
+ /* 2160 */ 87, 76, 34, 23, 22, 24, 34, 22, 25, 25,
179417
+ /* 2170 */ 44, 23, 23, 23, 23, 11, 22, 25, 25, 23,
179418
+ /* 2180 */ 22, 143, 22, 101, 23, 143, 23, 22, 22, 107,
179419
+ /* 2190 */ 108, 15, 25, 25, 136, 142, 142, 115, 142, 117,
179420
+ /* 2200 */ 118, 119, 1, 2, 122, 23, 5, 1, 1, 323,
179421
+ /* 2210 */ 323, 10, 11, 12, 13, 14, 323, 323, 17, 323,
179422
+ /* 2220 */ 5, 323, 323, 141, 323, 10, 11, 12, 13, 14,
179423
+ /* 2230 */ 323, 30, 17, 32, 323, 323, 154, 155, 156, 157,
179424
+ /* 2240 */ 158, 40, 323, 323, 323, 30, 323, 32, 323, 323,
179425
+ /* 2250 */ 323, 323, 323, 323, 323, 40, 323, 323, 323, 323,
179426
+ /* 2260 */ 323, 323, 323, 323, 323, 183, 323, 323, 323, 323,
179427
+ /* 2270 */ 323, 323, 71, 323, 323, 323, 323, 323, 323, 323,
179428
+ /* 2280 */ 79, 323, 323, 82, 323, 323, 71, 323, 323, 323,
179429
+ /* 2290 */ 323, 323, 323, 323, 79, 323, 323, 82, 323, 323,
179430
+ /* 2300 */ 99, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179431
+ /* 2310 */ 323, 323, 323, 323, 99, 323, 323, 323, 323, 323,
178693179432
/* 2320 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178694
- /* 2330 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178695
- /* 2340 */ 323, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178696
- /* 2350 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178697
- /* 2360 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178698
- /* 2370 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178699
- /* 2380 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178700
- /* 2390 */ 187, 187, 187, 187,
179433
+ /* 2330 */ 323, 323, 323, 323, 323, 134, 323, 323, 323, 323,
179434
+ /* 2340 */ 139, 140, 323, 323, 323, 323, 323, 323, 323, 134,
179435
+ /* 2350 */ 323, 323, 323, 323, 139, 140, 323, 323, 323, 323,
179436
+ /* 2360 */ 323, 323, 323, 323, 163, 323, 323, 323, 323, 323,
179437
+ /* 2370 */ 323, 323, 323, 323, 323, 323, 323, 323, 163, 323,
179438
+ /* 2380 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179439
+ /* 2390 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179440
+ /* 2400 */ 323, 323, 323, 323, 323, 323, 323, 323, 187, 187,
179441
+ /* 2410 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179442
+ /* 2420 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179443
+ /* 2430 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179444
+ /* 2440 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179445
+ /* 2450 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179446
+ /* 2460 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179447
+ /* 2470 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179448
+ /* 2480 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179449
+ /* 2490 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179450
+ /* 2500 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179451
+ /* 2510 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179452
+ /* 2520 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179453
+ /* 2530 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179454
+ /* 2540 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179455
+ /* 2550 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179456
+ /* 2560 */ 187, 187, 187, 187, 187, 187,
178701179457
};
178702
-#define YY_SHIFT_COUNT (582)
179458
+#define YY_SHIFT_COUNT (601)
178703179459
#define YY_SHIFT_MIN (0)
178704
-#define YY_SHIFT_MAX (2152)
179460
+#define YY_SHIFT_MAX (2215)
178705179461
static const unsigned short int yy_shift_ofst[] = {
178706
- /* 0 */ 2029, 1801, 2043, 1380, 1380, 318, 271, 1496, 1569, 1642,
178707
- /* 10 */ 702, 702, 702, 740, 318, 318, 318, 318, 318, 0,
178708
- /* 20 */ 0, 216, 1177, 702, 702, 702, 702, 702, 702, 702,
178709
- /* 30 */ 702, 702, 702, 702, 702, 702, 702, 702, 503, 503,
178710
- /* 40 */ 111, 111, 217, 287, 348, 610, 610, 736, 736, 736,
178711
- /* 50 */ 736, 40, 112, 320, 340, 445, 489, 593, 637, 741,
178712
- /* 60 */ 785, 889, 909, 1023, 1043, 1157, 1177, 1177, 1177, 1177,
178713
- /* 70 */ 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
178714
- /* 80 */ 1177, 1177, 1177, 1177, 1197, 1177, 1301, 1321, 1321, 554,
178715
- /* 90 */ 1802, 1910, 702, 702, 702, 702, 702, 702, 702, 702,
178716
- /* 100 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178717
- /* 110 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178718
- /* 120 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178719
- /* 130 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178720
- /* 140 */ 702, 702, 138, 198, 198, 198, 198, 198, 198, 198,
178721
- /* 150 */ 183, 99, 169, 549, 610, 151, 542, 610, 610, 1017,
178722
- /* 160 */ 1017, 610, 1001, 350, 464, 464, 464, 586, 1, 1,
178723
- /* 170 */ 2207, 2207, 854, 854, 854, 465, 694, 694, 694, 694,
178724
- /* 180 */ 1096, 1096, 825, 549, 847, 904, 610, 610, 610, 610,
178725
- /* 190 */ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
178726
- /* 200 */ 610, 610, 610, 610, 610, 488, 947, 947, 610, 1129,
178727
- /* 210 */ 495, 495, 1139, 1139, 967, 967, 1173, 2207, 2207, 2207,
178728
- /* 220 */ 2207, 2207, 2207, 2207, 617, 765, 765, 697, 444, 708,
178729
- /* 230 */ 660, 745, 510, 663, 864, 610, 610, 610, 610, 610,
178730
- /* 240 */ 610, 610, 610, 610, 610, 188, 610, 610, 610, 610,
178731
- /* 250 */ 610, 610, 610, 610, 610, 610, 610, 610, 839, 839,
178732
- /* 260 */ 839, 610, 610, 610, 1155, 610, 610, 610, 1119, 1247,
178733
- /* 270 */ 610, 1353, 610, 610, 610, 610, 610, 610, 610, 610,
178734
- /* 280 */ 1063, 494, 1101, 291, 291, 291, 291, 1319, 1101, 1101,
178735
- /* 290 */ 775, 1221, 1375, 1452, 667, 1341, 1198, 1341, 1435, 1487,
178736
- /* 300 */ 667, 667, 1487, 667, 1198, 1435, 777, 1011, 1423, 584,
178737
- /* 310 */ 584, 584, 1273, 1273, 1273, 1273, 1471, 1471, 880, 1530,
178738
- /* 320 */ 1190, 1095, 1731, 1731, 1668, 1668, 1794, 1794, 1668, 1683,
178739
- /* 330 */ 1685, 1815, 1796, 1824, 1824, 1824, 1824, 1668, 1828, 1701,
178740
- /* 340 */ 1685, 1685, 1701, 1815, 1796, 1701, 1796, 1701, 1668, 1828,
178741
- /* 350 */ 1697, 1800, 1668, 1828, 1848, 1668, 1828, 1668, 1828, 1848,
178742
- /* 360 */ 1766, 1766, 1766, 1823, 1870, 1870, 1848, 1766, 1767, 1766,
178743
- /* 370 */ 1823, 1766, 1766, 1727, 1872, 1783, 1783, 1848, 1668, 1813,
178744
- /* 380 */ 1813, 1825, 1825, 1777, 1781, 1906, 1668, 1774, 1777, 1789,
178745
- /* 390 */ 1792, 1701, 1919, 1935, 1935, 1949, 1949, 1949, 2207, 2207,
178746
- /* 400 */ 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
178747
- /* 410 */ 2207, 2207, 2207, 69, 1032, 79, 357, 1377, 1206, 400,
178748
- /* 420 */ 1525, 835, 332, 1540, 1437, 1539, 1536, 1548, 1583, 1620,
178749
- /* 430 */ 1633, 1670, 1671, 1674, 1567, 1553, 1682, 1506, 1675, 1358,
178750
- /* 440 */ 1607, 1589, 1678, 1681, 1624, 1687, 1688, 1283, 1561, 1693,
178751
- /* 450 */ 1696, 1623, 1521, 1976, 1980, 1962, 1822, 1972, 1973, 1965,
178752
- /* 460 */ 1967, 1851, 1840, 1862, 1969, 1969, 1971, 1853, 1977, 1854,
178753
- /* 470 */ 1982, 1999, 1858, 1871, 1969, 1873, 1941, 1968, 1969, 1855,
178754
- /* 480 */ 1952, 1954, 1955, 1956, 1881, 1896, 1981, 1874, 2013, 2014,
178755
- /* 490 */ 1998, 1905, 1860, 1957, 2008, 1966, 1947, 1983, 1894, 1921,
178756
- /* 500 */ 2020, 2018, 2026, 1915, 1923, 2028, 1984, 2036, 2040, 2047,
178757
- /* 510 */ 2041, 2003, 2012, 2050, 1979, 2049, 2056, 2011, 2044, 2057,
178758
- /* 520 */ 2048, 1934, 2063, 2064, 2065, 2061, 2066, 2068, 1993, 1950,
178759
- /* 530 */ 2071, 2072, 1985, 2062, 2075, 1959, 2073, 2067, 2070, 2076,
178760
- /* 540 */ 2078, 2010, 2030, 2022, 2069, 2031, 2021, 2082, 2094, 2083,
178761
- /* 550 */ 2095, 2093, 2096, 2086, 1986, 1987, 2100, 2073, 2101, 2103,
178762
- /* 560 */ 2104, 2109, 2107, 2108, 2111, 2113, 2125, 2115, 2116, 2117,
178763
- /* 570 */ 2118, 2121, 2122, 2114, 2009, 2004, 2005, 2006, 2124, 2127,
178764
- /* 580 */ 2136, 2151, 2152,
178765
-};
178766
-#define YY_REDUCE_COUNT (412)
179462
+ /* 0 */ 2201, 1973, 2215, 1552, 1552, 343, 44, 1668, 1741, 1814,
179463
+ /* 10 */ 726, 726, 726, 662, 343, 343, 343, 343, 343, 0,
179464
+ /* 20 */ 0, 216, 1349, 726, 726, 726, 726, 726, 726, 726,
179465
+ /* 30 */ 726, 726, 726, 726, 726, 726, 726, 726, 272, 272,
179466
+ /* 40 */ 111, 111, 316, 119, 536, 769, 769, 546, 546, 546,
179467
+ /* 50 */ 546, 40, 112, 260, 364, 408, 512, 617, 661, 765,
179468
+ /* 60 */ 809, 913, 957, 1061, 1081, 1195, 1215, 1329, 1349, 1349,
179469
+ /* 70 */ 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
179470
+ /* 80 */ 1349, 1349, 1349, 1349, 1349, 1349, 1369, 1349, 1473, 1493,
179471
+ /* 90 */ 1493, 473, 1974, 2082, 726, 726, 726, 726, 726, 726,
179472
+ /* 100 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179473
+ /* 110 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179474
+ /* 120 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179475
+ /* 130 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179476
+ /* 140 */ 726, 726, 726, 726, 726, 726, 138, 233, 233, 233,
179477
+ /* 150 */ 233, 233, 233, 233, 245, 98, 183, 371, 874, 1029,
179478
+ /* 160 */ 769, 769, 888, 888, 769, 464, 110, 476, 476, 476,
179479
+ /* 170 */ 401, 62, 62, 2379, 2379, 1026, 1026, 1026, 540, 718,
179480
+ /* 180 */ 718, 718, 718, 1268, 1268, 610, 371, 276, 1174, 769,
179481
+ /* 190 */ 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
179482
+ /* 200 */ 769, 769, 769, 769, 769, 769, 769, 769, 534, 956,
179483
+ /* 210 */ 956, 769, 61, 1135, 1135, 831, 1278, 1278, 831, 831,
179484
+ /* 220 */ 360, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 641, 789,
179485
+ /* 230 */ 789, 721, 374, 732, 466, 782, 494, 829, 833, 769,
179486
+ /* 240 */ 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
179487
+ /* 250 */ 769, 769, 769, 677, 769, 769, 769, 769, 769, 769,
179488
+ /* 260 */ 769, 769, 769, 769, 769, 769, 370, 370, 370, 769,
179489
+ /* 270 */ 769, 769, 1062, 769, 769, 769, 1176, 1134, 769, 1190,
179490
+ /* 280 */ 769, 769, 769, 769, 769, 769, 769, 769, 485, 1149,
179491
+ /* 290 */ 13, 954, 336, 336, 336, 336, 262, 954, 954, 1147,
179492
+ /* 300 */ 373, 1342, 430, 1434, 1294, 1194, 1073, 1194, 1311, 103,
179493
+ /* 310 */ 1294, 1294, 103, 1294, 1073, 1311, 663, 1212, 1047, 1001,
179494
+ /* 320 */ 1001, 1001, 1510, 1510, 1510, 1510, 1265, 1265, 1270, 1426,
179495
+ /* 330 */ 1363, 1479, 1753, 1811, 1753, 1753, 1735, 1735, 1840, 1840,
179496
+ /* 340 */ 1735, 1731, 1733, 1863, 1845, 1873, 1873, 1873, 1873, 1735,
179497
+ /* 350 */ 1876, 1758, 1733, 1733, 1758, 1863, 1845, 1758, 1845, 1758,
179498
+ /* 360 */ 1735, 1876, 1760, 1857, 1735, 1876, 1908, 1735, 1876, 1735,
179499
+ /* 370 */ 1876, 1908, 1753, 1753, 1753, 1878, 1925, 1925, 1908, 1753,
179500
+ /* 380 */ 1821, 1753, 1878, 1753, 1753, 1787, 1931, 1847, 1847, 1908,
179501
+ /* 390 */ 1735, 1870, 1870, 1884, 1884, 1831, 1836, 1966, 1735, 1833,
179502
+ /* 400 */ 1831, 1853, 1859, 1758, 1979, 1995, 1995, 2009, 2009, 2009,
179503
+ /* 410 */ 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
179504
+ /* 420 */ 2379, 2379, 2379, 2379, 2379, 856, 1121, 830, 1080, 1471,
179505
+ /* 430 */ 911, 1261, 1387, 1542, 605, 1462, 1474, 650, 1495, 1586,
179506
+ /* 440 */ 1386, 1598, 1604, 1638, 1670, 1671, 1689, 1442, 1432, 1676,
179507
+ /* 450 */ 853, 1696, 1587, 1273, 1446, 1700, 1742, 1616, 1748, 1755,
179508
+ /* 460 */ 1608, 1625, 1759, 1774, 1620, 1646, 2023, 2030, 2014, 1916,
179509
+ /* 470 */ 2020, 1918, 2022, 2021, 2025, 1917, 2033, 2029, 2026, 2028,
179510
+ /* 480 */ 1913, 1902, 1926, 2031, 2031, 2034, 1919, 2039, 1915, 2045,
179511
+ /* 490 */ 2062, 1921, 1934, 2031, 1935, 2005, 2032, 2031, 1922, 2016,
179512
+ /* 500 */ 2017, 2019, 2024, 1937, 1959, 2043, 1938, 2078, 2079, 2061,
179513
+ /* 510 */ 1969, 1924, 2018, 2063, 2036, 2027, 2049, 1952, 1981, 2071,
179514
+ /* 520 */ 2080, 2087, 1967, 1972, 2086, 2041, 2088, 2089, 2091, 2094,
179515
+ /* 530 */ 2051, 2057, 2096, 2037, 2093, 2100, 2055, 2090, 2101, 2092,
179516
+ /* 540 */ 1975, 2111, 2112, 2114, 2113, 2116, 2118, 2046, 1999, 2120,
179517
+ /* 550 */ 2122, 2035, 2115, 2124, 2003, 2123, 2117, 2119, 2121, 2125,
179518
+ /* 560 */ 2067, 2074, 2073, 2126, 2085, 2064, 2128, 2140, 2142, 2141,
179519
+ /* 570 */ 2143, 2144, 2132, 2038, 2042, 2148, 2123, 2149, 2150, 2151,
179520
+ /* 580 */ 2145, 2152, 2153, 2156, 2154, 2164, 2158, 2160, 2161, 2163,
179521
+ /* 590 */ 2165, 2166, 2167, 2058, 2053, 2054, 2056, 2168, 2182, 2176,
179522
+ /* 600 */ 2206, 2207,
179523
+};
179524
+#define YY_REDUCE_COUNT (424)
178767179525
#define YY_REDUCE_MIN (-277)
178768
-#define YY_REDUCE_MAX (1772)
179526
+#define YY_REDUCE_MAX (1825)
178769179527
static const short yy_reduce_ofst[] = {
178770
- /* 0 */ -67, 1252, -64, -178, -181, 160, 1071, 143, -184, 137,
178771
- /* 10 */ 218, 220, 222, -174, 229, 268, 272, 275, 324, -208,
178772
- /* 20 */ 242, -277, -39, 81, 537, 792, 810, 812, -189, 814,
178773
- /* 30 */ 831, 163, 865, 944, 887, 840, 964, 1077, -187, 292,
178774
- /* 40 */ -133, 274, 673, 558, 682, 795, 809, -238, -232, -238,
178775
- /* 50 */ -232, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178776
- /* 60 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178777
- /* 70 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178778
- /* 80 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 557,
178779
- /* 90 */ 712, 949, 966, 969, 971, 979, 1097, 1099, 1103, 1142,
178780
- /* 100 */ 1144, 1169, 1172, 1201, 1203, 1228, 1241, 1250, 1253, 1255,
178781
- /* 110 */ 1261, 1266, 1271, 1282, 1291, 1308, 1310, 1312, 1322, 1328,
178782
- /* 120 */ 1347, 1354, 1356, 1359, 1362, 1365, 1367, 1374, 1376, 1381,
178783
- /* 130 */ 1401, 1403, 1406, 1412, 1414, 1417, 1421, 1428, 1447, 1449,
178784
- /* 140 */ 1453, 1462, 329, 329, 329, 329, 329, 329, 329, 329,
178785
- /* 150 */ 329, 329, 329, -22, -159, 475, -220, 756, 38, 501,
178786
- /* 160 */ 841, 714, 329, 118, 337, 349, 363, -56, 329, 329,
178787
- /* 170 */ 329, 329, -205, -205, -205, 687, -172, -130, -57, 790,
178788
- /* 180 */ 397, 528, -271, 136, 596, 596, 90, 316, 522, 541,
178789
- /* 190 */ -37, 715, 849, 977, 628, 856, 980, 991, 1081, 1102,
178790
- /* 200 */ 1135, 1083, -162, 208, 1258, 794, -86, 159, 41, 1109,
178791
- /* 210 */ 671, 852, 844, 932, 1175, 1254, 480, 1180, 100, 258,
178792
- /* 220 */ 1265, 1268, 1216, 1287, -139, 317, 344, 63, 339, 423,
178793
- /* 230 */ 563, 636, 676, 813, 908, 914, 950, 1078, 1084, 1098,
178794
- /* 240 */ 1363, 1384, 1407, 1439, 1464, 411, 1527, 1534, 1535, 1537,
178795
- /* 250 */ 1541, 1542, 1543, 1544, 1545, 1547, 1549, 1550, 990, 1164,
178796
- /* 260 */ 1492, 1551, 1552, 1556, 1217, 1558, 1559, 1560, 1473, 1413,
178797
- /* 270 */ 1563, 1510, 1568, 563, 1570, 1571, 1572, 1573, 1574, 1575,
178798
- /* 280 */ 1443, 1466, 1518, 1513, 1514, 1515, 1516, 1217, 1518, 1518,
178799
- /* 290 */ 1531, 1562, 1582, 1477, 1505, 1511, 1533, 1512, 1488, 1538,
178800
- /* 300 */ 1509, 1517, 1546, 1519, 1557, 1489, 1565, 1564, 1578, 1586,
178801
- /* 310 */ 1587, 1588, 1526, 1528, 1554, 1555, 1576, 1577, 1566, 1579,
178802
- /* 320 */ 1584, 1591, 1520, 1523, 1617, 1628, 1580, 1581, 1632, 1585,
178803
- /* 330 */ 1590, 1593, 1604, 1605, 1606, 1608, 1609, 1641, 1649, 1610,
178804
- /* 340 */ 1592, 1594, 1611, 1595, 1616, 1612, 1618, 1613, 1651, 1654,
178805
- /* 350 */ 1596, 1598, 1655, 1663, 1650, 1673, 1680, 1677, 1684, 1653,
178806
- /* 360 */ 1664, 1666, 1667, 1662, 1669, 1672, 1676, 1686, 1679, 1691,
178807
- /* 370 */ 1689, 1692, 1694, 1597, 1599, 1619, 1630, 1699, 1700, 1602,
178808
- /* 380 */ 1615, 1648, 1657, 1690, 1698, 1658, 1729, 1652, 1695, 1702,
178809
- /* 390 */ 1704, 1703, 1741, 1754, 1758, 1768, 1769, 1771, 1660, 1661,
178810
- /* 400 */ 1665, 1752, 1756, 1757, 1759, 1760, 1764, 1745, 1753, 1762,
178811
- /* 410 */ 1763, 1761, 1772,
179528
+ /* 0 */ -67, 345, 787, -178, -181, 188, 435, -185, 166, -183,
179529
+ /* 10 */ -78, 284, 384, -174, 352, 391, 493, 496, 535, -208,
179530
+ /* 20 */ -23, -277, -2, 205, 305, 310, 707, 764, -189, 67,
179531
+ /* 30 */ 839, 735, 835, 860, 902, 354, 958, 960, -187, 946,
179532
+ /* 40 */ 86, 616, 843, 587, 792, 900, 901, -238, 440, -238,
179533
+ /* 50 */ 440, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179534
+ /* 60 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179535
+ /* 70 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179536
+ /* 80 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179537
+ /* 90 */ -255, 864, 985, 1094, 1096, 1098, 1116, 1136, 1138, 1141,
179538
+ /* 100 */ 1144, 1146, 1148, 1151, 1249, 1251, 1269, 1271, 1290, 1296,
179539
+ /* 110 */ 1315, 1318, 1337, 1340, 1344, 1371, 1373, 1375, 1400, 1413,
179540
+ /* 120 */ 1418, 1420, 1422, 1425, 1427, 1433, 1438, 1447, 1454, 1459,
179541
+ /* 130 */ 1463, 1467, 1480, 1484, 1518, 1523, 1525, 1527, 1529, 1531,
179542
+ /* 140 */ 1534, 1537, 1539, 1573, 1575, 1577, -255, -255, -255, -255,
179543
+ /* 150 */ -255, -255, -255, -255, -255, -255, -255, 197, 162, -220,
179544
+ /* 160 */ -76, -130, 121, 725, 844, -255, -116, -214, 417, 484,
179545
+ /* 170 */ 441, -255, -255, -255, -255, 562, 562, 562, 702, -57,
179546
+ /* 180 */ 560, 703, 836, -122, 556, -35, 301, 521, 521, -37,
179547
+ /* 190 */ -184, 729, 959, 290, 292, 394, 409, 215, 412, 357,
179548
+ /* 200 */ 495, 808, 590, 961, 652, 403, 928, 1016, 672, -11,
179549
+ /* 210 */ 69, -53, 1046, 906, 909, 731, 490, 814, 1020, 1064,
179550
+ /* 220 */ 124, 984, -237, 1101, 1240, 1250, 1078, 1254, -33, -18,
179551
+ /* 230 */ 9, 85, 99, 248, 309, 332, 736, 804, 842, 932,
179552
+ /* 240 */ 947, 988, 1010, 1157, 1166, 1220, 1235, 1255, 1276, 1324,
179553
+ /* 250 */ 1357, 1362, 1366, 275, 1380, 1419, 1435, 1440, 1452, 1455,
179554
+ /* 260 */ 1469, 1481, 1494, 1502, 1516, 1520, 1068, 1237, 1477, 1521,
179555
+ /* 270 */ 1532, 1535, 996, 1536, 1544, 1556, 1508, 1476, 1579, 1551,
179556
+ /* 280 */ 1605, 309, 1607, 1609, 1610, 1611, 1612, 1613, 1503, 1519,
179557
+ /* 290 */ 1522, 1565, 1553, 1557, 1558, 1559, 996, 1565, 1565, 1569,
179558
+ /* 300 */ 1602, 1626, 1528, 1530, 1546, 1561, 1574, 1567, 1533, 1590,
179559
+ /* 310 */ 1566, 1570, 1591, 1571, 1588, 1545, 1621, 1615, 1627, 1631,
179560
+ /* 320 */ 1632, 1634, 1585, 1595, 1599, 1600, 1614, 1617, 1581, 1619,
179561
+ /* 330 */ 1622, 1672, 1651, 1576, 1653, 1655, 1677, 1678, 1584, 1592,
179562
+ /* 340 */ 1680, 1601, 1618, 1628, 1654, 1663, 1664, 1665, 1667, 1690,
179563
+ /* 350 */ 1706, 1661, 1635, 1636, 1666, 1639, 1681, 1675, 1682, 1679,
179564
+ /* 360 */ 1711, 1715, 1633, 1642, 1723, 1727, 1712, 1736, 1738, 1739,
179565
+ /* 370 */ 1743, 1714, 1720, 1722, 1725, 1717, 1724, 1726, 1728, 1729,
179566
+ /* 380 */ 1732, 1737, 1730, 1740, 1744, 1640, 1650, 1691, 1692, 1756,
179567
+ /* 390 */ 1761, 1644, 1645, 1713, 1721, 1746, 1749, 1719, 1789, 1734,
179568
+ /* 400 */ 1750, 1745, 1762, 1764, 1803, 1813, 1818, 1823, 1824, 1825,
179569
+ /* 410 */ 1716, 1718, 1747, 1812, 1805, 1808, 1810, 1815, 1817, 1804,
179570
+ /* 420 */ 1807, 1816, 1819, 1822, 1820,
178812179571
};
178813179572
static const YYACTIONTYPE yy_default[] = {
178814
- /* 0 */ 1663, 1663, 1663, 1491, 1254, 1367, 1254, 1254, 1254, 1254,
178815
- /* 10 */ 1491, 1491, 1491, 1254, 1254, 1254, 1254, 1254, 1254, 1397,
178816
- /* 20 */ 1397, 1544, 1287, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178817
- /* 30 */ 1254, 1254, 1254, 1254, 1254, 1490, 1254, 1254, 1254, 1254,
178818
- /* 40 */ 1578, 1578, 1254, 1254, 1254, 1254, 1254, 1563, 1562, 1254,
178819
- /* 50 */ 1254, 1254, 1406, 1254, 1413, 1254, 1254, 1254, 1254, 1254,
178820
- /* 60 */ 1492, 1493, 1254, 1254, 1254, 1254, 1543, 1545, 1508, 1420,
178821
- /* 70 */ 1419, 1418, 1417, 1526, 1385, 1411, 1404, 1408, 1487, 1488,
178822
- /* 80 */ 1486, 1641, 1493, 1492, 1254, 1407, 1455, 1471, 1454, 1254,
178823
- /* 90 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178824
- /* 100 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178825
- /* 110 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178826
- /* 120 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178827
- /* 130 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178828
- /* 140 */ 1254, 1254, 1463, 1470, 1469, 1468, 1477, 1467, 1464, 1457,
178829
- /* 150 */ 1456, 1458, 1459, 1278, 1254, 1275, 1329, 1254, 1254, 1254,
178830
- /* 160 */ 1254, 1254, 1460, 1287, 1448, 1447, 1446, 1254, 1474, 1461,
178831
- /* 170 */ 1473, 1472, 1551, 1615, 1614, 1509, 1254, 1254, 1254, 1254,
178832
- /* 180 */ 1254, 1254, 1578, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178833
- /* 190 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178834
- /* 200 */ 1254, 1254, 1254, 1254, 1254, 1387, 1578, 1578, 1254, 1287,
178835
- /* 210 */ 1578, 1578, 1388, 1388, 1283, 1283, 1391, 1558, 1358, 1358,
178836
- /* 220 */ 1358, 1358, 1367, 1358, 1254, 1254, 1254, 1254, 1254, 1254,
178837
- /* 230 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1548,
178838
- /* 240 */ 1546, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178839
- /* 250 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178840
- /* 260 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1363, 1254,
178841
- /* 270 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1608,
178842
- /* 280 */ 1254, 1521, 1343, 1363, 1363, 1363, 1363, 1365, 1344, 1342,
178843
- /* 290 */ 1357, 1288, 1261, 1655, 1423, 1412, 1364, 1412, 1652, 1410,
178844
- /* 300 */ 1423, 1423, 1410, 1423, 1364, 1652, 1304, 1630, 1299, 1397,
178845
- /* 310 */ 1397, 1397, 1387, 1387, 1387, 1387, 1391, 1391, 1489, 1364,
178846
- /* 320 */ 1357, 1254, 1655, 1655, 1373, 1373, 1654, 1654, 1373, 1509,
178847
- /* 330 */ 1638, 1432, 1332, 1338, 1338, 1338, 1338, 1373, 1272, 1410,
178848
- /* 340 */ 1638, 1638, 1410, 1432, 1332, 1410, 1332, 1410, 1373, 1272,
178849
- /* 350 */ 1525, 1649, 1373, 1272, 1499, 1373, 1272, 1373, 1272, 1499,
178850
- /* 360 */ 1330, 1330, 1330, 1319, 1254, 1254, 1499, 1330, 1304, 1330,
178851
- /* 370 */ 1319, 1330, 1330, 1596, 1254, 1503, 1503, 1499, 1373, 1588,
178852
- /* 380 */ 1588, 1400, 1400, 1405, 1391, 1494, 1373, 1254, 1405, 1403,
178853
- /* 390 */ 1401, 1410, 1322, 1611, 1611, 1607, 1607, 1607, 1660, 1660,
178854
- /* 400 */ 1558, 1623, 1287, 1287, 1287, 1287, 1623, 1306, 1306, 1288,
178855
- /* 410 */ 1288, 1287, 1623, 1254, 1254, 1254, 1254, 1254, 1254, 1618,
178856
- /* 420 */ 1254, 1553, 1510, 1377, 1254, 1254, 1254, 1254, 1254, 1254,
178857
- /* 430 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178858
- /* 440 */ 1564, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178859
- /* 450 */ 1254, 1254, 1437, 1254, 1257, 1555, 1254, 1254, 1254, 1254,
178860
- /* 460 */ 1254, 1254, 1254, 1254, 1414, 1415, 1378, 1254, 1254, 1254,
178861
- /* 470 */ 1254, 1254, 1254, 1254, 1429, 1254, 1254, 1254, 1424, 1254,
178862
- /* 480 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1651, 1254, 1254,
178863
- /* 490 */ 1254, 1254, 1254, 1254, 1524, 1523, 1254, 1254, 1375, 1254,
178864
- /* 500 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178865
- /* 510 */ 1254, 1254, 1302, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178866
- /* 520 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178867
- /* 530 */ 1254, 1254, 1254, 1254, 1254, 1254, 1402, 1254, 1254, 1254,
178868
- /* 540 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178869
- /* 550 */ 1254, 1593, 1392, 1254, 1254, 1254, 1254, 1642, 1254, 1254,
178870
- /* 560 */ 1254, 1254, 1352, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178871
- /* 570 */ 1254, 1254, 1254, 1634, 1346, 1438, 1254, 1441, 1276, 1254,
178872
- /* 580 */ 1266, 1254, 1254,
179573
+ /* 0 */ 1698, 1698, 1698, 1521, 1284, 1397, 1284, 1284, 1284, 1284,
179574
+ /* 10 */ 1521, 1521, 1521, 1284, 1284, 1284, 1284, 1284, 1284, 1427,
179575
+ /* 20 */ 1427, 1574, 1317, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179576
+ /* 30 */ 1284, 1284, 1284, 1284, 1284, 1520, 1284, 1284, 1284, 1284,
179577
+ /* 40 */ 1613, 1613, 1284, 1284, 1284, 1284, 1284, 1598, 1597, 1284,
179578
+ /* 50 */ 1284, 1284, 1436, 1284, 1284, 1284, 1443, 1284, 1284, 1284,
179579
+ /* 60 */ 1284, 1284, 1522, 1523, 1284, 1284, 1284, 1284, 1573, 1575,
179580
+ /* 70 */ 1538, 1450, 1449, 1448, 1447, 1556, 1415, 1441, 1434, 1438,
179581
+ /* 80 */ 1517, 1518, 1516, 1676, 1523, 1522, 1284, 1437, 1485, 1501,
179582
+ /* 90 */ 1484, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179583
+ /* 100 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179584
+ /* 110 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179585
+ /* 120 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179586
+ /* 130 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179587
+ /* 140 */ 1284, 1284, 1284, 1284, 1284, 1284, 1493, 1500, 1499, 1498,
179588
+ /* 150 */ 1507, 1497, 1494, 1487, 1486, 1488, 1489, 1308, 1305, 1359,
179589
+ /* 160 */ 1284, 1284, 1284, 1284, 1284, 1490, 1317, 1478, 1477, 1476,
179590
+ /* 170 */ 1284, 1504, 1491, 1503, 1502, 1581, 1650, 1649, 1539, 1284,
179591
+ /* 180 */ 1284, 1284, 1284, 1284, 1284, 1613, 1284, 1284, 1284, 1284,
179592
+ /* 190 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179593
+ /* 200 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1417, 1613,
179594
+ /* 210 */ 1613, 1284, 1317, 1613, 1613, 1313, 1418, 1418, 1313, 1313,
179595
+ /* 220 */ 1421, 1593, 1388, 1388, 1388, 1388, 1397, 1388, 1284, 1284,
179596
+ /* 230 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179597
+ /* 240 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1578, 1576, 1284,
179598
+ /* 250 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179599
+ /* 260 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179600
+ /* 270 */ 1284, 1284, 1284, 1284, 1284, 1284, 1393, 1284, 1284, 1284,
179601
+ /* 280 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1643, 1690, 1284,
179602
+ /* 290 */ 1551, 1373, 1393, 1393, 1393, 1393, 1395, 1374, 1372, 1387,
179603
+ /* 300 */ 1318, 1291, 1690, 1690, 1453, 1442, 1394, 1442, 1687, 1440,
179604
+ /* 310 */ 1453, 1453, 1440, 1453, 1394, 1687, 1334, 1665, 1329, 1427,
179605
+ /* 320 */ 1427, 1427, 1417, 1417, 1417, 1417, 1421, 1421, 1519, 1394,
179606
+ /* 330 */ 1387, 1284, 1360, 1690, 1360, 1360, 1403, 1403, 1689, 1689,
179607
+ /* 340 */ 1403, 1539, 1673, 1462, 1362, 1368, 1368, 1368, 1368, 1403,
179608
+ /* 350 */ 1302, 1440, 1673, 1673, 1440, 1462, 1362, 1440, 1362, 1440,
179609
+ /* 360 */ 1403, 1302, 1555, 1684, 1403, 1302, 1529, 1403, 1302, 1403,
179610
+ /* 370 */ 1302, 1529, 1360, 1360, 1360, 1349, 1284, 1284, 1529, 1360,
179611
+ /* 380 */ 1334, 1360, 1349, 1360, 1360, 1631, 1284, 1533, 1533, 1529,
179612
+ /* 390 */ 1403, 1623, 1623, 1430, 1430, 1435, 1421, 1524, 1403, 1284,
179613
+ /* 400 */ 1435, 1433, 1431, 1440, 1352, 1646, 1646, 1642, 1642, 1642,
179614
+ /* 410 */ 1695, 1695, 1593, 1658, 1317, 1317, 1317, 1317, 1658, 1336,
179615
+ /* 420 */ 1336, 1318, 1318, 1317, 1658, 1284, 1284, 1284, 1284, 1284,
179616
+ /* 430 */ 1284, 1284, 1653, 1284, 1284, 1540, 1407, 1284, 1284, 1284,
179617
+ /* 440 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179618
+ /* 450 */ 1284, 1284, 1284, 1599, 1284, 1284, 1284, 1284, 1284, 1284,
179619
+ /* 460 */ 1284, 1284, 1284, 1284, 1284, 1467, 1284, 1287, 1590, 1284,
179620
+ /* 470 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179621
+ /* 480 */ 1284, 1284, 1284, 1444, 1445, 1408, 1284, 1284, 1284, 1284,
179622
+ /* 490 */ 1284, 1284, 1284, 1459, 1284, 1284, 1284, 1454, 1284, 1284,
179623
+ /* 500 */ 1284, 1284, 1284, 1284, 1284, 1284, 1686, 1284, 1284, 1284,
179624
+ /* 510 */ 1284, 1284, 1284, 1554, 1553, 1284, 1284, 1405, 1284, 1284,
179625
+ /* 520 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179626
+ /* 530 */ 1284, 1332, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179627
+ /* 540 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179628
+ /* 550 */ 1284, 1284, 1284, 1284, 1284, 1432, 1284, 1284, 1284, 1284,
179629
+ /* 560 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179630
+ /* 570 */ 1628, 1422, 1284, 1284, 1284, 1284, 1677, 1284, 1284, 1284,
179631
+ /* 580 */ 1284, 1382, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179632
+ /* 590 */ 1284, 1284, 1669, 1376, 1468, 1284, 1471, 1306, 1284, 1296,
179633
+ /* 600 */ 1284, 1284,
178873179634
};
178874179635
/********** End of lemon-generated parsing tables *****************************/
178875179636
178876179637
/* The next table maps tokens (terminal symbols) into fallback tokens.
178877179638
** If a construct like the following:
@@ -179456,11 +180217,11 @@
179456180217
/* 294 */ "trigger_cmd",
179457180218
/* 295 */ "trnm",
179458180219
/* 296 */ "tridxby",
179459180220
/* 297 */ "database_kw_opt",
179460180221
/* 298 */ "key_opt",
179461
- /* 299 */ "add_column_fullname",
180222
+ /* 299 */ "alter_add",
179462180223
/* 300 */ "kwcolumn_opt",
179463180224
/* 301 */ "create_vtab",
179464180225
/* 302 */ "vtabarglist",
179465180226
/* 303 */ "vtabarg",
179466180227
/* 304 */ "vtabargtoken",
@@ -179781,125 +180542,130 @@
179781180542
/* 289 */ "cmd ::= REINDEX",
179782180543
/* 290 */ "cmd ::= REINDEX nm dbnm",
179783180544
/* 291 */ "cmd ::= ANALYZE",
179784180545
/* 292 */ "cmd ::= ANALYZE nm dbnm",
179785180546
/* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
179786
- /* 294 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
179787
- /* 295 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
179788
- /* 296 */ "add_column_fullname ::= fullname",
180547
+ /* 294 */ "cmd ::= alter_add carglist",
180548
+ /* 295 */ "alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken",
180549
+ /* 296 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
179789180550
/* 297 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
179790
- /* 298 */ "cmd ::= create_vtab",
179791
- /* 299 */ "cmd ::= create_vtab LP vtabarglist RP",
179792
- /* 300 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
179793
- /* 301 */ "vtabarg ::=",
179794
- /* 302 */ "vtabargtoken ::= ANY",
179795
- /* 303 */ "vtabargtoken ::= lp anylist RP",
179796
- /* 304 */ "lp ::= LP",
179797
- /* 305 */ "with ::= WITH wqlist",
179798
- /* 306 */ "with ::= WITH RECURSIVE wqlist",
179799
- /* 307 */ "wqas ::= AS",
179800
- /* 308 */ "wqas ::= AS MATERIALIZED",
179801
- /* 309 */ "wqas ::= AS NOT MATERIALIZED",
179802
- /* 310 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
179803
- /* 311 */ "withnm ::= nm",
179804
- /* 312 */ "wqlist ::= wqitem",
179805
- /* 313 */ "wqlist ::= wqlist COMMA wqitem",
179806
- /* 314 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
179807
- /* 315 */ "windowdefn ::= nm AS LP window RP",
179808
- /* 316 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
179809
- /* 317 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
179810
- /* 318 */ "window ::= ORDER BY sortlist frame_opt",
179811
- /* 319 */ "window ::= nm ORDER BY sortlist frame_opt",
179812
- /* 320 */ "window ::= nm frame_opt",
179813
- /* 321 */ "frame_opt ::=",
179814
- /* 322 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
179815
- /* 323 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
179816
- /* 324 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
179817
- /* 325 */ "frame_bound_s ::= frame_bound",
179818
- /* 326 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
179819
- /* 327 */ "frame_bound_e ::= frame_bound",
179820
- /* 328 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
179821
- /* 329 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
179822
- /* 330 */ "frame_bound ::= CURRENT ROW",
179823
- /* 331 */ "frame_exclude_opt ::=",
179824
- /* 332 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
179825
- /* 333 */ "frame_exclude ::= NO OTHERS",
179826
- /* 334 */ "frame_exclude ::= CURRENT ROW",
179827
- /* 335 */ "frame_exclude ::= GROUP|TIES",
179828
- /* 336 */ "window_clause ::= WINDOW windowdefn_list",
179829
- /* 337 */ "filter_over ::= filter_clause over_clause",
179830
- /* 338 */ "filter_over ::= over_clause",
179831
- /* 339 */ "filter_over ::= filter_clause",
179832
- /* 340 */ "over_clause ::= OVER LP window RP",
179833
- /* 341 */ "over_clause ::= OVER nm",
179834
- /* 342 */ "filter_clause ::= FILTER LP WHERE expr RP",
179835
- /* 343 */ "term ::= QNUMBER",
179836
- /* 344 */ "input ::= cmdlist",
179837
- /* 345 */ "cmdlist ::= cmdlist ecmd",
179838
- /* 346 */ "cmdlist ::= ecmd",
179839
- /* 347 */ "ecmd ::= SEMI",
179840
- /* 348 */ "ecmd ::= cmdx SEMI",
179841
- /* 349 */ "ecmd ::= explain cmdx SEMI",
179842
- /* 350 */ "trans_opt ::=",
179843
- /* 351 */ "trans_opt ::= TRANSACTION",
179844
- /* 352 */ "trans_opt ::= TRANSACTION nm",
179845
- /* 353 */ "savepoint_opt ::= SAVEPOINT",
179846
- /* 354 */ "savepoint_opt ::=",
179847
- /* 355 */ "cmd ::= create_table create_table_args",
179848
- /* 356 */ "table_option_set ::= table_option",
179849
- /* 357 */ "columnlist ::= columnlist COMMA columnname carglist",
179850
- /* 358 */ "columnlist ::= columnname carglist",
179851
- /* 359 */ "nm ::= ID|INDEXED|JOIN_KW",
179852
- /* 360 */ "nm ::= STRING",
179853
- /* 361 */ "typetoken ::= typename",
179854
- /* 362 */ "typename ::= ID|STRING",
179855
- /* 363 */ "signed ::= plus_num",
179856
- /* 364 */ "signed ::= minus_num",
179857
- /* 365 */ "carglist ::= carglist ccons",
179858
- /* 366 */ "carglist ::=",
179859
- /* 367 */ "ccons ::= NULL onconf",
179860
- /* 368 */ "ccons ::= GENERATED ALWAYS AS generated",
179861
- /* 369 */ "ccons ::= AS generated",
179862
- /* 370 */ "conslist_opt ::= COMMA conslist",
179863
- /* 371 */ "conslist ::= conslist tconscomma tcons",
179864
- /* 372 */ "conslist ::= tcons",
179865
- /* 373 */ "tconscomma ::=",
179866
- /* 374 */ "defer_subclause_opt ::= defer_subclause",
179867
- /* 375 */ "resolvetype ::= raisetype",
179868
- /* 376 */ "selectnowith ::= oneselect",
179869
- /* 377 */ "oneselect ::= values",
179870
- /* 378 */ "sclp ::= selcollist COMMA",
179871
- /* 379 */ "as ::= ID|STRING",
179872
- /* 380 */ "indexed_opt ::= indexed_by",
179873
- /* 381 */ "returning ::=",
179874
- /* 382 */ "expr ::= term",
179875
- /* 383 */ "likeop ::= LIKE_KW|MATCH",
179876
- /* 384 */ "case_operand ::= expr",
179877
- /* 385 */ "exprlist ::= nexprlist",
179878
- /* 386 */ "nmnum ::= plus_num",
179879
- /* 387 */ "nmnum ::= nm",
179880
- /* 388 */ "nmnum ::= ON",
179881
- /* 389 */ "nmnum ::= DELETE",
179882
- /* 390 */ "nmnum ::= DEFAULT",
179883
- /* 391 */ "plus_num ::= INTEGER|FLOAT",
179884
- /* 392 */ "foreach_clause ::=",
179885
- /* 393 */ "foreach_clause ::= FOR EACH ROW",
179886
- /* 394 */ "trnm ::= nm",
179887
- /* 395 */ "tridxby ::=",
179888
- /* 396 */ "database_kw_opt ::= DATABASE",
179889
- /* 397 */ "database_kw_opt ::=",
179890
- /* 398 */ "kwcolumn_opt ::=",
179891
- /* 399 */ "kwcolumn_opt ::= COLUMNKW",
179892
- /* 400 */ "vtabarglist ::= vtabarg",
179893
- /* 401 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
179894
- /* 402 */ "vtabarg ::= vtabarg vtabargtoken",
179895
- /* 403 */ "anylist ::=",
179896
- /* 404 */ "anylist ::= anylist LP anylist RP",
179897
- /* 405 */ "anylist ::= anylist ANY",
179898
- /* 406 */ "with ::=",
179899
- /* 407 */ "windowdefn_list ::= windowdefn",
179900
- /* 408 */ "window ::= frame_opt",
180551
+ /* 298 */ "cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm",
180552
+ /* 299 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL",
180553
+ /* 300 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf",
180554
+ /* 301 */ "cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf",
180555
+ /* 302 */ "cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf",
180556
+ /* 303 */ "cmd ::= create_vtab",
180557
+ /* 304 */ "cmd ::= create_vtab LP vtabarglist RP",
180558
+ /* 305 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
180559
+ /* 306 */ "vtabarg ::=",
180560
+ /* 307 */ "vtabargtoken ::= ANY",
180561
+ /* 308 */ "vtabargtoken ::= lp anylist RP",
180562
+ /* 309 */ "lp ::= LP",
180563
+ /* 310 */ "with ::= WITH wqlist",
180564
+ /* 311 */ "with ::= WITH RECURSIVE wqlist",
180565
+ /* 312 */ "wqas ::= AS",
180566
+ /* 313 */ "wqas ::= AS MATERIALIZED",
180567
+ /* 314 */ "wqas ::= AS NOT MATERIALIZED",
180568
+ /* 315 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
180569
+ /* 316 */ "withnm ::= nm",
180570
+ /* 317 */ "wqlist ::= wqitem",
180571
+ /* 318 */ "wqlist ::= wqlist COMMA wqitem",
180572
+ /* 319 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
180573
+ /* 320 */ "windowdefn ::= nm AS LP window RP",
180574
+ /* 321 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
180575
+ /* 322 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
180576
+ /* 323 */ "window ::= ORDER BY sortlist frame_opt",
180577
+ /* 324 */ "window ::= nm ORDER BY sortlist frame_opt",
180578
+ /* 325 */ "window ::= nm frame_opt",
180579
+ /* 326 */ "frame_opt ::=",
180580
+ /* 327 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
180581
+ /* 328 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
180582
+ /* 329 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
180583
+ /* 330 */ "frame_bound_s ::= frame_bound",
180584
+ /* 331 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
180585
+ /* 332 */ "frame_bound_e ::= frame_bound",
180586
+ /* 333 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
180587
+ /* 334 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
180588
+ /* 335 */ "frame_bound ::= CURRENT ROW",
180589
+ /* 336 */ "frame_exclude_opt ::=",
180590
+ /* 337 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
180591
+ /* 338 */ "frame_exclude ::= NO OTHERS",
180592
+ /* 339 */ "frame_exclude ::= CURRENT ROW",
180593
+ /* 340 */ "frame_exclude ::= GROUP|TIES",
180594
+ /* 341 */ "window_clause ::= WINDOW windowdefn_list",
180595
+ /* 342 */ "filter_over ::= filter_clause over_clause",
180596
+ /* 343 */ "filter_over ::= over_clause",
180597
+ /* 344 */ "filter_over ::= filter_clause",
180598
+ /* 345 */ "over_clause ::= OVER LP window RP",
180599
+ /* 346 */ "over_clause ::= OVER nm",
180600
+ /* 347 */ "filter_clause ::= FILTER LP WHERE expr RP",
180601
+ /* 348 */ "term ::= QNUMBER",
180602
+ /* 349 */ "input ::= cmdlist",
180603
+ /* 350 */ "cmdlist ::= cmdlist ecmd",
180604
+ /* 351 */ "cmdlist ::= ecmd",
180605
+ /* 352 */ "ecmd ::= SEMI",
180606
+ /* 353 */ "ecmd ::= cmdx SEMI",
180607
+ /* 354 */ "ecmd ::= explain cmdx SEMI",
180608
+ /* 355 */ "trans_opt ::=",
180609
+ /* 356 */ "trans_opt ::= TRANSACTION",
180610
+ /* 357 */ "trans_opt ::= TRANSACTION nm",
180611
+ /* 358 */ "savepoint_opt ::= SAVEPOINT",
180612
+ /* 359 */ "savepoint_opt ::=",
180613
+ /* 360 */ "cmd ::= create_table create_table_args",
180614
+ /* 361 */ "table_option_set ::= table_option",
180615
+ /* 362 */ "columnlist ::= columnlist COMMA columnname carglist",
180616
+ /* 363 */ "columnlist ::= columnname carglist",
180617
+ /* 364 */ "nm ::= ID|INDEXED|JOIN_KW",
180618
+ /* 365 */ "nm ::= STRING",
180619
+ /* 366 */ "typetoken ::= typename",
180620
+ /* 367 */ "typename ::= ID|STRING",
180621
+ /* 368 */ "signed ::= plus_num",
180622
+ /* 369 */ "signed ::= minus_num",
180623
+ /* 370 */ "carglist ::= carglist ccons",
180624
+ /* 371 */ "carglist ::=",
180625
+ /* 372 */ "ccons ::= NULL onconf",
180626
+ /* 373 */ "ccons ::= GENERATED ALWAYS AS generated",
180627
+ /* 374 */ "ccons ::= AS generated",
180628
+ /* 375 */ "conslist_opt ::= COMMA conslist",
180629
+ /* 376 */ "conslist ::= conslist tconscomma tcons",
180630
+ /* 377 */ "conslist ::= tcons",
180631
+ /* 378 */ "tconscomma ::=",
180632
+ /* 379 */ "defer_subclause_opt ::= defer_subclause",
180633
+ /* 380 */ "resolvetype ::= raisetype",
180634
+ /* 381 */ "selectnowith ::= oneselect",
180635
+ /* 382 */ "oneselect ::= values",
180636
+ /* 383 */ "sclp ::= selcollist COMMA",
180637
+ /* 384 */ "as ::= ID|STRING",
180638
+ /* 385 */ "indexed_opt ::= indexed_by",
180639
+ /* 386 */ "returning ::=",
180640
+ /* 387 */ "expr ::= term",
180641
+ /* 388 */ "likeop ::= LIKE_KW|MATCH",
180642
+ /* 389 */ "case_operand ::= expr",
180643
+ /* 390 */ "exprlist ::= nexprlist",
180644
+ /* 391 */ "nmnum ::= plus_num",
180645
+ /* 392 */ "nmnum ::= nm",
180646
+ /* 393 */ "nmnum ::= ON",
180647
+ /* 394 */ "nmnum ::= DELETE",
180648
+ /* 395 */ "nmnum ::= DEFAULT",
180649
+ /* 396 */ "plus_num ::= INTEGER|FLOAT",
180650
+ /* 397 */ "foreach_clause ::=",
180651
+ /* 398 */ "foreach_clause ::= FOR EACH ROW",
180652
+ /* 399 */ "trnm ::= nm",
180653
+ /* 400 */ "tridxby ::=",
180654
+ /* 401 */ "database_kw_opt ::= DATABASE",
180655
+ /* 402 */ "database_kw_opt ::=",
180656
+ /* 403 */ "kwcolumn_opt ::=",
180657
+ /* 404 */ "kwcolumn_opt ::= COLUMNKW",
180658
+ /* 405 */ "vtabarglist ::= vtabarg",
180659
+ /* 406 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
180660
+ /* 407 */ "vtabarg ::= vtabarg vtabargtoken",
180661
+ /* 408 */ "anylist ::=",
180662
+ /* 409 */ "anylist ::= anylist LP anylist RP",
180663
+ /* 410 */ "anylist ::= anylist ANY",
180664
+ /* 411 */ "with ::=",
180665
+ /* 412 */ "windowdefn_list ::= windowdefn",
180666
+ /* 413 */ "window ::= frame_opt",
179901180667
};
179902180668
#endif /* NDEBUG */
179903180669
179904180670
179905180671
#if YYGROWABLESTACK
@@ -180717,125 +181483,130 @@
180717181483
192, /* (289) cmd ::= REINDEX */
180718181484
192, /* (290) cmd ::= REINDEX nm dbnm */
180719181485
192, /* (291) cmd ::= ANALYZE */
180720181486
192, /* (292) cmd ::= ANALYZE nm dbnm */
180721181487
192, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
180722
- 192, /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
180723
- 192, /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
180724
- 299, /* (296) add_column_fullname ::= fullname */
181488
+ 192, /* (294) cmd ::= alter_add carglist */
181489
+ 299, /* (295) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
181490
+ 192, /* (296) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
180725181491
192, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
180726
- 192, /* (298) cmd ::= create_vtab */
180727
- 192, /* (299) cmd ::= create_vtab LP vtabarglist RP */
180728
- 301, /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
180729
- 303, /* (301) vtabarg ::= */
180730
- 304, /* (302) vtabargtoken ::= ANY */
180731
- 304, /* (303) vtabargtoken ::= lp anylist RP */
180732
- 305, /* (304) lp ::= LP */
180733
- 269, /* (305) with ::= WITH wqlist */
180734
- 269, /* (306) with ::= WITH RECURSIVE wqlist */
180735
- 308, /* (307) wqas ::= AS */
180736
- 308, /* (308) wqas ::= AS MATERIALIZED */
180737
- 308, /* (309) wqas ::= AS NOT MATERIALIZED */
180738
- 307, /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
180739
- 309, /* (311) withnm ::= nm */
180740
- 243, /* (312) wqlist ::= wqitem */
180741
- 243, /* (313) wqlist ::= wqlist COMMA wqitem */
180742
- 310, /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
180743
- 311, /* (315) windowdefn ::= nm AS LP window RP */
180744
- 312, /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
180745
- 312, /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
180746
- 312, /* (318) window ::= ORDER BY sortlist frame_opt */
180747
- 312, /* (319) window ::= nm ORDER BY sortlist frame_opt */
180748
- 312, /* (320) window ::= nm frame_opt */
180749
- 313, /* (321) frame_opt ::= */
180750
- 313, /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
180751
- 313, /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
180752
- 317, /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
180753
- 319, /* (325) frame_bound_s ::= frame_bound */
180754
- 319, /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
180755
- 320, /* (327) frame_bound_e ::= frame_bound */
180756
- 320, /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
180757
- 318, /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
180758
- 318, /* (330) frame_bound ::= CURRENT ROW */
180759
- 321, /* (331) frame_exclude_opt ::= */
180760
- 321, /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
180761
- 322, /* (333) frame_exclude ::= NO OTHERS */
180762
- 322, /* (334) frame_exclude ::= CURRENT ROW */
180763
- 322, /* (335) frame_exclude ::= GROUP|TIES */
180764
- 253, /* (336) window_clause ::= WINDOW windowdefn_list */
180765
- 276, /* (337) filter_over ::= filter_clause over_clause */
180766
- 276, /* (338) filter_over ::= over_clause */
180767
- 276, /* (339) filter_over ::= filter_clause */
180768
- 316, /* (340) over_clause ::= OVER LP window RP */
180769
- 316, /* (341) over_clause ::= OVER nm */
180770
- 315, /* (342) filter_clause ::= FILTER LP WHERE expr RP */
180771
- 218, /* (343) term ::= QNUMBER */
180772
- 187, /* (344) input ::= cmdlist */
180773
- 188, /* (345) cmdlist ::= cmdlist ecmd */
180774
- 188, /* (346) cmdlist ::= ecmd */
180775
- 189, /* (347) ecmd ::= SEMI */
180776
- 189, /* (348) ecmd ::= cmdx SEMI */
180777
- 189, /* (349) ecmd ::= explain cmdx SEMI */
180778
- 194, /* (350) trans_opt ::= */
180779
- 194, /* (351) trans_opt ::= TRANSACTION */
180780
- 194, /* (352) trans_opt ::= TRANSACTION nm */
180781
- 196, /* (353) savepoint_opt ::= SAVEPOINT */
180782
- 196, /* (354) savepoint_opt ::= */
180783
- 192, /* (355) cmd ::= create_table create_table_args */
180784
- 205, /* (356) table_option_set ::= table_option */
180785
- 203, /* (357) columnlist ::= columnlist COMMA columnname carglist */
180786
- 203, /* (358) columnlist ::= columnname carglist */
180787
- 195, /* (359) nm ::= ID|INDEXED|JOIN_KW */
180788
- 195, /* (360) nm ::= STRING */
180789
- 210, /* (361) typetoken ::= typename */
180790
- 211, /* (362) typename ::= ID|STRING */
180791
- 212, /* (363) signed ::= plus_num */
180792
- 212, /* (364) signed ::= minus_num */
180793
- 209, /* (365) carglist ::= carglist ccons */
180794
- 209, /* (366) carglist ::= */
180795
- 217, /* (367) ccons ::= NULL onconf */
180796
- 217, /* (368) ccons ::= GENERATED ALWAYS AS generated */
180797
- 217, /* (369) ccons ::= AS generated */
180798
- 204, /* (370) conslist_opt ::= COMMA conslist */
180799
- 230, /* (371) conslist ::= conslist tconscomma tcons */
180800
- 230, /* (372) conslist ::= tcons */
180801
- 231, /* (373) tconscomma ::= */
180802
- 235, /* (374) defer_subclause_opt ::= defer_subclause */
180803
- 237, /* (375) resolvetype ::= raisetype */
180804
- 241, /* (376) selectnowith ::= oneselect */
180805
- 242, /* (377) oneselect ::= values */
180806
- 257, /* (378) sclp ::= selcollist COMMA */
180807
- 258, /* (379) as ::= ID|STRING */
180808
- 267, /* (380) indexed_opt ::= indexed_by */
180809
- 275, /* (381) returning ::= */
180810
- 219, /* (382) expr ::= term */
180811
- 277, /* (383) likeop ::= LIKE_KW|MATCH */
180812
- 281, /* (384) case_operand ::= expr */
180813
- 264, /* (385) exprlist ::= nexprlist */
180814
- 287, /* (386) nmnum ::= plus_num */
180815
- 287, /* (387) nmnum ::= nm */
180816
- 287, /* (388) nmnum ::= ON */
180817
- 287, /* (389) nmnum ::= DELETE */
180818
- 287, /* (390) nmnum ::= DEFAULT */
180819
- 213, /* (391) plus_num ::= INTEGER|FLOAT */
180820
- 292, /* (392) foreach_clause ::= */
180821
- 292, /* (393) foreach_clause ::= FOR EACH ROW */
180822
- 295, /* (394) trnm ::= nm */
180823
- 296, /* (395) tridxby ::= */
180824
- 297, /* (396) database_kw_opt ::= DATABASE */
180825
- 297, /* (397) database_kw_opt ::= */
180826
- 300, /* (398) kwcolumn_opt ::= */
180827
- 300, /* (399) kwcolumn_opt ::= COLUMNKW */
180828
- 302, /* (400) vtabarglist ::= vtabarg */
180829
- 302, /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
180830
- 303, /* (402) vtabarg ::= vtabarg vtabargtoken */
180831
- 306, /* (403) anylist ::= */
180832
- 306, /* (404) anylist ::= anylist LP anylist RP */
180833
- 306, /* (405) anylist ::= anylist ANY */
180834
- 269, /* (406) with ::= */
180835
- 310, /* (407) windowdefn_list ::= windowdefn */
180836
- 312, /* (408) window ::= frame_opt */
181492
+ 192, /* (298) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
181493
+ 192, /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
181494
+ 192, /* (300) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
181495
+ 192, /* (301) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
181496
+ 192, /* (302) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
181497
+ 192, /* (303) cmd ::= create_vtab */
181498
+ 192, /* (304) cmd ::= create_vtab LP vtabarglist RP */
181499
+ 301, /* (305) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181500
+ 303, /* (306) vtabarg ::= */
181501
+ 304, /* (307) vtabargtoken ::= ANY */
181502
+ 304, /* (308) vtabargtoken ::= lp anylist RP */
181503
+ 305, /* (309) lp ::= LP */
181504
+ 269, /* (310) with ::= WITH wqlist */
181505
+ 269, /* (311) with ::= WITH RECURSIVE wqlist */
181506
+ 308, /* (312) wqas ::= AS */
181507
+ 308, /* (313) wqas ::= AS MATERIALIZED */
181508
+ 308, /* (314) wqas ::= AS NOT MATERIALIZED */
181509
+ 307, /* (315) wqitem ::= withnm eidlist_opt wqas LP select RP */
181510
+ 309, /* (316) withnm ::= nm */
181511
+ 243, /* (317) wqlist ::= wqitem */
181512
+ 243, /* (318) wqlist ::= wqlist COMMA wqitem */
181513
+ 310, /* (319) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181514
+ 311, /* (320) windowdefn ::= nm AS LP window RP */
181515
+ 312, /* (321) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181516
+ 312, /* (322) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181517
+ 312, /* (323) window ::= ORDER BY sortlist frame_opt */
181518
+ 312, /* (324) window ::= nm ORDER BY sortlist frame_opt */
181519
+ 312, /* (325) window ::= nm frame_opt */
181520
+ 313, /* (326) frame_opt ::= */
181521
+ 313, /* (327) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181522
+ 313, /* (328) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181523
+ 317, /* (329) range_or_rows ::= RANGE|ROWS|GROUPS */
181524
+ 319, /* (330) frame_bound_s ::= frame_bound */
181525
+ 319, /* (331) frame_bound_s ::= UNBOUNDED PRECEDING */
181526
+ 320, /* (332) frame_bound_e ::= frame_bound */
181527
+ 320, /* (333) frame_bound_e ::= UNBOUNDED FOLLOWING */
181528
+ 318, /* (334) frame_bound ::= expr PRECEDING|FOLLOWING */
181529
+ 318, /* (335) frame_bound ::= CURRENT ROW */
181530
+ 321, /* (336) frame_exclude_opt ::= */
181531
+ 321, /* (337) frame_exclude_opt ::= EXCLUDE frame_exclude */
181532
+ 322, /* (338) frame_exclude ::= NO OTHERS */
181533
+ 322, /* (339) frame_exclude ::= CURRENT ROW */
181534
+ 322, /* (340) frame_exclude ::= GROUP|TIES */
181535
+ 253, /* (341) window_clause ::= WINDOW windowdefn_list */
181536
+ 276, /* (342) filter_over ::= filter_clause over_clause */
181537
+ 276, /* (343) filter_over ::= over_clause */
181538
+ 276, /* (344) filter_over ::= filter_clause */
181539
+ 316, /* (345) over_clause ::= OVER LP window RP */
181540
+ 316, /* (346) over_clause ::= OVER nm */
181541
+ 315, /* (347) filter_clause ::= FILTER LP WHERE expr RP */
181542
+ 218, /* (348) term ::= QNUMBER */
181543
+ 187, /* (349) input ::= cmdlist */
181544
+ 188, /* (350) cmdlist ::= cmdlist ecmd */
181545
+ 188, /* (351) cmdlist ::= ecmd */
181546
+ 189, /* (352) ecmd ::= SEMI */
181547
+ 189, /* (353) ecmd ::= cmdx SEMI */
181548
+ 189, /* (354) ecmd ::= explain cmdx SEMI */
181549
+ 194, /* (355) trans_opt ::= */
181550
+ 194, /* (356) trans_opt ::= TRANSACTION */
181551
+ 194, /* (357) trans_opt ::= TRANSACTION nm */
181552
+ 196, /* (358) savepoint_opt ::= SAVEPOINT */
181553
+ 196, /* (359) savepoint_opt ::= */
181554
+ 192, /* (360) cmd ::= create_table create_table_args */
181555
+ 205, /* (361) table_option_set ::= table_option */
181556
+ 203, /* (362) columnlist ::= columnlist COMMA columnname carglist */
181557
+ 203, /* (363) columnlist ::= columnname carglist */
181558
+ 195, /* (364) nm ::= ID|INDEXED|JOIN_KW */
181559
+ 195, /* (365) nm ::= STRING */
181560
+ 210, /* (366) typetoken ::= typename */
181561
+ 211, /* (367) typename ::= ID|STRING */
181562
+ 212, /* (368) signed ::= plus_num */
181563
+ 212, /* (369) signed ::= minus_num */
181564
+ 209, /* (370) carglist ::= carglist ccons */
181565
+ 209, /* (371) carglist ::= */
181566
+ 217, /* (372) ccons ::= NULL onconf */
181567
+ 217, /* (373) ccons ::= GENERATED ALWAYS AS generated */
181568
+ 217, /* (374) ccons ::= AS generated */
181569
+ 204, /* (375) conslist_opt ::= COMMA conslist */
181570
+ 230, /* (376) conslist ::= conslist tconscomma tcons */
181571
+ 230, /* (377) conslist ::= tcons */
181572
+ 231, /* (378) tconscomma ::= */
181573
+ 235, /* (379) defer_subclause_opt ::= defer_subclause */
181574
+ 237, /* (380) resolvetype ::= raisetype */
181575
+ 241, /* (381) selectnowith ::= oneselect */
181576
+ 242, /* (382) oneselect ::= values */
181577
+ 257, /* (383) sclp ::= selcollist COMMA */
181578
+ 258, /* (384) as ::= ID|STRING */
181579
+ 267, /* (385) indexed_opt ::= indexed_by */
181580
+ 275, /* (386) returning ::= */
181581
+ 219, /* (387) expr ::= term */
181582
+ 277, /* (388) likeop ::= LIKE_KW|MATCH */
181583
+ 281, /* (389) case_operand ::= expr */
181584
+ 264, /* (390) exprlist ::= nexprlist */
181585
+ 287, /* (391) nmnum ::= plus_num */
181586
+ 287, /* (392) nmnum ::= nm */
181587
+ 287, /* (393) nmnum ::= ON */
181588
+ 287, /* (394) nmnum ::= DELETE */
181589
+ 287, /* (395) nmnum ::= DEFAULT */
181590
+ 213, /* (396) plus_num ::= INTEGER|FLOAT */
181591
+ 292, /* (397) foreach_clause ::= */
181592
+ 292, /* (398) foreach_clause ::= FOR EACH ROW */
181593
+ 295, /* (399) trnm ::= nm */
181594
+ 296, /* (400) tridxby ::= */
181595
+ 297, /* (401) database_kw_opt ::= DATABASE */
181596
+ 297, /* (402) database_kw_opt ::= */
181597
+ 300, /* (403) kwcolumn_opt ::= */
181598
+ 300, /* (404) kwcolumn_opt ::= COLUMNKW */
181599
+ 302, /* (405) vtabarglist ::= vtabarg */
181600
+ 302, /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */
181601
+ 303, /* (407) vtabarg ::= vtabarg vtabargtoken */
181602
+ 306, /* (408) anylist ::= */
181603
+ 306, /* (409) anylist ::= anylist LP anylist RP */
181604
+ 306, /* (410) anylist ::= anylist ANY */
181605
+ 269, /* (411) with ::= */
181606
+ 310, /* (412) windowdefn_list ::= windowdefn */
181607
+ 312, /* (413) window ::= frame_opt */
180837181608
};
180838181609
180839181610
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
180840181611
** of symbols on the right-hand side of that rule. */
180841181612
static const signed char yyRuleInfoNRhs[] = {
@@ -181131,125 +181902,130 @@
181131181902
-1, /* (289) cmd ::= REINDEX */
181132181903
-3, /* (290) cmd ::= REINDEX nm dbnm */
181133181904
-1, /* (291) cmd ::= ANALYZE */
181134181905
-3, /* (292) cmd ::= ANALYZE nm dbnm */
181135181906
-6, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
181136
- -7, /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
181137
- -6, /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
181138
- -1, /* (296) add_column_fullname ::= fullname */
181907
+ -2, /* (294) cmd ::= alter_add carglist */
181908
+ -7, /* (295) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
181909
+ -6, /* (296) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
181139181910
-8, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
181140
- -1, /* (298) cmd ::= create_vtab */
181141
- -4, /* (299) cmd ::= create_vtab LP vtabarglist RP */
181142
- -8, /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181143
- 0, /* (301) vtabarg ::= */
181144
- -1, /* (302) vtabargtoken ::= ANY */
181145
- -3, /* (303) vtabargtoken ::= lp anylist RP */
181146
- -1, /* (304) lp ::= LP */
181147
- -2, /* (305) with ::= WITH wqlist */
181148
- -3, /* (306) with ::= WITH RECURSIVE wqlist */
181149
- -1, /* (307) wqas ::= AS */
181150
- -2, /* (308) wqas ::= AS MATERIALIZED */
181151
- -3, /* (309) wqas ::= AS NOT MATERIALIZED */
181152
- -6, /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
181153
- -1, /* (311) withnm ::= nm */
181154
- -1, /* (312) wqlist ::= wqitem */
181155
- -3, /* (313) wqlist ::= wqlist COMMA wqitem */
181156
- -3, /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181157
- -5, /* (315) windowdefn ::= nm AS LP window RP */
181158
- -5, /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181159
- -6, /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181160
- -4, /* (318) window ::= ORDER BY sortlist frame_opt */
181161
- -5, /* (319) window ::= nm ORDER BY sortlist frame_opt */
181162
- -2, /* (320) window ::= nm frame_opt */
181163
- 0, /* (321) frame_opt ::= */
181164
- -3, /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181165
- -6, /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181166
- -1, /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
181167
- -1, /* (325) frame_bound_s ::= frame_bound */
181168
- -2, /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
181169
- -1, /* (327) frame_bound_e ::= frame_bound */
181170
- -2, /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
181171
- -2, /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
181172
- -2, /* (330) frame_bound ::= CURRENT ROW */
181173
- 0, /* (331) frame_exclude_opt ::= */
181174
- -2, /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
181175
- -2, /* (333) frame_exclude ::= NO OTHERS */
181176
- -2, /* (334) frame_exclude ::= CURRENT ROW */
181177
- -1, /* (335) frame_exclude ::= GROUP|TIES */
181178
- -2, /* (336) window_clause ::= WINDOW windowdefn_list */
181179
- -2, /* (337) filter_over ::= filter_clause over_clause */
181180
- -1, /* (338) filter_over ::= over_clause */
181181
- -1, /* (339) filter_over ::= filter_clause */
181182
- -4, /* (340) over_clause ::= OVER LP window RP */
181183
- -2, /* (341) over_clause ::= OVER nm */
181184
- -5, /* (342) filter_clause ::= FILTER LP WHERE expr RP */
181185
- -1, /* (343) term ::= QNUMBER */
181186
- -1, /* (344) input ::= cmdlist */
181187
- -2, /* (345) cmdlist ::= cmdlist ecmd */
181188
- -1, /* (346) cmdlist ::= ecmd */
181189
- -1, /* (347) ecmd ::= SEMI */
181190
- -2, /* (348) ecmd ::= cmdx SEMI */
181191
- -3, /* (349) ecmd ::= explain cmdx SEMI */
181192
- 0, /* (350) trans_opt ::= */
181193
- -1, /* (351) trans_opt ::= TRANSACTION */
181194
- -2, /* (352) trans_opt ::= TRANSACTION nm */
181195
- -1, /* (353) savepoint_opt ::= SAVEPOINT */
181196
- 0, /* (354) savepoint_opt ::= */
181197
- -2, /* (355) cmd ::= create_table create_table_args */
181198
- -1, /* (356) table_option_set ::= table_option */
181199
- -4, /* (357) columnlist ::= columnlist COMMA columnname carglist */
181200
- -2, /* (358) columnlist ::= columnname carglist */
181201
- -1, /* (359) nm ::= ID|INDEXED|JOIN_KW */
181202
- -1, /* (360) nm ::= STRING */
181203
- -1, /* (361) typetoken ::= typename */
181204
- -1, /* (362) typename ::= ID|STRING */
181205
- -1, /* (363) signed ::= plus_num */
181206
- -1, /* (364) signed ::= minus_num */
181207
- -2, /* (365) carglist ::= carglist ccons */
181208
- 0, /* (366) carglist ::= */
181209
- -2, /* (367) ccons ::= NULL onconf */
181210
- -4, /* (368) ccons ::= GENERATED ALWAYS AS generated */
181211
- -2, /* (369) ccons ::= AS generated */
181212
- -2, /* (370) conslist_opt ::= COMMA conslist */
181213
- -3, /* (371) conslist ::= conslist tconscomma tcons */
181214
- -1, /* (372) conslist ::= tcons */
181215
- 0, /* (373) tconscomma ::= */
181216
- -1, /* (374) defer_subclause_opt ::= defer_subclause */
181217
- -1, /* (375) resolvetype ::= raisetype */
181218
- -1, /* (376) selectnowith ::= oneselect */
181219
- -1, /* (377) oneselect ::= values */
181220
- -2, /* (378) sclp ::= selcollist COMMA */
181221
- -1, /* (379) as ::= ID|STRING */
181222
- -1, /* (380) indexed_opt ::= indexed_by */
181223
- 0, /* (381) returning ::= */
181224
- -1, /* (382) expr ::= term */
181225
- -1, /* (383) likeop ::= LIKE_KW|MATCH */
181226
- -1, /* (384) case_operand ::= expr */
181227
- -1, /* (385) exprlist ::= nexprlist */
181228
- -1, /* (386) nmnum ::= plus_num */
181229
- -1, /* (387) nmnum ::= nm */
181230
- -1, /* (388) nmnum ::= ON */
181231
- -1, /* (389) nmnum ::= DELETE */
181232
- -1, /* (390) nmnum ::= DEFAULT */
181233
- -1, /* (391) plus_num ::= INTEGER|FLOAT */
181234
- 0, /* (392) foreach_clause ::= */
181235
- -3, /* (393) foreach_clause ::= FOR EACH ROW */
181236
- -1, /* (394) trnm ::= nm */
181237
- 0, /* (395) tridxby ::= */
181238
- -1, /* (396) database_kw_opt ::= DATABASE */
181239
- 0, /* (397) database_kw_opt ::= */
181240
- 0, /* (398) kwcolumn_opt ::= */
181241
- -1, /* (399) kwcolumn_opt ::= COLUMNKW */
181242
- -1, /* (400) vtabarglist ::= vtabarg */
181243
- -3, /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
181244
- -2, /* (402) vtabarg ::= vtabarg vtabargtoken */
181245
- 0, /* (403) anylist ::= */
181246
- -4, /* (404) anylist ::= anylist LP anylist RP */
181247
- -2, /* (405) anylist ::= anylist ANY */
181248
- 0, /* (406) with ::= */
181249
- -1, /* (407) windowdefn_list ::= windowdefn */
181250
- -1, /* (408) window ::= frame_opt */
181911
+ -6, /* (298) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
181912
+ -9, /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
181913
+ -10, /* (300) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
181914
+ -11, /* (301) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
181915
+ -9, /* (302) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
181916
+ -1, /* (303) cmd ::= create_vtab */
181917
+ -4, /* (304) cmd ::= create_vtab LP vtabarglist RP */
181918
+ -8, /* (305) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181919
+ 0, /* (306) vtabarg ::= */
181920
+ -1, /* (307) vtabargtoken ::= ANY */
181921
+ -3, /* (308) vtabargtoken ::= lp anylist RP */
181922
+ -1, /* (309) lp ::= LP */
181923
+ -2, /* (310) with ::= WITH wqlist */
181924
+ -3, /* (311) with ::= WITH RECURSIVE wqlist */
181925
+ -1, /* (312) wqas ::= AS */
181926
+ -2, /* (313) wqas ::= AS MATERIALIZED */
181927
+ -3, /* (314) wqas ::= AS NOT MATERIALIZED */
181928
+ -6, /* (315) wqitem ::= withnm eidlist_opt wqas LP select RP */
181929
+ -1, /* (316) withnm ::= nm */
181930
+ -1, /* (317) wqlist ::= wqitem */
181931
+ -3, /* (318) wqlist ::= wqlist COMMA wqitem */
181932
+ -3, /* (319) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181933
+ -5, /* (320) windowdefn ::= nm AS LP window RP */
181934
+ -5, /* (321) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181935
+ -6, /* (322) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181936
+ -4, /* (323) window ::= ORDER BY sortlist frame_opt */
181937
+ -5, /* (324) window ::= nm ORDER BY sortlist frame_opt */
181938
+ -2, /* (325) window ::= nm frame_opt */
181939
+ 0, /* (326) frame_opt ::= */
181940
+ -3, /* (327) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181941
+ -6, /* (328) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181942
+ -1, /* (329) range_or_rows ::= RANGE|ROWS|GROUPS */
181943
+ -1, /* (330) frame_bound_s ::= frame_bound */
181944
+ -2, /* (331) frame_bound_s ::= UNBOUNDED PRECEDING */
181945
+ -1, /* (332) frame_bound_e ::= frame_bound */
181946
+ -2, /* (333) frame_bound_e ::= UNBOUNDED FOLLOWING */
181947
+ -2, /* (334) frame_bound ::= expr PRECEDING|FOLLOWING */
181948
+ -2, /* (335) frame_bound ::= CURRENT ROW */
181949
+ 0, /* (336) frame_exclude_opt ::= */
181950
+ -2, /* (337) frame_exclude_opt ::= EXCLUDE frame_exclude */
181951
+ -2, /* (338) frame_exclude ::= NO OTHERS */
181952
+ -2, /* (339) frame_exclude ::= CURRENT ROW */
181953
+ -1, /* (340) frame_exclude ::= GROUP|TIES */
181954
+ -2, /* (341) window_clause ::= WINDOW windowdefn_list */
181955
+ -2, /* (342) filter_over ::= filter_clause over_clause */
181956
+ -1, /* (343) filter_over ::= over_clause */
181957
+ -1, /* (344) filter_over ::= filter_clause */
181958
+ -4, /* (345) over_clause ::= OVER LP window RP */
181959
+ -2, /* (346) over_clause ::= OVER nm */
181960
+ -5, /* (347) filter_clause ::= FILTER LP WHERE expr RP */
181961
+ -1, /* (348) term ::= QNUMBER */
181962
+ -1, /* (349) input ::= cmdlist */
181963
+ -2, /* (350) cmdlist ::= cmdlist ecmd */
181964
+ -1, /* (351) cmdlist ::= ecmd */
181965
+ -1, /* (352) ecmd ::= SEMI */
181966
+ -2, /* (353) ecmd ::= cmdx SEMI */
181967
+ -3, /* (354) ecmd ::= explain cmdx SEMI */
181968
+ 0, /* (355) trans_opt ::= */
181969
+ -1, /* (356) trans_opt ::= TRANSACTION */
181970
+ -2, /* (357) trans_opt ::= TRANSACTION nm */
181971
+ -1, /* (358) savepoint_opt ::= SAVEPOINT */
181972
+ 0, /* (359) savepoint_opt ::= */
181973
+ -2, /* (360) cmd ::= create_table create_table_args */
181974
+ -1, /* (361) table_option_set ::= table_option */
181975
+ -4, /* (362) columnlist ::= columnlist COMMA columnname carglist */
181976
+ -2, /* (363) columnlist ::= columnname carglist */
181977
+ -1, /* (364) nm ::= ID|INDEXED|JOIN_KW */
181978
+ -1, /* (365) nm ::= STRING */
181979
+ -1, /* (366) typetoken ::= typename */
181980
+ -1, /* (367) typename ::= ID|STRING */
181981
+ -1, /* (368) signed ::= plus_num */
181982
+ -1, /* (369) signed ::= minus_num */
181983
+ -2, /* (370) carglist ::= carglist ccons */
181984
+ 0, /* (371) carglist ::= */
181985
+ -2, /* (372) ccons ::= NULL onconf */
181986
+ -4, /* (373) ccons ::= GENERATED ALWAYS AS generated */
181987
+ -2, /* (374) ccons ::= AS generated */
181988
+ -2, /* (375) conslist_opt ::= COMMA conslist */
181989
+ -3, /* (376) conslist ::= conslist tconscomma tcons */
181990
+ -1, /* (377) conslist ::= tcons */
181991
+ 0, /* (378) tconscomma ::= */
181992
+ -1, /* (379) defer_subclause_opt ::= defer_subclause */
181993
+ -1, /* (380) resolvetype ::= raisetype */
181994
+ -1, /* (381) selectnowith ::= oneselect */
181995
+ -1, /* (382) oneselect ::= values */
181996
+ -2, /* (383) sclp ::= selcollist COMMA */
181997
+ -1, /* (384) as ::= ID|STRING */
181998
+ -1, /* (385) indexed_opt ::= indexed_by */
181999
+ 0, /* (386) returning ::= */
182000
+ -1, /* (387) expr ::= term */
182001
+ -1, /* (388) likeop ::= LIKE_KW|MATCH */
182002
+ -1, /* (389) case_operand ::= expr */
182003
+ -1, /* (390) exprlist ::= nexprlist */
182004
+ -1, /* (391) nmnum ::= plus_num */
182005
+ -1, /* (392) nmnum ::= nm */
182006
+ -1, /* (393) nmnum ::= ON */
182007
+ -1, /* (394) nmnum ::= DELETE */
182008
+ -1, /* (395) nmnum ::= DEFAULT */
182009
+ -1, /* (396) plus_num ::= INTEGER|FLOAT */
182010
+ 0, /* (397) foreach_clause ::= */
182011
+ -3, /* (398) foreach_clause ::= FOR EACH ROW */
182012
+ -1, /* (399) trnm ::= nm */
182013
+ 0, /* (400) tridxby ::= */
182014
+ -1, /* (401) database_kw_opt ::= DATABASE */
182015
+ 0, /* (402) database_kw_opt ::= */
182016
+ 0, /* (403) kwcolumn_opt ::= */
182017
+ -1, /* (404) kwcolumn_opt ::= COLUMNKW */
182018
+ -1, /* (405) vtabarglist ::= vtabarg */
182019
+ -3, /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */
182020
+ -2, /* (407) vtabarg ::= vtabarg vtabargtoken */
182021
+ 0, /* (408) anylist ::= */
182022
+ -4, /* (409) anylist ::= anylist LP anylist RP */
182023
+ -2, /* (410) anylist ::= anylist ANY */
182024
+ 0, /* (411) with ::= */
182025
+ -1, /* (412) windowdefn_list ::= windowdefn */
182026
+ -1, /* (413) window ::= frame_opt */
181251182027
};
181252182028
181253182029
static void yy_accept(yyParser*); /* Forward Declaration */
181254182030
181255182031
/*
@@ -181305,11 +182081,11 @@
181305182081
{yymsp[1].minor.yy502 = TK_DEFERRED;}
181306182082
break;
181307182083
case 5: /* transtype ::= DEFERRED */
181308182084
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
181309182085
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
181310
- case 324: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==324);
182086
+ case 329: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==329);
181311182087
{yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/}
181312182088
break;
181313182089
case 8: /* cmd ::= COMMIT|END trans_opt */
181314182090
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
181315182091
{sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -182576,177 +183352,206 @@
182576183352
case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
182577183353
{
182578183354
sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy563,&yymsp[0].minor.yy0);
182579183355
}
182580183356
break;
182581
- case 294: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
183357
+ case 294: /* cmd ::= alter_add carglist */
182582183358
{
182583183359
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
182584183360
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
182585183361
}
182586183362
break;
182587
- case 295: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
182588
-{
182589
- sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
182590
-}
182591
- break;
182592
- case 296: /* add_column_fullname ::= fullname */
183363
+ case 295: /* alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
182593183364
{
182594183365
disableLookaside(pParse);
182595
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy563);
183366
+ sqlite3AlterBeginAddColumn(pParse, yymsp[-4].minor.yy563);
183367
+ sqlite3AddColumn(pParse, yymsp[-1].minor.yy0, yymsp[0].minor.yy0);
183368
+ yymsp[-6].minor.yy0 = yymsp[-1].minor.yy0;
183369
+}
183370
+ break;
183371
+ case 296: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
183372
+{
183373
+ sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
182596183374
}
182597183375
break;
182598183376
case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
182599183377
{
182600183378
sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy563, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
182601183379
}
182602183380
break;
182603
- case 298: /* cmd ::= create_vtab */
183381
+ case 298: /* cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
183382
+{
183383
+ sqlite3AlterDropConstraint(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0, 0);
183384
+}
183385
+ break;
183386
+ case 299: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
183387
+{
183388
+ sqlite3AlterDropConstraint(pParse, yymsp[-6].minor.yy563, 0, &yymsp[-3].minor.yy0);
183389
+}
183390
+ break;
183391
+ case 300: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
183392
+{
183393
+ sqlite3AlterSetNotNull(pParse, yymsp[-7].minor.yy563, &yymsp[-4].minor.yy0, &yymsp[-2].minor.yy0);
183394
+}
183395
+ break;
183396
+ case 301: /* cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
183397
+{
183398
+ sqlite3AlterAddConstraint(pParse, yymsp[-8].minor.yy563, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
183399
+}
183400
+ yy_destructor(yypParser,219,&yymsp[-2].minor);
183401
+ break;
183402
+ case 302: /* cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
183403
+{
183404
+ sqlite3AlterAddConstraint(pParse, yymsp[-6].minor.yy563, &yymsp[-4].minor.yy0, 0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
183405
+}
183406
+ yy_destructor(yypParser,219,&yymsp[-2].minor);
183407
+ break;
183408
+ case 303: /* cmd ::= create_vtab */
182604183409
{sqlite3VtabFinishParse(pParse,0);}
182605183410
break;
182606
- case 299: /* cmd ::= create_vtab LP vtabarglist RP */
183411
+ case 304: /* cmd ::= create_vtab LP vtabarglist RP */
182607183412
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
182608183413
break;
182609
- case 300: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
183414
+ case 305: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
182610183415
{
182611183416
sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502);
182612183417
}
182613183418
break;
182614
- case 301: /* vtabarg ::= */
183419
+ case 306: /* vtabarg ::= */
182615183420
{sqlite3VtabArgInit(pParse);}
182616183421
break;
182617
- case 302: /* vtabargtoken ::= ANY */
182618
- case 303: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==303);
182619
- case 304: /* lp ::= LP */ yytestcase(yyruleno==304);
183422
+ case 307: /* vtabargtoken ::= ANY */
183423
+ case 308: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==308);
183424
+ case 309: /* lp ::= LP */ yytestcase(yyruleno==309);
182620183425
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
182621183426
break;
182622
- case 305: /* with ::= WITH wqlist */
182623
- case 306: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==306);
183427
+ case 310: /* with ::= WITH wqlist */
183428
+ case 311: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==311);
182624183429
{ sqlite3WithPush(pParse, yymsp[0].minor.yy125, 1); }
182625183430
break;
182626
- case 307: /* wqas ::= AS */
183431
+ case 312: /* wqas ::= AS */
182627183432
{yymsp[0].minor.yy444 = M10d_Any;}
182628183433
break;
182629
- case 308: /* wqas ::= AS MATERIALIZED */
183434
+ case 313: /* wqas ::= AS MATERIALIZED */
182630183435
{yymsp[-1].minor.yy444 = M10d_Yes;}
182631183436
break;
182632
- case 309: /* wqas ::= AS NOT MATERIALIZED */
183437
+ case 314: /* wqas ::= AS NOT MATERIALIZED */
182633183438
{yymsp[-2].minor.yy444 = M10d_No;}
182634183439
break;
182635
- case 310: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
183440
+ case 315: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
182636183441
{
182637183442
yymsp[-5].minor.yy361 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy402, yymsp[-1].minor.yy637, yymsp[-3].minor.yy444); /*A-overwrites-X*/
182638183443
}
182639183444
break;
182640
- case 311: /* withnm ::= nm */
183445
+ case 316: /* withnm ::= nm */
182641183446
{pParse->bHasWith = 1;}
182642183447
break;
182643
- case 312: /* wqlist ::= wqitem */
183448
+ case 317: /* wqlist ::= wqitem */
182644183449
{
182645183450
yymsp[0].minor.yy125 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy361); /*A-overwrites-X*/
182646183451
}
182647183452
break;
182648
- case 313: /* wqlist ::= wqlist COMMA wqitem */
183453
+ case 318: /* wqlist ::= wqlist COMMA wqitem */
182649183454
{
182650183455
yymsp[-2].minor.yy125 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy125, yymsp[0].minor.yy361);
182651183456
}
182652183457
break;
182653
- case 314: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
183458
+ case 319: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
182654183459
{
182655183460
assert( yymsp[0].minor.yy483!=0 );
182656183461
sqlite3WindowChain(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy483);
182657183462
yymsp[0].minor.yy483->pNextWin = yymsp[-2].minor.yy483;
182658183463
yylhsminor.yy483 = yymsp[0].minor.yy483;
182659183464
}
182660183465
yymsp[-2].minor.yy483 = yylhsminor.yy483;
182661183466
break;
182662
- case 315: /* windowdefn ::= nm AS LP window RP */
183467
+ case 320: /* windowdefn ::= nm AS LP window RP */
182663183468
{
182664183469
if( ALWAYS(yymsp[-1].minor.yy483) ){
182665183470
yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
182666183471
}
182667183472
yylhsminor.yy483 = yymsp[-1].minor.yy483;
182668183473
}
182669183474
yymsp[-4].minor.yy483 = yylhsminor.yy483;
182670183475
break;
182671
- case 316: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
183476
+ case 321: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
182672183477
{
182673183478
yymsp[-4].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, 0);
182674183479
}
182675183480
break;
182676
- case 317: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
183481
+ case 322: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
182677183482
{
182678183483
yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, &yymsp[-5].minor.yy0);
182679183484
}
182680183485
yymsp[-5].minor.yy483 = yylhsminor.yy483;
182681183486
break;
182682
- case 318: /* window ::= ORDER BY sortlist frame_opt */
183487
+ case 323: /* window ::= ORDER BY sortlist frame_opt */
182683183488
{
182684183489
yymsp[-3].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, 0);
182685183490
}
182686183491
break;
182687
- case 319: /* window ::= nm ORDER BY sortlist frame_opt */
183492
+ case 324: /* window ::= nm ORDER BY sortlist frame_opt */
182688183493
{
182689183494
yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0);
182690183495
}
182691183496
yymsp[-4].minor.yy483 = yylhsminor.yy483;
182692183497
break;
182693
- case 320: /* window ::= nm frame_opt */
183498
+ case 325: /* window ::= nm frame_opt */
182694183499
{
182695183500
yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, 0, &yymsp[-1].minor.yy0);
182696183501
}
182697183502
yymsp[-1].minor.yy483 = yylhsminor.yy483;
182698183503
break;
182699
- case 321: /* frame_opt ::= */
183504
+ case 326: /* frame_opt ::= */
182700183505
{
182701183506
yymsp[1].minor.yy483 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
182702183507
}
182703183508
break;
182704
- case 322: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
183509
+ case 327: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
182705183510
{
182706183511
yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy502, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy444);
182707183512
}
182708183513
yymsp[-2].minor.yy483 = yylhsminor.yy483;
182709183514
break;
182710
- case 323: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
183515
+ case 328: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
182711183516
{
182712183517
yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy502, yymsp[-3].minor.yy205.eType, yymsp[-3].minor.yy205.pExpr, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, yymsp[0].minor.yy444);
182713183518
}
182714183519
yymsp[-5].minor.yy483 = yylhsminor.yy483;
182715183520
break;
182716
- case 325: /* frame_bound_s ::= frame_bound */
182717
- case 327: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==327);
183521
+ case 330: /* frame_bound_s ::= frame_bound */
183522
+ case 332: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==332);
182718183523
{yylhsminor.yy205 = yymsp[0].minor.yy205;}
182719183524
yymsp[0].minor.yy205 = yylhsminor.yy205;
182720183525
break;
182721
- case 326: /* frame_bound_s ::= UNBOUNDED PRECEDING */
182722
- case 328: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==328);
182723
- case 330: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==330);
183526
+ case 331: /* frame_bound_s ::= UNBOUNDED PRECEDING */
183527
+ case 333: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==333);
183528
+ case 335: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==335);
182724183529
{yylhsminor.yy205.eType = yymsp[-1].major; yylhsminor.yy205.pExpr = 0;}
182725183530
yymsp[-1].minor.yy205 = yylhsminor.yy205;
182726183531
break;
182727
- case 329: /* frame_bound ::= expr PRECEDING|FOLLOWING */
183532
+ case 334: /* frame_bound ::= expr PRECEDING|FOLLOWING */
182728183533
{yylhsminor.yy205.eType = yymsp[0].major; yylhsminor.yy205.pExpr = yymsp[-1].minor.yy590;}
182729183534
yymsp[-1].minor.yy205 = yylhsminor.yy205;
182730183535
break;
182731
- case 331: /* frame_exclude_opt ::= */
183536
+ case 336: /* frame_exclude_opt ::= */
182732183537
{yymsp[1].minor.yy444 = 0;}
182733183538
break;
182734
- case 332: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
183539
+ case 337: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
182735183540
{yymsp[-1].minor.yy444 = yymsp[0].minor.yy444;}
182736183541
break;
182737
- case 333: /* frame_exclude ::= NO OTHERS */
182738
- case 334: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==334);
183542
+ case 338: /* frame_exclude ::= NO OTHERS */
183543
+ case 339: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==339);
182739183544
{yymsp[-1].minor.yy444 = yymsp[-1].major; /*A-overwrites-X*/}
182740183545
break;
182741
- case 335: /* frame_exclude ::= GROUP|TIES */
183546
+ case 340: /* frame_exclude ::= GROUP|TIES */
182742183547
{yymsp[0].minor.yy444 = yymsp[0].major; /*A-overwrites-X*/}
182743183548
break;
182744
- case 336: /* window_clause ::= WINDOW windowdefn_list */
183549
+ case 341: /* window_clause ::= WINDOW windowdefn_list */
182745183550
{ yymsp[-1].minor.yy483 = yymsp[0].minor.yy483; }
182746183551
break;
182747
- case 337: /* filter_over ::= filter_clause over_clause */
183552
+ case 342: /* filter_over ::= filter_clause over_clause */
182748183553
{
182749183554
if( yymsp[0].minor.yy483 ){
182750183555
yymsp[0].minor.yy483->pFilter = yymsp[-1].minor.yy590;
182751183556
}else{
182752183557
sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
@@ -182753,17 +183558,17 @@
182753183558
}
182754183559
yylhsminor.yy483 = yymsp[0].minor.yy483;
182755183560
}
182756183561
yymsp[-1].minor.yy483 = yylhsminor.yy483;
182757183562
break;
182758
- case 338: /* filter_over ::= over_clause */
183563
+ case 343: /* filter_over ::= over_clause */
182759183564
{
182760183565
yylhsminor.yy483 = yymsp[0].minor.yy483;
182761183566
}
182762183567
yymsp[0].minor.yy483 = yylhsminor.yy483;
182763183568
break;
182764
- case 339: /* filter_over ::= filter_clause */
183569
+ case 344: /* filter_over ::= filter_clause */
182765183570
{
182766183571
yylhsminor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
182767183572
if( yylhsminor.yy483 ){
182768183573
yylhsminor.yy483->eFrmType = TK_FILTER;
182769183574
yylhsminor.yy483->pFilter = yymsp[0].minor.yy590;
@@ -182771,100 +183576,100 @@
182771183576
sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy590);
182772183577
}
182773183578
}
182774183579
yymsp[0].minor.yy483 = yylhsminor.yy483;
182775183580
break;
182776
- case 340: /* over_clause ::= OVER LP window RP */
183581
+ case 345: /* over_clause ::= OVER LP window RP */
182777183582
{
182778183583
yymsp[-3].minor.yy483 = yymsp[-1].minor.yy483;
182779183584
assert( yymsp[-3].minor.yy483!=0 );
182780183585
}
182781183586
break;
182782
- case 341: /* over_clause ::= OVER nm */
183587
+ case 346: /* over_clause ::= OVER nm */
182783183588
{
182784183589
yymsp[-1].minor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
182785183590
if( yymsp[-1].minor.yy483 ){
182786183591
yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
182787183592
}
182788183593
}
182789183594
break;
182790
- case 342: /* filter_clause ::= FILTER LP WHERE expr RP */
183595
+ case 347: /* filter_clause ::= FILTER LP WHERE expr RP */
182791183596
{ yymsp[-4].minor.yy590 = yymsp[-1].minor.yy590; }
182792183597
break;
182793
- case 343: /* term ::= QNUMBER */
183598
+ case 348: /* term ::= QNUMBER */
182794183599
{
182795183600
yylhsminor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
182796183601
sqlite3DequoteNumber(pParse, yylhsminor.yy590);
182797183602
}
182798183603
yymsp[0].minor.yy590 = yylhsminor.yy590;
182799183604
break;
182800183605
default:
182801
- /* (344) input ::= cmdlist */ yytestcase(yyruleno==344);
182802
- /* (345) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==345);
182803
- /* (346) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=346);
182804
- /* (347) ecmd ::= SEMI */ yytestcase(yyruleno==347);
182805
- /* (348) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==348);
182806
- /* (349) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=349);
182807
- /* (350) trans_opt ::= */ yytestcase(yyruleno==350);
182808
- /* (351) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==351);
182809
- /* (352) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==352);
182810
- /* (353) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==353);
182811
- /* (354) savepoint_opt ::= */ yytestcase(yyruleno==354);
182812
- /* (355) cmd ::= create_table create_table_args */ yytestcase(yyruleno==355);
182813
- /* (356) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=356);
182814
- /* (357) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==357);
182815
- /* (358) columnlist ::= columnname carglist */ yytestcase(yyruleno==358);
182816
- /* (359) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==359);
182817
- /* (360) nm ::= STRING */ yytestcase(yyruleno==360);
182818
- /* (361) typetoken ::= typename */ yytestcase(yyruleno==361);
182819
- /* (362) typename ::= ID|STRING */ yytestcase(yyruleno==362);
182820
- /* (363) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
182821
- /* (364) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=364);
182822
- /* (365) carglist ::= carglist ccons */ yytestcase(yyruleno==365);
182823
- /* (366) carglist ::= */ yytestcase(yyruleno==366);
182824
- /* (367) ccons ::= NULL onconf */ yytestcase(yyruleno==367);
182825
- /* (368) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==368);
182826
- /* (369) ccons ::= AS generated */ yytestcase(yyruleno==369);
182827
- /* (370) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==370);
182828
- /* (371) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==371);
182829
- /* (372) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=372);
182830
- /* (373) tconscomma ::= */ yytestcase(yyruleno==373);
182831
- /* (374) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=374);
182832
- /* (375) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=375);
182833
- /* (376) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=376);
182834
- /* (377) oneselect ::= values */ yytestcase(yyruleno==377);
182835
- /* (378) sclp ::= selcollist COMMA */ yytestcase(yyruleno==378);
182836
- /* (379) as ::= ID|STRING */ yytestcase(yyruleno==379);
182837
- /* (380) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=380);
182838
- /* (381) returning ::= */ yytestcase(yyruleno==381);
182839
- /* (382) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=382);
182840
- /* (383) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==383);
182841
- /* (384) case_operand ::= expr */ yytestcase(yyruleno==384);
182842
- /* (385) exprlist ::= nexprlist */ yytestcase(yyruleno==385);
182843
- /* (386) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=386);
182844
- /* (387) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=387);
182845
- /* (388) nmnum ::= ON */ yytestcase(yyruleno==388);
182846
- /* (389) nmnum ::= DELETE */ yytestcase(yyruleno==389);
182847
- /* (390) nmnum ::= DEFAULT */ yytestcase(yyruleno==390);
182848
- /* (391) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==391);
182849
- /* (392) foreach_clause ::= */ yytestcase(yyruleno==392);
182850
- /* (393) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==393);
182851
- /* (394) trnm ::= nm */ yytestcase(yyruleno==394);
182852
- /* (395) tridxby ::= */ yytestcase(yyruleno==395);
182853
- /* (396) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==396);
182854
- /* (397) database_kw_opt ::= */ yytestcase(yyruleno==397);
182855
- /* (398) kwcolumn_opt ::= */ yytestcase(yyruleno==398);
182856
- /* (399) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==399);
182857
- /* (400) vtabarglist ::= vtabarg */ yytestcase(yyruleno==400);
182858
- /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==401);
182859
- /* (402) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==402);
182860
- /* (403) anylist ::= */ yytestcase(yyruleno==403);
182861
- /* (404) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==404);
182862
- /* (405) anylist ::= anylist ANY */ yytestcase(yyruleno==405);
182863
- /* (406) with ::= */ yytestcase(yyruleno==406);
182864
- /* (407) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=407);
182865
- /* (408) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=408);
183606
+ /* (349) input ::= cmdlist */ yytestcase(yyruleno==349);
183607
+ /* (350) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==350);
183608
+ /* (351) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=351);
183609
+ /* (352) ecmd ::= SEMI */ yytestcase(yyruleno==352);
183610
+ /* (353) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==353);
183611
+ /* (354) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=354);
183612
+ /* (355) trans_opt ::= */ yytestcase(yyruleno==355);
183613
+ /* (356) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==356);
183614
+ /* (357) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==357);
183615
+ /* (358) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==358);
183616
+ /* (359) savepoint_opt ::= */ yytestcase(yyruleno==359);
183617
+ /* (360) cmd ::= create_table create_table_args */ yytestcase(yyruleno==360);
183618
+ /* (361) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=361);
183619
+ /* (362) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==362);
183620
+ /* (363) columnlist ::= columnname carglist */ yytestcase(yyruleno==363);
183621
+ /* (364) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==364);
183622
+ /* (365) nm ::= STRING */ yytestcase(yyruleno==365);
183623
+ /* (366) typetoken ::= typename */ yytestcase(yyruleno==366);
183624
+ /* (367) typename ::= ID|STRING */ yytestcase(yyruleno==367);
183625
+ /* (368) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=368);
183626
+ /* (369) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=369);
183627
+ /* (370) carglist ::= carglist ccons */ yytestcase(yyruleno==370);
183628
+ /* (371) carglist ::= */ yytestcase(yyruleno==371);
183629
+ /* (372) ccons ::= NULL onconf */ yytestcase(yyruleno==372);
183630
+ /* (373) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==373);
183631
+ /* (374) ccons ::= AS generated */ yytestcase(yyruleno==374);
183632
+ /* (375) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==375);
183633
+ /* (376) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==376);
183634
+ /* (377) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=377);
183635
+ /* (378) tconscomma ::= */ yytestcase(yyruleno==378);
183636
+ /* (379) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=379);
183637
+ /* (380) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=380);
183638
+ /* (381) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=381);
183639
+ /* (382) oneselect ::= values */ yytestcase(yyruleno==382);
183640
+ /* (383) sclp ::= selcollist COMMA */ yytestcase(yyruleno==383);
183641
+ /* (384) as ::= ID|STRING */ yytestcase(yyruleno==384);
183642
+ /* (385) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=385);
183643
+ /* (386) returning ::= */ yytestcase(yyruleno==386);
183644
+ /* (387) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=387);
183645
+ /* (388) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==388);
183646
+ /* (389) case_operand ::= expr */ yytestcase(yyruleno==389);
183647
+ /* (390) exprlist ::= nexprlist */ yytestcase(yyruleno==390);
183648
+ /* (391) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=391);
183649
+ /* (392) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=392);
183650
+ /* (393) nmnum ::= ON */ yytestcase(yyruleno==393);
183651
+ /* (394) nmnum ::= DELETE */ yytestcase(yyruleno==394);
183652
+ /* (395) nmnum ::= DEFAULT */ yytestcase(yyruleno==395);
183653
+ /* (396) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==396);
183654
+ /* (397) foreach_clause ::= */ yytestcase(yyruleno==397);
183655
+ /* (398) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==398);
183656
+ /* (399) trnm ::= nm */ yytestcase(yyruleno==399);
183657
+ /* (400) tridxby ::= */ yytestcase(yyruleno==400);
183658
+ /* (401) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==401);
183659
+ /* (402) database_kw_opt ::= */ yytestcase(yyruleno==402);
183660
+ /* (403) kwcolumn_opt ::= */ yytestcase(yyruleno==403);
183661
+ /* (404) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==404);
183662
+ /* (405) vtabarglist ::= vtabarg */ yytestcase(yyruleno==405);
183663
+ /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==406);
183664
+ /* (407) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==407);
183665
+ /* (408) anylist ::= */ yytestcase(yyruleno==408);
183666
+ /* (409) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==409);
183667
+ /* (410) anylist ::= anylist ANY */ yytestcase(yyruleno==410);
183668
+ /* (411) with ::= */ yytestcase(yyruleno==411);
183669
+ /* (412) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=412);
183670
+ /* (413) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=413);
182866183671
break;
182867183672
/********** End reduce actions ************************************************/
182868183673
};
182869183674
assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
182870183675
yygoto = yyRuleInfoLhs[yyruleno];
@@ -260458,11 +261263,11 @@
260458261263
int nArg, /* Number of args */
260459261264
sqlite3_value **apUnused /* Function arguments */
260460261265
){
260461261266
assert( nArg==0 );
260462261267
UNUSED_PARAM2(nArg, apUnused);
260463
- sqlite3_result_text(pCtx, "fts5: 2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901", -1, SQLITE_TRANSIENT);
261268
+ sqlite3_result_text(pCtx, "fts5: 2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3", -1, SQLITE_TRANSIENT);
260464261269
}
260465261270
260466261271
/*
260467261272
** Implementation of fts5_locale(LOCALE, TEXT) function.
260468261273
**
260469261274
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** b65b29656c835db22557733f4dcfe906bf21 with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS ""
475 #define SQLITE_SCM_DATETIME "2025-11-19T19:37:28.777Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -20881,14 +20881,15 @@
20881 } InitData;
20882
20883 /*
20884 ** Allowed values for mInitFlags
20885 */
20886 #define INITFLAG_AlterMask 0x0003 /* Types of ALTER */
20887 #define INITFLAG_AlterRename 0x0001 /* Reparse after a RENAME */
20888 #define INITFLAG_AlterDrop 0x0002 /* Reparse after a DROP COLUMN */
20889 #define INITFLAG_AlterAdd 0x0003 /* Reparse after an ADD COLUMN */
 
20890
20891 /* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
20892 ** on debug-builds of the CLI using ".testctrl tune ID VALUE". Tuning
20893 ** parameters are for temporary use during development, to help find
20894 ** optimal values for parameters in the query planner. The should not
@@ -22065,10 +22066,13 @@
22065 SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3*, int, Pgno, Pgno);
22066 SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
22067 SQLITE_PRIVATE void sqlite3AlterFunctions(void);
22068 SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
22069 SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
 
 
 
22070 SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *, int *);
22071 SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
22072 SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
22073 SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
22074 SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
@@ -95332,10 +95336,11 @@
95332 #ifndef SQLITE_HWTIME_H
95333 #define SQLITE_HWTIME_H
95334
95335 #if defined(_MSC_VER) && defined(_WIN32)
95336
 
95337 #include <profileapi.h>
95338
95339 __inline sqlite3_uint64 sqlite3Hwtime(void){
95340 LARGE_INTEGER tm;
95341 QueryPerformanceCounter(&tm);
@@ -119669,11 +119674,11 @@
119669 sqlite3 *db = pParse->db;
119670
119671 /* Look up the table being altered. */
119672 assert( pParse->pNewTable==0 );
119673 assert( sqlite3BtreeHoldsAllMutexes(db) );
119674 if( db->mallocFailed ) goto exit_begin_add_column;
119675 pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
119676 if( !pTab ) goto exit_begin_add_column;
119677
119678 #ifndef SQLITE_OMIT_VIRTUALTABLE
119679 if( IsVirtual(pTab) ){
@@ -119741,11 +119746,11 @@
119741 ** it loads an error message into pParse and returns non-zero.
119742 **
119743 ** Or, if pTab is not a view or virtual table, zero is returned.
119744 */
119745 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
119746 static int isRealTable(Parse *pParse, Table *pTab, int bDrop){
119747 const char *zType = 0;
119748 #ifndef SQLITE_OMIT_VIEW
119749 if( IsView(pTab) ){
119750 zType = "view";
119751 }
@@ -119754,13 +119759,16 @@
119754 if( IsVirtual(pTab) ){
119755 zType = "virtual table";
119756 }
119757 #endif
119758 if( zType ){
 
 
 
 
119759 sqlite3ErrorMsg(pParse, "cannot %s %s \"%s\"",
119760 (bDrop ? "drop column from" : "rename columns of"),
119761 zType, pTab->zName
119762 );
119763 return 1;
119764 }
119765 return 0;
119766 }
@@ -120226,10 +120234,29 @@
120226 for(pp=&pCtx->pList; *pp!=pBest; pp=&(*pp)->pNext);
120227 *pp = pBest->pNext;
120228
120229 return pBest;
120230 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120231
120232 /*
120233 ** An error occurred while parsing or otherwise processing a database
120234 ** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an
120235 ** ALTER TABLE RENAME COLUMN program. The error message emitted by the
@@ -121490,10 +121517,700 @@
121490
121491 exit_drop_column:
121492 sqlite3DbFree(db, zCol);
121493 sqlite3SrcListDelete(db, pSrc);
121494 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121495
121496 /*
121497 ** Register built-in functions used to help implement ALTER TABLE
121498 */
121499 SQLITE_PRIVATE void sqlite3AlterFunctions(void){
@@ -121501,10 +122218,14 @@
121501 INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc),
121502 INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc),
121503 INTERNAL_FUNCTION(sqlite_rename_test, 7, renameTableTest),
121504 INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc),
121505 INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
 
 
 
 
121506 };
121507 sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
121508 }
121509 #endif /* SQLITE_ALTER_TABLE */
121510
@@ -145769,11 +146490,12 @@
145769 /* A error message has already been generated. Do not overwrite it */
145770 }else if( pData->mInitFlags & (INITFLAG_AlterMask) ){
145771 static const char *azAlterType[] = {
145772 "rename",
145773 "drop column",
145774 "add column"
 
145775 };
145776 *pData->pzErrMsg = sqlite3MPrintf(db,
145777 "error in %s %s after %s: %s", azObj[0], azObj[1],
145778 azAlterType[(pData->mInitFlags&INITFLAG_AlterMask)-1],
145779 zExtra
@@ -178135,22 +178857,22 @@
178135 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
178136 #undef YYERRORSYMBOL
178137 #undef YYERRSYMDT
178138 #undef YYFALLBACK
178139 #define YYFALLBACK 1
178140 #define YYNSTATE 583
178141 #define YYNRULE 409
178142 #define YYNRULE_WITH_ACTION 344
178143 #define YYNTOKEN 187
178144 #define YY_MAX_SHIFT 582
178145 #define YY_MIN_SHIFTREDUCE 845
178146 #define YY_MAX_SHIFTREDUCE 1253
178147 #define YY_ERROR_ACTION 1254
178148 #define YY_ACCEPT_ACTION 1255
178149 #define YY_NO_ACTION 1256
178150 #define YY_MIN_REDUCE 1257
178151 #define YY_MAX_REDUCE 1665
178152 #define YY_MIN_DSTRCTR 206
178153 #define YY_MAX_DSTRCTR 320
178154 /************* End control #defines *******************************************/
178155 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
178156
@@ -178231,647 +178953,686 @@
178231 ** yy_reduce_ofst[] For each state, the offset into yy_action for
178232 ** shifting non-terminals after a reduce.
178233 ** yy_default[] Default action for each state.
178234 **
178235 *********** Begin parsing tables **********************************************/
178236 #define YY_ACTTAB_COUNT (2207)
178237 static const YYACTIONTYPE yy_action[] = {
178238 /* 0 */ 130, 127, 234, 282, 282, 1328, 576, 1307, 460, 289,
178239 /* 10 */ 289, 576, 1622, 381, 576, 1328, 573, 576, 562, 413,
178240 /* 20 */ 1300, 1542, 573, 481, 562, 524, 460, 459, 558, 82,
178241 /* 30 */ 82, 983, 294, 375, 51, 51, 498, 61, 61, 984,
178242 /* 40 */ 82, 82, 1577, 137, 138, 91, 7, 1228, 1228, 1063,
178243 /* 50 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 413,
178244 /* 60 */ 288, 288, 182, 288, 288, 481, 536, 288, 288, 130,
178245 /* 70 */ 127, 234, 432, 573, 525, 562, 573, 557, 562, 1290,
178246 /* 80 */ 573, 421, 562, 137, 138, 91, 559, 1228, 1228, 1063,
178247 /* 90 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 296,
178248 /* 100 */ 460, 398, 1249, 134, 134, 134, 134, 133, 133, 132,
178249 /* 110 */ 132, 132, 131, 128, 451, 451, 1050, 1050, 1064, 1067,
178250 /* 120 */ 1255, 1, 1, 582, 2, 1259, 581, 1174, 1259, 1174,
178251 /* 130 */ 321, 413, 155, 321, 1584, 155, 379, 112, 481, 1341,
178252 /* 140 */ 456, 299, 1341, 134, 134, 134, 134, 133, 133, 132,
178253 /* 150 */ 132, 132, 131, 128, 451, 137, 138, 91, 498, 1228,
178254 /* 160 */ 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136,
178255 /* 170 */ 136, 1204, 862, 1281, 288, 288, 283, 288, 288, 523,
178256 /* 180 */ 523, 1250, 139, 578, 7, 578, 1345, 573, 1169, 562,
178257 /* 190 */ 573, 1054, 562, 136, 136, 136, 136, 129, 573, 547,
178258 /* 200 */ 562, 1169, 245, 1541, 1169, 245, 133, 133, 132, 132,
178259 /* 210 */ 132, 131, 128, 451, 302, 134, 134, 134, 134, 133,
178260 /* 220 */ 133, 132, 132, 132, 131, 128, 451, 1575, 1204, 1205,
178261 /* 230 */ 1204, 7, 470, 550, 455, 413, 550, 455, 130, 127,
178262 /* 240 */ 234, 134, 134, 134, 134, 133, 133, 132, 132, 132,
178263 /* 250 */ 131, 128, 451, 136, 136, 136, 136, 538, 483, 137,
178264 /* 260 */ 138, 91, 1019, 1228, 1228, 1063, 1066, 1053, 1053, 135,
178265 /* 270 */ 135, 136, 136, 136, 136, 1085, 576, 1204, 132, 132,
178266 /* 280 */ 132, 131, 128, 451, 93, 214, 134, 134, 134, 134,
178267 /* 290 */ 133, 133, 132, 132, 132, 131, 128, 451, 401, 19,
178268 /* 300 */ 19, 134, 134, 134, 134, 133, 133, 132, 132, 132,
178269 /* 310 */ 131, 128, 451, 1498, 426, 267, 344, 467, 332, 134,
178270 /* 320 */ 134, 134, 134, 133, 133, 132, 132, 132, 131, 128,
178271 /* 330 */ 451, 1281, 576, 6, 1204, 1205, 1204, 257, 576, 413,
178272 /* 340 */ 511, 508, 507, 1279, 94, 1019, 464, 1204, 551, 551,
178273 /* 350 */ 506, 1224, 1571, 44, 38, 51, 51, 411, 576, 413,
178274 /* 360 */ 45, 51, 51, 137, 138, 91, 530, 1228, 1228, 1063,
178275 /* 370 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 398,
178276 /* 380 */ 1148, 82, 82, 137, 138, 91, 39, 1228, 1228, 1063,
178277 /* 390 */ 1066, 1053, 1053, 135, 135, 136, 136, 136, 136, 344,
178278 /* 400 */ 44, 288, 288, 375, 1204, 1205, 1204, 209, 1204, 1224,
178279 /* 410 */ 320, 567, 471, 576, 573, 576, 562, 576, 316, 264,
178280 /* 420 */ 231, 46, 160, 134, 134, 134, 134, 133, 133, 132,
178281 /* 430 */ 132, 132, 131, 128, 451, 303, 82, 82, 82, 82,
178282 /* 440 */ 82, 82, 442, 134, 134, 134, 134, 133, 133, 132,
178283 /* 450 */ 132, 132, 131, 128, 451, 1582, 544, 320, 567, 1250,
178284 /* 460 */ 874, 1582, 380, 382, 413, 1204, 1205, 1204, 360, 182,
178285 /* 470 */ 288, 288, 1576, 557, 1339, 557, 7, 557, 1277, 472,
178286 /* 480 */ 346, 526, 531, 573, 556, 562, 439, 1511, 137, 138,
178287 /* 490 */ 91, 219, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135,
178288 /* 500 */ 136, 136, 136, 136, 465, 1511, 1513, 532, 413, 288,
178289 /* 510 */ 288, 423, 512, 288, 288, 411, 288, 288, 874, 130,
178290 /* 520 */ 127, 234, 573, 1107, 562, 1204, 573, 1107, 562, 573,
178291 /* 530 */ 560, 562, 137, 138, 91, 1293, 1228, 1228, 1063, 1066,
178292 /* 540 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 134, 134,
178293 /* 550 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451,
178294 /* 560 */ 493, 503, 1292, 1204, 257, 288, 288, 511, 508, 507,
178295 /* 570 */ 1204, 1628, 1169, 123, 568, 275, 4, 506, 573, 1511,
178296 /* 580 */ 562, 331, 1204, 1205, 1204, 1169, 548, 548, 1169, 261,
178297 /* 590 */ 571, 7, 134, 134, 134, 134, 133, 133, 132, 132,
178298 /* 600 */ 132, 131, 128, 451, 108, 533, 130, 127, 234, 1204,
178299 /* 610 */ 448, 447, 413, 1451, 452, 983, 886, 96, 1598, 1233,
178300 /* 620 */ 1204, 1205, 1204, 984, 1235, 1450, 565, 1204, 1205, 1204,
178301 /* 630 */ 229, 522, 1234, 534, 1333, 1333, 137, 138, 91, 1449,
178302 /* 640 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178303 /* 650 */ 136, 136, 373, 1595, 971, 1040, 413, 1236, 418, 1236,
178304 /* 660 */ 879, 121, 121, 948, 373, 1595, 1204, 1205, 1204, 122,
178305 /* 670 */ 1204, 452, 577, 452, 363, 417, 1028, 882, 373, 1595,
178306 /* 680 */ 137, 138, 91, 462, 1228, 1228, 1063, 1066, 1053, 1053,
178307 /* 690 */ 135, 135, 136, 136, 136, 136, 134, 134, 134, 134,
178308 /* 700 */ 133, 133, 132, 132, 132, 131, 128, 451, 1028, 1028,
178309 /* 710 */ 1030, 1031, 35, 570, 570, 570, 197, 423, 1040, 198,
178310 /* 720 */ 1204, 123, 568, 1204, 4, 320, 567, 1204, 1205, 1204,
178311 /* 730 */ 40, 388, 576, 384, 882, 1029, 423, 1188, 571, 1028,
178312 /* 740 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178313 /* 750 */ 128, 451, 529, 1568, 1204, 19, 19, 1204, 575, 492,
178314 /* 760 */ 413, 157, 452, 489, 1187, 1331, 1331, 5, 1204, 949,
178315 /* 770 */ 431, 1028, 1028, 1030, 565, 22, 22, 1204, 1205, 1204,
178316 /* 780 */ 1204, 1205, 1204, 477, 137, 138, 91, 212, 1228, 1228,
178317 /* 790 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178318 /* 800 */ 1188, 48, 111, 1040, 413, 1204, 213, 970, 1041, 121,
178319 /* 810 */ 121, 1204, 1205, 1204, 1204, 1205, 1204, 122, 221, 452,
178320 /* 820 */ 577, 452, 44, 487, 1028, 1204, 1205, 1204, 137, 138,
178321 /* 830 */ 91, 378, 1228, 1228, 1063, 1066, 1053, 1053, 135, 135,
178322 /* 840 */ 136, 136, 136, 136, 134, 134, 134, 134, 133, 133,
178323 /* 850 */ 132, 132, 132, 131, 128, 451, 1028, 1028, 1030, 1031,
178324 /* 860 */ 35, 461, 1204, 1205, 1204, 1569, 1040, 377, 214, 1149,
178325 /* 870 */ 1657, 535, 1657, 437, 902, 320, 567, 1568, 364, 320,
178326 /* 880 */ 567, 412, 329, 1029, 519, 1188, 3, 1028, 134, 134,
178327 /* 890 */ 134, 134, 133, 133, 132, 132, 132, 131, 128, 451,
178328 /* 900 */ 1659, 399, 1169, 307, 893, 307, 515, 576, 413, 214,
178329 /* 910 */ 498, 944, 1024, 540, 903, 1169, 943, 392, 1169, 1028,
178330 /* 920 */ 1028, 1030, 406, 298, 1204, 50, 1149, 1658, 413, 1658,
178331 /* 930 */ 145, 145, 137, 138, 91, 293, 1228, 1228, 1063, 1066,
178332 /* 940 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 1188, 1147,
178333 /* 950 */ 514, 1568, 137, 138, 91, 1505, 1228, 1228, 1063, 1066,
178334 /* 960 */ 1053, 1053, 135, 135, 136, 136, 136, 136, 434, 323,
178335 /* 970 */ 435, 539, 111, 1506, 274, 291, 372, 517, 367, 516,
178336 /* 980 */ 262, 1204, 1205, 1204, 1574, 481, 363, 576, 7, 1569,
178337 /* 990 */ 1568, 377, 134, 134, 134, 134, 133, 133, 132, 132,
178338 /* 1000 */ 132, 131, 128, 451, 1568, 576, 1147, 576, 232, 576,
178339 /* 1010 */ 19, 19, 134, 134, 134, 134, 133, 133, 132, 132,
178340 /* 1020 */ 132, 131, 128, 451, 1169, 433, 576, 1207, 19, 19,
178341 /* 1030 */ 19, 19, 19, 19, 1627, 576, 911, 1169, 47, 120,
178342 /* 1040 */ 1169, 117, 413, 306, 498, 438, 1125, 206, 336, 19,
178343 /* 1050 */ 19, 1435, 49, 449, 449, 449, 1368, 315, 81, 81,
178344 /* 1060 */ 576, 304, 413, 1570, 207, 377, 137, 138, 91, 115,
178345 /* 1070 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178346 /* 1080 */ 136, 136, 576, 82, 82, 1207, 137, 138, 91, 1340,
178347 /* 1090 */ 1228, 1228, 1063, 1066, 1053, 1053, 135, 135, 136, 136,
178348 /* 1100 */ 136, 136, 1569, 386, 377, 82, 82, 463, 1126, 1552,
178349 /* 1110 */ 333, 463, 335, 131, 128, 451, 1569, 161, 377, 16,
178350 /* 1120 */ 317, 387, 428, 1127, 448, 447, 134, 134, 134, 134,
178351 /* 1130 */ 133, 133, 132, 132, 132, 131, 128, 451, 1128, 576,
178352 /* 1140 */ 1105, 10, 445, 267, 576, 1554, 134, 134, 134, 134,
178353 /* 1150 */ 133, 133, 132, 132, 132, 131, 128, 451, 532, 576,
178354 /* 1160 */ 922, 576, 19, 19, 576, 1573, 576, 147, 147, 7,
178355 /* 1170 */ 923, 1236, 498, 1236, 576, 487, 413, 552, 285, 1224,
178356 /* 1180 */ 969, 215, 82, 82, 66, 66, 1435, 67, 67, 21,
178357 /* 1190 */ 21, 1110, 1110, 495, 334, 297, 413, 53, 53, 297,
178358 /* 1200 */ 137, 138, 91, 119, 1228, 1228, 1063, 1066, 1053, 1053,
178359 /* 1210 */ 135, 135, 136, 136, 136, 136, 413, 1336, 1311, 446,
178360 /* 1220 */ 137, 138, 91, 227, 1228, 1228, 1063, 1066, 1053, 1053,
178361 /* 1230 */ 135, 135, 136, 136, 136, 136, 574, 1224, 936, 936,
178362 /* 1240 */ 137, 126, 91, 141, 1228, 1228, 1063, 1066, 1053, 1053,
178363 /* 1250 */ 135, 135, 136, 136, 136, 136, 533, 429, 472, 346,
178364 /* 1260 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178365 /* 1270 */ 128, 451, 576, 457, 233, 343, 1435, 403, 498, 1550,
178366 /* 1280 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178367 /* 1290 */ 128, 451, 576, 324, 576, 82, 82, 487, 576, 969,
178368 /* 1300 */ 134, 134, 134, 134, 133, 133, 132, 132, 132, 131,
178369 /* 1310 */ 128, 451, 288, 288, 546, 68, 68, 54, 54, 553,
178370 /* 1320 */ 413, 69, 69, 351, 6, 573, 944, 562, 410, 409,
178371 /* 1330 */ 1435, 943, 450, 545, 260, 259, 258, 576, 158, 576,
178372 /* 1340 */ 413, 222, 1180, 479, 969, 138, 91, 430, 1228, 1228,
178373 /* 1350 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178374 /* 1360 */ 70, 70, 71, 71, 576, 1126, 91, 576, 1228, 1228,
178375 /* 1370 */ 1063, 1066, 1053, 1053, 135, 135, 136, 136, 136, 136,
178376 /* 1380 */ 1127, 166, 850, 851, 852, 1282, 419, 72, 72, 108,
178377 /* 1390 */ 73, 73, 1310, 358, 1180, 1128, 576, 305, 576, 123,
178378 /* 1400 */ 568, 494, 4, 488, 134, 134, 134, 134, 133, 133,
178379 /* 1410 */ 132, 132, 132, 131, 128, 451, 571, 564, 534, 55,
178380 /* 1420 */ 55, 56, 56, 576, 134, 134, 134, 134, 133, 133,
178381 /* 1430 */ 132, 132, 132, 131, 128, 451, 576, 1104, 233, 1104,
178382 /* 1440 */ 452, 1602, 582, 2, 1259, 576, 57, 57, 576, 321,
178383 /* 1450 */ 576, 155, 565, 1435, 485, 353, 576, 356, 1341, 59,
178384 /* 1460 */ 59, 576, 44, 969, 569, 419, 576, 238, 60, 60,
178385 /* 1470 */ 261, 74, 74, 75, 75, 287, 231, 576, 1366, 76,
178386 /* 1480 */ 76, 1040, 420, 184, 20, 20, 576, 121, 121, 77,
178387 /* 1490 */ 77, 97, 218, 288, 288, 122, 125, 452, 577, 452,
178388 /* 1500 */ 143, 143, 1028, 576, 520, 576, 573, 576, 562, 144,
178389 /* 1510 */ 144, 474, 227, 1244, 478, 123, 568, 576, 4, 320,
178390 /* 1520 */ 567, 245, 411, 576, 443, 411, 78, 78, 62, 62,
178391 /* 1530 */ 79, 79, 571, 319, 1028, 1028, 1030, 1031, 35, 418,
178392 /* 1540 */ 63, 63, 576, 290, 411, 9, 80, 80, 1144, 576,
178393 /* 1550 */ 400, 576, 486, 455, 576, 1223, 452, 576, 325, 342,
178394 /* 1560 */ 576, 111, 576, 1188, 242, 64, 64, 473, 565, 576,
178395 /* 1570 */ 23, 576, 170, 170, 171, 171, 576, 87, 87, 328,
178396 /* 1580 */ 65, 65, 542, 83, 83, 146, 146, 541, 123, 568,
178397 /* 1590 */ 341, 4, 84, 84, 168, 168, 576, 1040, 576, 148,
178398 /* 1600 */ 148, 576, 1380, 121, 121, 571, 1021, 576, 266, 576,
178399 /* 1610 */ 424, 122, 576, 452, 577, 452, 576, 553, 1028, 142,
178400 /* 1620 */ 142, 169, 169, 576, 162, 162, 528, 889, 371, 452,
178401 /* 1630 */ 152, 152, 151, 151, 1379, 149, 149, 109, 370, 150,
178402 /* 1640 */ 150, 565, 576, 480, 576, 266, 86, 86, 576, 1092,
178403 /* 1650 */ 1028, 1028, 1030, 1031, 35, 542, 482, 576, 266, 466,
178404 /* 1660 */ 543, 123, 568, 1616, 4, 88, 88, 85, 85, 475,
178405 /* 1670 */ 1040, 52, 52, 222, 901, 900, 121, 121, 571, 1188,
178406 /* 1680 */ 58, 58, 244, 1032, 122, 889, 452, 577, 452, 908,
178407 /* 1690 */ 909, 1028, 300, 347, 504, 111, 263, 361, 165, 111,
178408 /* 1700 */ 111, 1088, 452, 263, 974, 1153, 266, 1092, 986, 987,
178409 /* 1710 */ 942, 939, 125, 125, 565, 1103, 872, 1103, 159, 941,
178410 /* 1720 */ 1309, 125, 1557, 1028, 1028, 1030, 1031, 35, 542, 337,
178411 /* 1730 */ 1530, 205, 1529, 541, 499, 1589, 490, 348, 1376, 352,
178412 /* 1740 */ 355, 1032, 357, 1040, 359, 1324, 1308, 366, 563, 121,
178413 /* 1750 */ 121, 376, 1188, 1389, 1434, 1362, 280, 122, 1374, 452,
178414 /* 1760 */ 577, 452, 167, 1439, 1028, 1289, 1280, 1268, 1267, 1269,
178415 /* 1770 */ 1609, 1359, 312, 313, 314, 397, 12, 237, 224, 1421,
178416 /* 1780 */ 295, 1416, 1409, 1426, 339, 484, 340, 509, 1371, 1612,
178417 /* 1790 */ 1372, 1425, 1244, 404, 301, 228, 1028, 1028, 1030, 1031,
178418 /* 1800 */ 35, 1601, 1192, 454, 345, 1307, 292, 369, 1502, 1501,
178419 /* 1810 */ 270, 396, 396, 395, 277, 393, 1370, 1369, 859, 1549,
178420 /* 1820 */ 186, 123, 568, 235, 4, 1188, 391, 210, 211, 223,
178421 /* 1830 */ 1547, 239, 1241, 327, 422, 96, 220, 195, 571, 180,
178422 /* 1840 */ 188, 326, 468, 469, 190, 191, 502, 192, 193, 566,
178423 /* 1850 */ 247, 109, 1430, 491, 199, 251, 102, 281, 402, 476,
178424 /* 1860 */ 405, 1496, 452, 497, 253, 1422, 13, 1428, 14, 1427,
178425 /* 1870 */ 203, 1507, 241, 500, 565, 354, 407, 92, 95, 1270,
178426 /* 1880 */ 175, 254, 518, 43, 1327, 255, 1326, 1325, 436, 1518,
178427 /* 1890 */ 350, 1318, 104, 229, 893, 1626, 440, 441, 1625, 408,
178428 /* 1900 */ 240, 1296, 268, 1040, 310, 269, 1297, 527, 444, 121,
178429 /* 1910 */ 121, 368, 1295, 1594, 1624, 311, 1394, 122, 1317, 452,
178430 /* 1920 */ 577, 452, 374, 1580, 1028, 1393, 140, 553, 11, 90,
178431 /* 1930 */ 568, 385, 4, 116, 318, 414, 1579, 110, 1483, 537,
178432 /* 1940 */ 320, 567, 1350, 555, 42, 579, 571, 1349, 1198, 383,
178433 /* 1950 */ 276, 390, 216, 389, 278, 279, 1028, 1028, 1030, 1031,
178434 /* 1960 */ 35, 172, 580, 1265, 458, 1260, 415, 416, 185, 156,
178435 /* 1970 */ 452, 1534, 1535, 173, 1533, 1532, 89, 308, 225, 226,
178436 /* 1980 */ 846, 174, 565, 453, 217, 1188, 322, 236, 1102, 154,
178437 /* 1990 */ 1100, 330, 187, 176, 1223, 243, 189, 925, 338, 246,
178438 /* 2000 */ 1116, 194, 177, 425, 178, 427, 98, 196, 99, 100,
178439 /* 2010 */ 101, 1040, 179, 1119, 1115, 248, 249, 121, 121, 163,
178440 /* 2020 */ 24, 250, 349, 1238, 496, 122, 1108, 452, 577, 452,
178441 /* 2030 */ 1192, 454, 1028, 266, 292, 200, 252, 201, 861, 396,
178442 /* 2040 */ 396, 395, 277, 393, 15, 501, 859, 370, 292, 256,
178443 /* 2050 */ 202, 554, 505, 396, 396, 395, 277, 393, 103, 239,
178444 /* 2060 */ 859, 327, 25, 26, 1028, 1028, 1030, 1031, 35, 326,
178445 /* 2070 */ 362, 510, 891, 239, 365, 327, 513, 904, 105, 309,
178446 /* 2080 */ 164, 181, 27, 326, 106, 521, 107, 1185, 1069, 1155,
178447 /* 2090 */ 17, 1154, 230, 1188, 284, 286, 265, 204, 125, 1171,
178448 /* 2100 */ 241, 28, 978, 972, 29, 41, 1175, 1179, 175, 1173,
178449 /* 2110 */ 30, 43, 31, 8, 241, 1178, 32, 1160, 208, 549,
178450 /* 2120 */ 33, 111, 175, 1083, 1070, 43, 1068, 1072, 240, 113,
178451 /* 2130 */ 114, 34, 561, 118, 1124, 271, 1073, 36, 18, 572,
178452 /* 2140 */ 1033, 873, 240, 124, 37, 935, 272, 273, 1617, 183,
178453 /* 2150 */ 153, 394, 1194, 1193, 1256, 1256, 1256, 1256, 1256, 1256,
178454 /* 2160 */ 1256, 1256, 1256, 414, 1256, 1256, 1256, 1256, 320, 567,
178455 /* 2170 */ 1256, 1256, 1256, 1256, 1256, 1256, 1256, 414, 1256, 1256,
178456 /* 2180 */ 1256, 1256, 320, 567, 1256, 1256, 1256, 1256, 1256, 1256,
178457 /* 2190 */ 1256, 1256, 458, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
178458 /* 2200 */ 1256, 1256, 1256, 1256, 1256, 1256, 458,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178459 };
178460 static const YYCODETYPE yy_lookahead[] = {
178461 /* 0 */ 277, 278, 279, 241, 242, 225, 195, 227, 195, 241,
178462 /* 10 */ 242, 195, 217, 221, 195, 235, 254, 195, 256, 19,
178463 /* 20 */ 225, 298, 254, 195, 256, 206, 213, 214, 206, 218,
178464 /* 30 */ 219, 31, 206, 195, 218, 219, 195, 218, 219, 39,
178465 /* 40 */ 218, 219, 313, 43, 44, 45, 317, 47, 48, 49,
178466 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 19,
178467 /* 60 */ 241, 242, 195, 241, 242, 195, 255, 241, 242, 277,
178468 /* 70 */ 278, 279, 234, 254, 255, 256, 254, 255, 256, 218,
178469 /* 80 */ 254, 240, 256, 43, 44, 45, 264, 47, 48, 49,
178470 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 271,
178471 /* 100 */ 287, 22, 23, 103, 104, 105, 106, 107, 108, 109,
178472 /* 110 */ 110, 111, 112, 113, 114, 114, 47, 48, 49, 50,
178473 /* 120 */ 187, 188, 189, 190, 191, 192, 190, 87, 192, 89,
178474 /* 130 */ 197, 19, 199, 197, 318, 199, 320, 25, 195, 206,
178475 /* 140 */ 299, 271, 206, 103, 104, 105, 106, 107, 108, 109,
178476 /* 150 */ 110, 111, 112, 113, 114, 43, 44, 45, 195, 47,
178477 /* 160 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
178478 /* 170 */ 58, 60, 21, 195, 241, 242, 215, 241, 242, 312,
178479 /* 180 */ 313, 102, 70, 205, 317, 207, 242, 254, 77, 256,
178480 /* 190 */ 254, 122, 256, 55, 56, 57, 58, 59, 254, 88,
178481 /* 200 */ 256, 90, 269, 240, 93, 269, 107, 108, 109, 110,
178482 /* 210 */ 111, 112, 113, 114, 271, 103, 104, 105, 106, 107,
178483 /* 220 */ 108, 109, 110, 111, 112, 113, 114, 313, 117, 118,
178484 /* 230 */ 119, 317, 81, 195, 301, 19, 195, 301, 277, 278,
178485 /* 240 */ 279, 103, 104, 105, 106, 107, 108, 109, 110, 111,
178486 /* 250 */ 112, 113, 114, 55, 56, 57, 58, 146, 195, 43,
178487 /* 260 */ 44, 45, 74, 47, 48, 49, 50, 51, 52, 53,
178488 /* 270 */ 54, 55, 56, 57, 58, 124, 195, 60, 109, 110,
178489 /* 280 */ 111, 112, 113, 114, 68, 195, 103, 104, 105, 106,
178490 /* 290 */ 107, 108, 109, 110, 111, 112, 113, 114, 208, 218,
178491 /* 300 */ 219, 103, 104, 105, 106, 107, 108, 109, 110, 111,
178492 /* 310 */ 112, 113, 114, 162, 233, 24, 128, 129, 130, 103,
178493 /* 320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
178494 /* 330 */ 114, 195, 195, 215, 117, 118, 119, 120, 195, 19,
178495 /* 340 */ 123, 124, 125, 207, 24, 74, 246, 60, 310, 311,
178496 /* 350 */ 133, 60, 311, 82, 22, 218, 219, 257, 195, 19,
178497 /* 360 */ 73, 218, 219, 43, 44, 45, 206, 47, 48, 49,
178498 /* 370 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 22,
178499 /* 380 */ 23, 218, 219, 43, 44, 45, 54, 47, 48, 49,
178500 /* 390 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 128,
178501 /* 400 */ 82, 241, 242, 195, 117, 118, 119, 289, 60, 118,
178502 /* 410 */ 139, 140, 294, 195, 254, 195, 256, 195, 255, 259,
178503 /* 420 */ 260, 73, 22, 103, 104, 105, 106, 107, 108, 109,
178504 /* 430 */ 110, 111, 112, 113, 114, 206, 218, 219, 218, 219,
178505 /* 440 */ 218, 219, 234, 103, 104, 105, 106, 107, 108, 109,
178506 /* 450 */ 110, 111, 112, 113, 114, 318, 319, 139, 140, 102,
178507 /* 460 */ 60, 318, 319, 221, 19, 117, 118, 119, 23, 195,
178508 /* 470 */ 241, 242, 313, 255, 206, 255, 317, 255, 206, 129,
178509 /* 480 */ 130, 206, 264, 254, 264, 256, 264, 195, 43, 44,
178510 /* 490 */ 45, 151, 47, 48, 49, 50, 51, 52, 53, 54,
178511 /* 500 */ 55, 56, 57, 58, 246, 213, 214, 19, 19, 241,
178512 /* 510 */ 242, 195, 23, 241, 242, 257, 241, 242, 118, 277,
178513 /* 520 */ 278, 279, 254, 29, 256, 60, 254, 33, 256, 254,
178514 /* 530 */ 206, 256, 43, 44, 45, 218, 47, 48, 49, 50,
178515 /* 540 */ 51, 52, 53, 54, 55, 56, 57, 58, 103, 104,
178516 /* 550 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
178517 /* 560 */ 66, 19, 218, 60, 120, 241, 242, 123, 124, 125,
178518 /* 570 */ 60, 232, 77, 19, 20, 26, 22, 133, 254, 287,
178519 /* 580 */ 256, 265, 117, 118, 119, 90, 312, 313, 93, 47,
178520 /* 590 */ 36, 317, 103, 104, 105, 106, 107, 108, 109, 110,
178521 /* 600 */ 111, 112, 113, 114, 116, 117, 277, 278, 279, 60,
178522 /* 610 */ 107, 108, 19, 276, 60, 31, 23, 152, 195, 116,
178523 /* 620 */ 117, 118, 119, 39, 121, 276, 72, 117, 118, 119,
178524 /* 630 */ 166, 167, 129, 145, 237, 238, 43, 44, 45, 276,
178525 /* 640 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178526 /* 650 */ 57, 58, 315, 316, 144, 101, 19, 154, 116, 156,
178527 /* 660 */ 23, 107, 108, 109, 315, 316, 117, 118, 119, 115,
178528 /* 670 */ 60, 117, 118, 119, 132, 200, 122, 60, 315, 316,
178529 /* 680 */ 43, 44, 45, 272, 47, 48, 49, 50, 51, 52,
178530 /* 690 */ 53, 54, 55, 56, 57, 58, 103, 104, 105, 106,
178531 /* 700 */ 107, 108, 109, 110, 111, 112, 113, 114, 154, 155,
178532 /* 710 */ 156, 157, 158, 212, 213, 214, 22, 195, 101, 22,
178533 /* 720 */ 60, 19, 20, 60, 22, 139, 140, 117, 118, 119,
178534 /* 730 */ 22, 251, 195, 253, 117, 118, 195, 183, 36, 122,
178535 /* 740 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178536 /* 750 */ 113, 114, 195, 195, 60, 218, 219, 60, 195, 284,
178537 /* 760 */ 19, 25, 60, 288, 23, 237, 238, 22, 60, 109,
178538 /* 770 */ 233, 154, 155, 156, 72, 218, 219, 117, 118, 119,
178539 /* 780 */ 117, 118, 119, 116, 43, 44, 45, 265, 47, 48,
178540 /* 790 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178541 /* 800 */ 183, 243, 25, 101, 19, 60, 265, 144, 23, 107,
178542 /* 810 */ 108, 117, 118, 119, 117, 118, 119, 115, 151, 117,
178543 /* 820 */ 118, 119, 82, 195, 122, 117, 118, 119, 43, 44,
178544 /* 830 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,
178545 /* 840 */ 55, 56, 57, 58, 103, 104, 105, 106, 107, 108,
178546 /* 850 */ 109, 110, 111, 112, 113, 114, 154, 155, 156, 157,
178547 /* 860 */ 158, 121, 117, 118, 119, 307, 101, 309, 195, 22,
178548 /* 870 */ 23, 195, 25, 19, 35, 139, 140, 195, 24, 139,
178549 /* 880 */ 140, 208, 195, 118, 109, 183, 22, 122, 103, 104,
178550 /* 890 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
178551 /* 900 */ 304, 305, 77, 230, 127, 232, 67, 195, 19, 195,
178552 /* 910 */ 195, 136, 23, 88, 75, 90, 141, 203, 93, 154,
178553 /* 920 */ 155, 156, 208, 295, 60, 243, 22, 23, 19, 25,
178554 /* 930 */ 218, 219, 43, 44, 45, 100, 47, 48, 49, 50,
178555 /* 940 */ 51, 52, 53, 54, 55, 56, 57, 58, 183, 102,
178556 /* 950 */ 96, 195, 43, 44, 45, 240, 47, 48, 49, 50,
178557 /* 960 */ 51, 52, 53, 54, 55, 56, 57, 58, 114, 134,
178558 /* 970 */ 131, 146, 25, 286, 120, 121, 122, 123, 124, 125,
178559 /* 980 */ 126, 117, 118, 119, 313, 195, 132, 195, 317, 307,
178560 /* 990 */ 195, 309, 103, 104, 105, 106, 107, 108, 109, 110,
178561 /* 1000 */ 111, 112, 113, 114, 195, 195, 102, 195, 195, 195,
178562 /* 1010 */ 218, 219, 103, 104, 105, 106, 107, 108, 109, 110,
178563 /* 1020 */ 111, 112, 113, 114, 77, 233, 195, 60, 218, 219,
178564 /* 1030 */ 218, 219, 218, 219, 23, 195, 25, 90, 243, 159,
178565 /* 1040 */ 93, 161, 19, 233, 195, 233, 23, 233, 16, 218,
178566 /* 1050 */ 219, 195, 243, 212, 213, 214, 262, 263, 218, 219,
178567 /* 1060 */ 195, 271, 19, 307, 233, 309, 43, 44, 45, 160,
178568 /* 1070 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178569 /* 1080 */ 57, 58, 195, 218, 219, 118, 43, 44, 45, 240,
178570 /* 1090 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
178571 /* 1100 */ 57, 58, 307, 195, 309, 218, 219, 263, 12, 195,
178572 /* 1110 */ 78, 267, 80, 112, 113, 114, 307, 22, 309, 24,
178573 /* 1120 */ 255, 281, 266, 27, 107, 108, 103, 104, 105, 106,
178574 /* 1130 */ 107, 108, 109, 110, 111, 112, 113, 114, 42, 195,
178575 /* 1140 */ 11, 22, 255, 24, 195, 195, 103, 104, 105, 106,
178576 /* 1150 */ 107, 108, 109, 110, 111, 112, 113, 114, 19, 195,
178577 /* 1160 */ 64, 195, 218, 219, 195, 313, 195, 218, 219, 317,
178578 /* 1170 */ 74, 154, 195, 156, 195, 195, 19, 233, 23, 60,
178579 /* 1180 */ 25, 24, 218, 219, 218, 219, 195, 218, 219, 218,
178580 /* 1190 */ 219, 128, 129, 130, 162, 263, 19, 218, 219, 267,
178581 /* 1200 */ 43, 44, 45, 160, 47, 48, 49, 50, 51, 52,
178582 /* 1210 */ 53, 54, 55, 56, 57, 58, 19, 240, 228, 255,
178583 /* 1220 */ 43, 44, 45, 25, 47, 48, 49, 50, 51, 52,
178584 /* 1230 */ 53, 54, 55, 56, 57, 58, 135, 118, 137, 138,
178585 /* 1240 */ 43, 44, 45, 22, 47, 48, 49, 50, 51, 52,
178586 /* 1250 */ 53, 54, 55, 56, 57, 58, 117, 266, 129, 130,
178587 /* 1260 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178588 /* 1270 */ 113, 114, 195, 195, 119, 295, 195, 206, 195, 195,
178589 /* 1280 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178590 /* 1290 */ 113, 114, 195, 195, 195, 218, 219, 195, 195, 144,
178591 /* 1300 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
178592 /* 1310 */ 113, 114, 241, 242, 67, 218, 219, 218, 219, 146,
178593 /* 1320 */ 19, 218, 219, 240, 215, 254, 136, 256, 107, 108,
178594 /* 1330 */ 195, 141, 255, 86, 128, 129, 130, 195, 165, 195,
178595 /* 1340 */ 19, 143, 95, 272, 25, 44, 45, 266, 47, 48,
178596 /* 1350 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178597 /* 1360 */ 218, 219, 218, 219, 195, 12, 45, 195, 47, 48,
178598 /* 1370 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
178599 /* 1380 */ 27, 23, 7, 8, 9, 210, 211, 218, 219, 116,
178600 /* 1390 */ 218, 219, 228, 16, 147, 42, 195, 295, 195, 19,
178601 /* 1400 */ 20, 266, 22, 294, 103, 104, 105, 106, 107, 108,
178602 /* 1410 */ 109, 110, 111, 112, 113, 114, 36, 64, 145, 218,
178603 /* 1420 */ 219, 218, 219, 195, 103, 104, 105, 106, 107, 108,
178604 /* 1430 */ 109, 110, 111, 112, 113, 114, 195, 154, 119, 156,
178605 /* 1440 */ 60, 189, 190, 191, 192, 195, 218, 219, 195, 197,
178606 /* 1450 */ 195, 199, 72, 195, 19, 78, 195, 80, 206, 218,
178607 /* 1460 */ 219, 195, 82, 144, 210, 211, 195, 15, 218, 219,
178608 /* 1470 */ 47, 218, 219, 218, 219, 259, 260, 195, 261, 218,
178609 /* 1480 */ 219, 101, 302, 303, 218, 219, 195, 107, 108, 218,
178610 /* 1490 */ 219, 150, 151, 241, 242, 115, 25, 117, 118, 119,
178611 /* 1500 */ 218, 219, 122, 195, 146, 195, 254, 195, 256, 218,
178612 /* 1510 */ 219, 246, 25, 61, 246, 19, 20, 195, 22, 139,
178613 /* 1520 */ 140, 269, 257, 195, 266, 257, 218, 219, 218, 219,
178614 /* 1530 */ 218, 219, 36, 246, 154, 155, 156, 157, 158, 116,
178615 /* 1540 */ 218, 219, 195, 22, 257, 49, 218, 219, 23, 195,
178616 /* 1550 */ 25, 195, 117, 301, 195, 25, 60, 195, 195, 23,
178617 /* 1560 */ 195, 25, 195, 183, 24, 218, 219, 130, 72, 195,
178618 /* 1570 */ 22, 195, 218, 219, 218, 219, 195, 218, 219, 195,
178619 /* 1580 */ 218, 219, 86, 218, 219, 218, 219, 91, 19, 20,
178620 /* 1590 */ 153, 22, 218, 219, 218, 219, 195, 101, 195, 218,
178621 /* 1600 */ 219, 195, 195, 107, 108, 36, 23, 195, 25, 195,
178622 /* 1610 */ 62, 115, 195, 117, 118, 119, 195, 146, 122, 218,
178623 /* 1620 */ 219, 218, 219, 195, 218, 219, 19, 60, 122, 60,
178624 /* 1630 */ 218, 219, 218, 219, 195, 218, 219, 150, 132, 218,
178625 /* 1640 */ 219, 72, 195, 23, 195, 25, 218, 219, 195, 60,
178626 /* 1650 */ 154, 155, 156, 157, 158, 86, 23, 195, 25, 195,
178627 /* 1660 */ 91, 19, 20, 142, 22, 218, 219, 218, 219, 130,
178628 /* 1670 */ 101, 218, 219, 143, 121, 122, 107, 108, 36, 183,
178629 /* 1680 */ 218, 219, 142, 60, 115, 118, 117, 118, 119, 7,
178630 /* 1690 */ 8, 122, 153, 23, 23, 25, 25, 23, 23, 25,
178631 /* 1700 */ 25, 23, 60, 25, 23, 98, 25, 118, 84, 85,
178632 /* 1710 */ 23, 23, 25, 25, 72, 154, 23, 156, 25, 23,
178633 /* 1720 */ 228, 25, 195, 154, 155, 156, 157, 158, 86, 195,
178634 /* 1730 */ 195, 258, 195, 91, 291, 322, 195, 195, 195, 195,
178635 /* 1740 */ 195, 118, 195, 101, 195, 195, 195, 195, 238, 107,
178636 /* 1750 */ 108, 195, 183, 195, 195, 195, 290, 115, 195, 117,
178637 /* 1760 */ 118, 119, 244, 195, 122, 195, 195, 195, 195, 195,
178638 /* 1770 */ 195, 258, 258, 258, 258, 193, 245, 300, 216, 274,
178639 /* 1780 */ 247, 270, 270, 274, 296, 296, 248, 222, 262, 198,
178640 /* 1790 */ 262, 274, 61, 274, 248, 231, 154, 155, 156, 157,
178641 /* 1800 */ 158, 0, 1, 2, 247, 227, 5, 221, 221, 221,
178642 /* 1810 */ 142, 10, 11, 12, 13, 14, 262, 262, 17, 202,
178643 /* 1820 */ 300, 19, 20, 300, 22, 183, 247, 251, 251, 245,
178644 /* 1830 */ 202, 30, 38, 32, 202, 152, 151, 22, 36, 43,
178645 /* 1840 */ 236, 40, 18, 202, 239, 239, 18, 239, 239, 283,
178646 /* 1850 */ 201, 150, 236, 202, 236, 201, 159, 202, 248, 248,
178647 /* 1860 */ 248, 248, 60, 63, 201, 275, 273, 275, 273, 275,
178648 /* 1870 */ 22, 286, 71, 223, 72, 202, 223, 297, 297, 202,
178649 /* 1880 */ 79, 201, 116, 82, 220, 201, 220, 220, 65, 293,
178650 /* 1890 */ 292, 229, 22, 166, 127, 226, 24, 114, 226, 223,
178651 /* 1900 */ 99, 222, 202, 101, 285, 92, 220, 308, 83, 107,
178652 /* 1910 */ 108, 220, 220, 316, 220, 285, 268, 115, 229, 117,
178653 /* 1920 */ 118, 119, 223, 321, 122, 268, 149, 146, 22, 19,
178654 /* 1930 */ 20, 202, 22, 159, 282, 134, 321, 148, 280, 147,
178655 /* 1940 */ 139, 140, 252, 141, 25, 204, 36, 252, 13, 251,
178656 /* 1950 */ 196, 248, 250, 249, 196, 6, 154, 155, 156, 157,
178657 /* 1960 */ 158, 209, 194, 194, 163, 194, 306, 306, 303, 224,
178658 /* 1970 */ 60, 215, 215, 209, 215, 215, 215, 224, 216, 216,
178659 /* 1980 */ 4, 209, 72, 3, 22, 183, 164, 15, 23, 16,
178660 /* 1990 */ 23, 140, 152, 131, 25, 24, 143, 20, 16, 145,
178661 /* 2000 */ 1, 143, 131, 62, 131, 37, 54, 152, 54, 54,
178662 /* 2010 */ 54, 101, 131, 117, 1, 34, 142, 107, 108, 5,
178663 /* 2020 */ 22, 116, 162, 76, 41, 115, 69, 117, 118, 119,
178664 /* 2030 */ 1, 2, 122, 25, 5, 69, 142, 116, 20, 10,
178665 /* 2040 */ 11, 12, 13, 14, 24, 19, 17, 132, 5, 126,
178666 /* 2050 */ 22, 141, 68, 10, 11, 12, 13, 14, 22, 30,
178667 /* 2060 */ 17, 32, 22, 22, 154, 155, 156, 157, 158, 40,
178668 /* 2070 */ 23, 68, 60, 30, 24, 32, 97, 28, 22, 68,
178669 /* 2080 */ 23, 37, 34, 40, 150, 22, 25, 23, 23, 23,
178670 /* 2090 */ 22, 98, 142, 183, 23, 23, 34, 22, 25, 89,
178671 /* 2100 */ 71, 34, 117, 144, 34, 22, 76, 76, 79, 87,
178672 /* 2110 */ 34, 82, 34, 44, 71, 94, 34, 23, 25, 24,
178673 /* 2120 */ 34, 25, 79, 23, 23, 82, 23, 23, 99, 143,
178674 /* 2130 */ 143, 22, 25, 25, 23, 22, 11, 22, 22, 25,
178675 /* 2140 */ 23, 23, 99, 22, 22, 136, 142, 142, 142, 25,
178676 /* 2150 */ 23, 15, 1, 1, 323, 323, 323, 323, 323, 323,
178677 /* 2160 */ 323, 323, 323, 134, 323, 323, 323, 323, 139, 140,
178678 /* 2170 */ 323, 323, 323, 323, 323, 323, 323, 134, 323, 323,
178679 /* 2180 */ 323, 323, 139, 140, 323, 323, 323, 323, 323, 323,
178680 /* 2190 */ 323, 323, 163, 323, 323, 323, 323, 323, 323, 323,
178681 /* 2200 */ 323, 323, 323, 323, 323, 323, 163, 323, 323, 323,
178682 /* 2210 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178683 /* 2220 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178684 /* 2230 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178685 /* 2240 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178686 /* 2250 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178687 /* 2260 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178688 /* 2270 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178689 /* 2280 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178690 /* 2290 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178691 /* 2300 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178692 /* 2310 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178693 /* 2320 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178694 /* 2330 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
178695 /* 2340 */ 323, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178696 /* 2350 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178697 /* 2360 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178698 /* 2370 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178699 /* 2380 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
178700 /* 2390 */ 187, 187, 187, 187,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178701 };
178702 #define YY_SHIFT_COUNT (582)
178703 #define YY_SHIFT_MIN (0)
178704 #define YY_SHIFT_MAX (2152)
178705 static const unsigned short int yy_shift_ofst[] = {
178706 /* 0 */ 2029, 1801, 2043, 1380, 1380, 318, 271, 1496, 1569, 1642,
178707 /* 10 */ 702, 702, 702, 740, 318, 318, 318, 318, 318, 0,
178708 /* 20 */ 0, 216, 1177, 702, 702, 702, 702, 702, 702, 702,
178709 /* 30 */ 702, 702, 702, 702, 702, 702, 702, 702, 503, 503,
178710 /* 40 */ 111, 111, 217, 287, 348, 610, 610, 736, 736, 736,
178711 /* 50 */ 736, 40, 112, 320, 340, 445, 489, 593, 637, 741,
178712 /* 60 */ 785, 889, 909, 1023, 1043, 1157, 1177, 1177, 1177, 1177,
178713 /* 70 */ 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
178714 /* 80 */ 1177, 1177, 1177, 1177, 1197, 1177, 1301, 1321, 1321, 554,
178715 /* 90 */ 1802, 1910, 702, 702, 702, 702, 702, 702, 702, 702,
178716 /* 100 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178717 /* 110 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178718 /* 120 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178719 /* 130 */ 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
178720 /* 140 */ 702, 702, 138, 198, 198, 198, 198, 198, 198, 198,
178721 /* 150 */ 183, 99, 169, 549, 610, 151, 542, 610, 610, 1017,
178722 /* 160 */ 1017, 610, 1001, 350, 464, 464, 464, 586, 1, 1,
178723 /* 170 */ 2207, 2207, 854, 854, 854, 465, 694, 694, 694, 694,
178724 /* 180 */ 1096, 1096, 825, 549, 847, 904, 610, 610, 610, 610,
178725 /* 190 */ 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
178726 /* 200 */ 610, 610, 610, 610, 610, 488, 947, 947, 610, 1129,
178727 /* 210 */ 495, 495, 1139, 1139, 967, 967, 1173, 2207, 2207, 2207,
178728 /* 220 */ 2207, 2207, 2207, 2207, 617, 765, 765, 697, 444, 708,
178729 /* 230 */ 660, 745, 510, 663, 864, 610, 610, 610, 610, 610,
178730 /* 240 */ 610, 610, 610, 610, 610, 188, 610, 610, 610, 610,
178731 /* 250 */ 610, 610, 610, 610, 610, 610, 610, 610, 839, 839,
178732 /* 260 */ 839, 610, 610, 610, 1155, 610, 610, 610, 1119, 1247,
178733 /* 270 */ 610, 1353, 610, 610, 610, 610, 610, 610, 610, 610,
178734 /* 280 */ 1063, 494, 1101, 291, 291, 291, 291, 1319, 1101, 1101,
178735 /* 290 */ 775, 1221, 1375, 1452, 667, 1341, 1198, 1341, 1435, 1487,
178736 /* 300 */ 667, 667, 1487, 667, 1198, 1435, 777, 1011, 1423, 584,
178737 /* 310 */ 584, 584, 1273, 1273, 1273, 1273, 1471, 1471, 880, 1530,
178738 /* 320 */ 1190, 1095, 1731, 1731, 1668, 1668, 1794, 1794, 1668, 1683,
178739 /* 330 */ 1685, 1815, 1796, 1824, 1824, 1824, 1824, 1668, 1828, 1701,
178740 /* 340 */ 1685, 1685, 1701, 1815, 1796, 1701, 1796, 1701, 1668, 1828,
178741 /* 350 */ 1697, 1800, 1668, 1828, 1848, 1668, 1828, 1668, 1828, 1848,
178742 /* 360 */ 1766, 1766, 1766, 1823, 1870, 1870, 1848, 1766, 1767, 1766,
178743 /* 370 */ 1823, 1766, 1766, 1727, 1872, 1783, 1783, 1848, 1668, 1813,
178744 /* 380 */ 1813, 1825, 1825, 1777, 1781, 1906, 1668, 1774, 1777, 1789,
178745 /* 390 */ 1792, 1701, 1919, 1935, 1935, 1949, 1949, 1949, 2207, 2207,
178746 /* 400 */ 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207, 2207,
178747 /* 410 */ 2207, 2207, 2207, 69, 1032, 79, 357, 1377, 1206, 400,
178748 /* 420 */ 1525, 835, 332, 1540, 1437, 1539, 1536, 1548, 1583, 1620,
178749 /* 430 */ 1633, 1670, 1671, 1674, 1567, 1553, 1682, 1506, 1675, 1358,
178750 /* 440 */ 1607, 1589, 1678, 1681, 1624, 1687, 1688, 1283, 1561, 1693,
178751 /* 450 */ 1696, 1623, 1521, 1976, 1980, 1962, 1822, 1972, 1973, 1965,
178752 /* 460 */ 1967, 1851, 1840, 1862, 1969, 1969, 1971, 1853, 1977, 1854,
178753 /* 470 */ 1982, 1999, 1858, 1871, 1969, 1873, 1941, 1968, 1969, 1855,
178754 /* 480 */ 1952, 1954, 1955, 1956, 1881, 1896, 1981, 1874, 2013, 2014,
178755 /* 490 */ 1998, 1905, 1860, 1957, 2008, 1966, 1947, 1983, 1894, 1921,
178756 /* 500 */ 2020, 2018, 2026, 1915, 1923, 2028, 1984, 2036, 2040, 2047,
178757 /* 510 */ 2041, 2003, 2012, 2050, 1979, 2049, 2056, 2011, 2044, 2057,
178758 /* 520 */ 2048, 1934, 2063, 2064, 2065, 2061, 2066, 2068, 1993, 1950,
178759 /* 530 */ 2071, 2072, 1985, 2062, 2075, 1959, 2073, 2067, 2070, 2076,
178760 /* 540 */ 2078, 2010, 2030, 2022, 2069, 2031, 2021, 2082, 2094, 2083,
178761 /* 550 */ 2095, 2093, 2096, 2086, 1986, 1987, 2100, 2073, 2101, 2103,
178762 /* 560 */ 2104, 2109, 2107, 2108, 2111, 2113, 2125, 2115, 2116, 2117,
178763 /* 570 */ 2118, 2121, 2122, 2114, 2009, 2004, 2005, 2006, 2124, 2127,
178764 /* 580 */ 2136, 2151, 2152,
178765 };
178766 #define YY_REDUCE_COUNT (412)
 
 
178767 #define YY_REDUCE_MIN (-277)
178768 #define YY_REDUCE_MAX (1772)
178769 static const short yy_reduce_ofst[] = {
178770 /* 0 */ -67, 1252, -64, -178, -181, 160, 1071, 143, -184, 137,
178771 /* 10 */ 218, 220, 222, -174, 229, 268, 272, 275, 324, -208,
178772 /* 20 */ 242, -277, -39, 81, 537, 792, 810, 812, -189, 814,
178773 /* 30 */ 831, 163, 865, 944, 887, 840, 964, 1077, -187, 292,
178774 /* 40 */ -133, 274, 673, 558, 682, 795, 809, -238, -232, -238,
178775 /* 50 */ -232, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178776 /* 60 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178777 /* 70 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 329,
178778 /* 80 */ 329, 329, 329, 329, 329, 329, 329, 329, 329, 557,
178779 /* 90 */ 712, 949, 966, 969, 971, 979, 1097, 1099, 1103, 1142,
178780 /* 100 */ 1144, 1169, 1172, 1201, 1203, 1228, 1241, 1250, 1253, 1255,
178781 /* 110 */ 1261, 1266, 1271, 1282, 1291, 1308, 1310, 1312, 1322, 1328,
178782 /* 120 */ 1347, 1354, 1356, 1359, 1362, 1365, 1367, 1374, 1376, 1381,
178783 /* 130 */ 1401, 1403, 1406, 1412, 1414, 1417, 1421, 1428, 1447, 1449,
178784 /* 140 */ 1453, 1462, 329, 329, 329, 329, 329, 329, 329, 329,
178785 /* 150 */ 329, 329, 329, -22, -159, 475, -220, 756, 38, 501,
178786 /* 160 */ 841, 714, 329, 118, 337, 349, 363, -56, 329, 329,
178787 /* 170 */ 329, 329, -205, -205, -205, 687, -172, -130, -57, 790,
178788 /* 180 */ 397, 528, -271, 136, 596, 596, 90, 316, 522, 541,
178789 /* 190 */ -37, 715, 849, 977, 628, 856, 980, 991, 1081, 1102,
178790 /* 200 */ 1135, 1083, -162, 208, 1258, 794, -86, 159, 41, 1109,
178791 /* 210 */ 671, 852, 844, 932, 1175, 1254, 480, 1180, 100, 258,
178792 /* 220 */ 1265, 1268, 1216, 1287, -139, 317, 344, 63, 339, 423,
178793 /* 230 */ 563, 636, 676, 813, 908, 914, 950, 1078, 1084, 1098,
178794 /* 240 */ 1363, 1384, 1407, 1439, 1464, 411, 1527, 1534, 1535, 1537,
178795 /* 250 */ 1541, 1542, 1543, 1544, 1545, 1547, 1549, 1550, 990, 1164,
178796 /* 260 */ 1492, 1551, 1552, 1556, 1217, 1558, 1559, 1560, 1473, 1413,
178797 /* 270 */ 1563, 1510, 1568, 563, 1570, 1571, 1572, 1573, 1574, 1575,
178798 /* 280 */ 1443, 1466, 1518, 1513, 1514, 1515, 1516, 1217, 1518, 1518,
178799 /* 290 */ 1531, 1562, 1582, 1477, 1505, 1511, 1533, 1512, 1488, 1538,
178800 /* 300 */ 1509, 1517, 1546, 1519, 1557, 1489, 1565, 1564, 1578, 1586,
178801 /* 310 */ 1587, 1588, 1526, 1528, 1554, 1555, 1576, 1577, 1566, 1579,
178802 /* 320 */ 1584, 1591, 1520, 1523, 1617, 1628, 1580, 1581, 1632, 1585,
178803 /* 330 */ 1590, 1593, 1604, 1605, 1606, 1608, 1609, 1641, 1649, 1610,
178804 /* 340 */ 1592, 1594, 1611, 1595, 1616, 1612, 1618, 1613, 1651, 1654,
178805 /* 350 */ 1596, 1598, 1655, 1663, 1650, 1673, 1680, 1677, 1684, 1653,
178806 /* 360 */ 1664, 1666, 1667, 1662, 1669, 1672, 1676, 1686, 1679, 1691,
178807 /* 370 */ 1689, 1692, 1694, 1597, 1599, 1619, 1630, 1699, 1700, 1602,
178808 /* 380 */ 1615, 1648, 1657, 1690, 1698, 1658, 1729, 1652, 1695, 1702,
178809 /* 390 */ 1704, 1703, 1741, 1754, 1758, 1768, 1769, 1771, 1660, 1661,
178810 /* 400 */ 1665, 1752, 1756, 1757, 1759, 1760, 1764, 1745, 1753, 1762,
178811 /* 410 */ 1763, 1761, 1772,
 
178812 };
178813 static const YYACTIONTYPE yy_default[] = {
178814 /* 0 */ 1663, 1663, 1663, 1491, 1254, 1367, 1254, 1254, 1254, 1254,
178815 /* 10 */ 1491, 1491, 1491, 1254, 1254, 1254, 1254, 1254, 1254, 1397,
178816 /* 20 */ 1397, 1544, 1287, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178817 /* 30 */ 1254, 1254, 1254, 1254, 1254, 1490, 1254, 1254, 1254, 1254,
178818 /* 40 */ 1578, 1578, 1254, 1254, 1254, 1254, 1254, 1563, 1562, 1254,
178819 /* 50 */ 1254, 1254, 1406, 1254, 1413, 1254, 1254, 1254, 1254, 1254,
178820 /* 60 */ 1492, 1493, 1254, 1254, 1254, 1254, 1543, 1545, 1508, 1420,
178821 /* 70 */ 1419, 1418, 1417, 1526, 1385, 1411, 1404, 1408, 1487, 1488,
178822 /* 80 */ 1486, 1641, 1493, 1492, 1254, 1407, 1455, 1471, 1454, 1254,
178823 /* 90 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178824 /* 100 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178825 /* 110 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178826 /* 120 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178827 /* 130 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178828 /* 140 */ 1254, 1254, 1463, 1470, 1469, 1468, 1477, 1467, 1464, 1457,
178829 /* 150 */ 1456, 1458, 1459, 1278, 1254, 1275, 1329, 1254, 1254, 1254,
178830 /* 160 */ 1254, 1254, 1460, 1287, 1448, 1447, 1446, 1254, 1474, 1461,
178831 /* 170 */ 1473, 1472, 1551, 1615, 1614, 1509, 1254, 1254, 1254, 1254,
178832 /* 180 */ 1254, 1254, 1578, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178833 /* 190 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178834 /* 200 */ 1254, 1254, 1254, 1254, 1254, 1387, 1578, 1578, 1254, 1287,
178835 /* 210 */ 1578, 1578, 1388, 1388, 1283, 1283, 1391, 1558, 1358, 1358,
178836 /* 220 */ 1358, 1358, 1367, 1358, 1254, 1254, 1254, 1254, 1254, 1254,
178837 /* 230 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1548,
178838 /* 240 */ 1546, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178839 /* 250 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178840 /* 260 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1363, 1254,
178841 /* 270 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1608,
178842 /* 280 */ 1254, 1521, 1343, 1363, 1363, 1363, 1363, 1365, 1344, 1342,
178843 /* 290 */ 1357, 1288, 1261, 1655, 1423, 1412, 1364, 1412, 1652, 1410,
178844 /* 300 */ 1423, 1423, 1410, 1423, 1364, 1652, 1304, 1630, 1299, 1397,
178845 /* 310 */ 1397, 1397, 1387, 1387, 1387, 1387, 1391, 1391, 1489, 1364,
178846 /* 320 */ 1357, 1254, 1655, 1655, 1373, 1373, 1654, 1654, 1373, 1509,
178847 /* 330 */ 1638, 1432, 1332, 1338, 1338, 1338, 1338, 1373, 1272, 1410,
178848 /* 340 */ 1638, 1638, 1410, 1432, 1332, 1410, 1332, 1410, 1373, 1272,
178849 /* 350 */ 1525, 1649, 1373, 1272, 1499, 1373, 1272, 1373, 1272, 1499,
178850 /* 360 */ 1330, 1330, 1330, 1319, 1254, 1254, 1499, 1330, 1304, 1330,
178851 /* 370 */ 1319, 1330, 1330, 1596, 1254, 1503, 1503, 1499, 1373, 1588,
178852 /* 380 */ 1588, 1400, 1400, 1405, 1391, 1494, 1373, 1254, 1405, 1403,
178853 /* 390 */ 1401, 1410, 1322, 1611, 1611, 1607, 1607, 1607, 1660, 1660,
178854 /* 400 */ 1558, 1623, 1287, 1287, 1287, 1287, 1623, 1306, 1306, 1288,
178855 /* 410 */ 1288, 1287, 1623, 1254, 1254, 1254, 1254, 1254, 1254, 1618,
178856 /* 420 */ 1254, 1553, 1510, 1377, 1254, 1254, 1254, 1254, 1254, 1254,
178857 /* 430 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178858 /* 440 */ 1564, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178859 /* 450 */ 1254, 1254, 1437, 1254, 1257, 1555, 1254, 1254, 1254, 1254,
178860 /* 460 */ 1254, 1254, 1254, 1254, 1414, 1415, 1378, 1254, 1254, 1254,
178861 /* 470 */ 1254, 1254, 1254, 1254, 1429, 1254, 1254, 1254, 1424, 1254,
178862 /* 480 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1651, 1254, 1254,
178863 /* 490 */ 1254, 1254, 1254, 1254, 1524, 1523, 1254, 1254, 1375, 1254,
178864 /* 500 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178865 /* 510 */ 1254, 1254, 1302, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178866 /* 520 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178867 /* 530 */ 1254, 1254, 1254, 1254, 1254, 1254, 1402, 1254, 1254, 1254,
178868 /* 540 */ 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178869 /* 550 */ 1254, 1593, 1392, 1254, 1254, 1254, 1254, 1642, 1254, 1254,
178870 /* 560 */ 1254, 1254, 1352, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
178871 /* 570 */ 1254, 1254, 1254, 1634, 1346, 1438, 1254, 1441, 1276, 1254,
178872 /* 580 */ 1266, 1254, 1254,
 
 
178873 };
178874 /********** End of lemon-generated parsing tables *****************************/
178875
178876 /* The next table maps tokens (terminal symbols) into fallback tokens.
178877 ** If a construct like the following:
@@ -179456,11 +180217,11 @@
179456 /* 294 */ "trigger_cmd",
179457 /* 295 */ "trnm",
179458 /* 296 */ "tridxby",
179459 /* 297 */ "database_kw_opt",
179460 /* 298 */ "key_opt",
179461 /* 299 */ "add_column_fullname",
179462 /* 300 */ "kwcolumn_opt",
179463 /* 301 */ "create_vtab",
179464 /* 302 */ "vtabarglist",
179465 /* 303 */ "vtabarg",
179466 /* 304 */ "vtabargtoken",
@@ -179781,125 +180542,130 @@
179781 /* 289 */ "cmd ::= REINDEX",
179782 /* 290 */ "cmd ::= REINDEX nm dbnm",
179783 /* 291 */ "cmd ::= ANALYZE",
179784 /* 292 */ "cmd ::= ANALYZE nm dbnm",
179785 /* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
179786 /* 294 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
179787 /* 295 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
179788 /* 296 */ "add_column_fullname ::= fullname",
179789 /* 297 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
179790 /* 298 */ "cmd ::= create_vtab",
179791 /* 299 */ "cmd ::= create_vtab LP vtabarglist RP",
179792 /* 300 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
179793 /* 301 */ "vtabarg ::=",
179794 /* 302 */ "vtabargtoken ::= ANY",
179795 /* 303 */ "vtabargtoken ::= lp anylist RP",
179796 /* 304 */ "lp ::= LP",
179797 /* 305 */ "with ::= WITH wqlist",
179798 /* 306 */ "with ::= WITH RECURSIVE wqlist",
179799 /* 307 */ "wqas ::= AS",
179800 /* 308 */ "wqas ::= AS MATERIALIZED",
179801 /* 309 */ "wqas ::= AS NOT MATERIALIZED",
179802 /* 310 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
179803 /* 311 */ "withnm ::= nm",
179804 /* 312 */ "wqlist ::= wqitem",
179805 /* 313 */ "wqlist ::= wqlist COMMA wqitem",
179806 /* 314 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
179807 /* 315 */ "windowdefn ::= nm AS LP window RP",
179808 /* 316 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
179809 /* 317 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
179810 /* 318 */ "window ::= ORDER BY sortlist frame_opt",
179811 /* 319 */ "window ::= nm ORDER BY sortlist frame_opt",
179812 /* 320 */ "window ::= nm frame_opt",
179813 /* 321 */ "frame_opt ::=",
179814 /* 322 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
179815 /* 323 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
179816 /* 324 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
179817 /* 325 */ "frame_bound_s ::= frame_bound",
179818 /* 326 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
179819 /* 327 */ "frame_bound_e ::= frame_bound",
179820 /* 328 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
179821 /* 329 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
179822 /* 330 */ "frame_bound ::= CURRENT ROW",
179823 /* 331 */ "frame_exclude_opt ::=",
179824 /* 332 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
179825 /* 333 */ "frame_exclude ::= NO OTHERS",
179826 /* 334 */ "frame_exclude ::= CURRENT ROW",
179827 /* 335 */ "frame_exclude ::= GROUP|TIES",
179828 /* 336 */ "window_clause ::= WINDOW windowdefn_list",
179829 /* 337 */ "filter_over ::= filter_clause over_clause",
179830 /* 338 */ "filter_over ::= over_clause",
179831 /* 339 */ "filter_over ::= filter_clause",
179832 /* 340 */ "over_clause ::= OVER LP window RP",
179833 /* 341 */ "over_clause ::= OVER nm",
179834 /* 342 */ "filter_clause ::= FILTER LP WHERE expr RP",
179835 /* 343 */ "term ::= QNUMBER",
179836 /* 344 */ "input ::= cmdlist",
179837 /* 345 */ "cmdlist ::= cmdlist ecmd",
179838 /* 346 */ "cmdlist ::= ecmd",
179839 /* 347 */ "ecmd ::= SEMI",
179840 /* 348 */ "ecmd ::= cmdx SEMI",
179841 /* 349 */ "ecmd ::= explain cmdx SEMI",
179842 /* 350 */ "trans_opt ::=",
179843 /* 351 */ "trans_opt ::= TRANSACTION",
179844 /* 352 */ "trans_opt ::= TRANSACTION nm",
179845 /* 353 */ "savepoint_opt ::= SAVEPOINT",
179846 /* 354 */ "savepoint_opt ::=",
179847 /* 355 */ "cmd ::= create_table create_table_args",
179848 /* 356 */ "table_option_set ::= table_option",
179849 /* 357 */ "columnlist ::= columnlist COMMA columnname carglist",
179850 /* 358 */ "columnlist ::= columnname carglist",
179851 /* 359 */ "nm ::= ID|INDEXED|JOIN_KW",
179852 /* 360 */ "nm ::= STRING",
179853 /* 361 */ "typetoken ::= typename",
179854 /* 362 */ "typename ::= ID|STRING",
179855 /* 363 */ "signed ::= plus_num",
179856 /* 364 */ "signed ::= minus_num",
179857 /* 365 */ "carglist ::= carglist ccons",
179858 /* 366 */ "carglist ::=",
179859 /* 367 */ "ccons ::= NULL onconf",
179860 /* 368 */ "ccons ::= GENERATED ALWAYS AS generated",
179861 /* 369 */ "ccons ::= AS generated",
179862 /* 370 */ "conslist_opt ::= COMMA conslist",
179863 /* 371 */ "conslist ::= conslist tconscomma tcons",
179864 /* 372 */ "conslist ::= tcons",
179865 /* 373 */ "tconscomma ::=",
179866 /* 374 */ "defer_subclause_opt ::= defer_subclause",
179867 /* 375 */ "resolvetype ::= raisetype",
179868 /* 376 */ "selectnowith ::= oneselect",
179869 /* 377 */ "oneselect ::= values",
179870 /* 378 */ "sclp ::= selcollist COMMA",
179871 /* 379 */ "as ::= ID|STRING",
179872 /* 380 */ "indexed_opt ::= indexed_by",
179873 /* 381 */ "returning ::=",
179874 /* 382 */ "expr ::= term",
179875 /* 383 */ "likeop ::= LIKE_KW|MATCH",
179876 /* 384 */ "case_operand ::= expr",
179877 /* 385 */ "exprlist ::= nexprlist",
179878 /* 386 */ "nmnum ::= plus_num",
179879 /* 387 */ "nmnum ::= nm",
179880 /* 388 */ "nmnum ::= ON",
179881 /* 389 */ "nmnum ::= DELETE",
179882 /* 390 */ "nmnum ::= DEFAULT",
179883 /* 391 */ "plus_num ::= INTEGER|FLOAT",
179884 /* 392 */ "foreach_clause ::=",
179885 /* 393 */ "foreach_clause ::= FOR EACH ROW",
179886 /* 394 */ "trnm ::= nm",
179887 /* 395 */ "tridxby ::=",
179888 /* 396 */ "database_kw_opt ::= DATABASE",
179889 /* 397 */ "database_kw_opt ::=",
179890 /* 398 */ "kwcolumn_opt ::=",
179891 /* 399 */ "kwcolumn_opt ::= COLUMNKW",
179892 /* 400 */ "vtabarglist ::= vtabarg",
179893 /* 401 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
179894 /* 402 */ "vtabarg ::= vtabarg vtabargtoken",
179895 /* 403 */ "anylist ::=",
179896 /* 404 */ "anylist ::= anylist LP anylist RP",
179897 /* 405 */ "anylist ::= anylist ANY",
179898 /* 406 */ "with ::=",
179899 /* 407 */ "windowdefn_list ::= windowdefn",
179900 /* 408 */ "window ::= frame_opt",
 
 
 
 
 
179901 };
179902 #endif /* NDEBUG */
179903
179904
179905 #if YYGROWABLESTACK
@@ -180717,125 +181483,130 @@
180717 192, /* (289) cmd ::= REINDEX */
180718 192, /* (290) cmd ::= REINDEX nm dbnm */
180719 192, /* (291) cmd ::= ANALYZE */
180720 192, /* (292) cmd ::= ANALYZE nm dbnm */
180721 192, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
180722 192, /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
180723 192, /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
180724 299, /* (296) add_column_fullname ::= fullname */
180725 192, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
180726 192, /* (298) cmd ::= create_vtab */
180727 192, /* (299) cmd ::= create_vtab LP vtabarglist RP */
180728 301, /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
180729 303, /* (301) vtabarg ::= */
180730 304, /* (302) vtabargtoken ::= ANY */
180731 304, /* (303) vtabargtoken ::= lp anylist RP */
180732 305, /* (304) lp ::= LP */
180733 269, /* (305) with ::= WITH wqlist */
180734 269, /* (306) with ::= WITH RECURSIVE wqlist */
180735 308, /* (307) wqas ::= AS */
180736 308, /* (308) wqas ::= AS MATERIALIZED */
180737 308, /* (309) wqas ::= AS NOT MATERIALIZED */
180738 307, /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
180739 309, /* (311) withnm ::= nm */
180740 243, /* (312) wqlist ::= wqitem */
180741 243, /* (313) wqlist ::= wqlist COMMA wqitem */
180742 310, /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
180743 311, /* (315) windowdefn ::= nm AS LP window RP */
180744 312, /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
180745 312, /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
180746 312, /* (318) window ::= ORDER BY sortlist frame_opt */
180747 312, /* (319) window ::= nm ORDER BY sortlist frame_opt */
180748 312, /* (320) window ::= nm frame_opt */
180749 313, /* (321) frame_opt ::= */
180750 313, /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
180751 313, /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
180752 317, /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
180753 319, /* (325) frame_bound_s ::= frame_bound */
180754 319, /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
180755 320, /* (327) frame_bound_e ::= frame_bound */
180756 320, /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
180757 318, /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
180758 318, /* (330) frame_bound ::= CURRENT ROW */
180759 321, /* (331) frame_exclude_opt ::= */
180760 321, /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
180761 322, /* (333) frame_exclude ::= NO OTHERS */
180762 322, /* (334) frame_exclude ::= CURRENT ROW */
180763 322, /* (335) frame_exclude ::= GROUP|TIES */
180764 253, /* (336) window_clause ::= WINDOW windowdefn_list */
180765 276, /* (337) filter_over ::= filter_clause over_clause */
180766 276, /* (338) filter_over ::= over_clause */
180767 276, /* (339) filter_over ::= filter_clause */
180768 316, /* (340) over_clause ::= OVER LP window RP */
180769 316, /* (341) over_clause ::= OVER nm */
180770 315, /* (342) filter_clause ::= FILTER LP WHERE expr RP */
180771 218, /* (343) term ::= QNUMBER */
180772 187, /* (344) input ::= cmdlist */
180773 188, /* (345) cmdlist ::= cmdlist ecmd */
180774 188, /* (346) cmdlist ::= ecmd */
180775 189, /* (347) ecmd ::= SEMI */
180776 189, /* (348) ecmd ::= cmdx SEMI */
180777 189, /* (349) ecmd ::= explain cmdx SEMI */
180778 194, /* (350) trans_opt ::= */
180779 194, /* (351) trans_opt ::= TRANSACTION */
180780 194, /* (352) trans_opt ::= TRANSACTION nm */
180781 196, /* (353) savepoint_opt ::= SAVEPOINT */
180782 196, /* (354) savepoint_opt ::= */
180783 192, /* (355) cmd ::= create_table create_table_args */
180784 205, /* (356) table_option_set ::= table_option */
180785 203, /* (357) columnlist ::= columnlist COMMA columnname carglist */
180786 203, /* (358) columnlist ::= columnname carglist */
180787 195, /* (359) nm ::= ID|INDEXED|JOIN_KW */
180788 195, /* (360) nm ::= STRING */
180789 210, /* (361) typetoken ::= typename */
180790 211, /* (362) typename ::= ID|STRING */
180791 212, /* (363) signed ::= plus_num */
180792 212, /* (364) signed ::= minus_num */
180793 209, /* (365) carglist ::= carglist ccons */
180794 209, /* (366) carglist ::= */
180795 217, /* (367) ccons ::= NULL onconf */
180796 217, /* (368) ccons ::= GENERATED ALWAYS AS generated */
180797 217, /* (369) ccons ::= AS generated */
180798 204, /* (370) conslist_opt ::= COMMA conslist */
180799 230, /* (371) conslist ::= conslist tconscomma tcons */
180800 230, /* (372) conslist ::= tcons */
180801 231, /* (373) tconscomma ::= */
180802 235, /* (374) defer_subclause_opt ::= defer_subclause */
180803 237, /* (375) resolvetype ::= raisetype */
180804 241, /* (376) selectnowith ::= oneselect */
180805 242, /* (377) oneselect ::= values */
180806 257, /* (378) sclp ::= selcollist COMMA */
180807 258, /* (379) as ::= ID|STRING */
180808 267, /* (380) indexed_opt ::= indexed_by */
180809 275, /* (381) returning ::= */
180810 219, /* (382) expr ::= term */
180811 277, /* (383) likeop ::= LIKE_KW|MATCH */
180812 281, /* (384) case_operand ::= expr */
180813 264, /* (385) exprlist ::= nexprlist */
180814 287, /* (386) nmnum ::= plus_num */
180815 287, /* (387) nmnum ::= nm */
180816 287, /* (388) nmnum ::= ON */
180817 287, /* (389) nmnum ::= DELETE */
180818 287, /* (390) nmnum ::= DEFAULT */
180819 213, /* (391) plus_num ::= INTEGER|FLOAT */
180820 292, /* (392) foreach_clause ::= */
180821 292, /* (393) foreach_clause ::= FOR EACH ROW */
180822 295, /* (394) trnm ::= nm */
180823 296, /* (395) tridxby ::= */
180824 297, /* (396) database_kw_opt ::= DATABASE */
180825 297, /* (397) database_kw_opt ::= */
180826 300, /* (398) kwcolumn_opt ::= */
180827 300, /* (399) kwcolumn_opt ::= COLUMNKW */
180828 302, /* (400) vtabarglist ::= vtabarg */
180829 302, /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
180830 303, /* (402) vtabarg ::= vtabarg vtabargtoken */
180831 306, /* (403) anylist ::= */
180832 306, /* (404) anylist ::= anylist LP anylist RP */
180833 306, /* (405) anylist ::= anylist ANY */
180834 269, /* (406) with ::= */
180835 310, /* (407) windowdefn_list ::= windowdefn */
180836 312, /* (408) window ::= frame_opt */
 
 
 
 
 
180837 };
180838
180839 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
180840 ** of symbols on the right-hand side of that rule. */
180841 static const signed char yyRuleInfoNRhs[] = {
@@ -181131,125 +181902,130 @@
181131 -1, /* (289) cmd ::= REINDEX */
181132 -3, /* (290) cmd ::= REINDEX nm dbnm */
181133 -1, /* (291) cmd ::= ANALYZE */
181134 -3, /* (292) cmd ::= ANALYZE nm dbnm */
181135 -6, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
181136 -7, /* (294) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
181137 -6, /* (295) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
181138 -1, /* (296) add_column_fullname ::= fullname */
181139 -8, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
181140 -1, /* (298) cmd ::= create_vtab */
181141 -4, /* (299) cmd ::= create_vtab LP vtabarglist RP */
181142 -8, /* (300) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181143 0, /* (301) vtabarg ::= */
181144 -1, /* (302) vtabargtoken ::= ANY */
181145 -3, /* (303) vtabargtoken ::= lp anylist RP */
181146 -1, /* (304) lp ::= LP */
181147 -2, /* (305) with ::= WITH wqlist */
181148 -3, /* (306) with ::= WITH RECURSIVE wqlist */
181149 -1, /* (307) wqas ::= AS */
181150 -2, /* (308) wqas ::= AS MATERIALIZED */
181151 -3, /* (309) wqas ::= AS NOT MATERIALIZED */
181152 -6, /* (310) wqitem ::= withnm eidlist_opt wqas LP select RP */
181153 -1, /* (311) withnm ::= nm */
181154 -1, /* (312) wqlist ::= wqitem */
181155 -3, /* (313) wqlist ::= wqlist COMMA wqitem */
181156 -3, /* (314) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181157 -5, /* (315) windowdefn ::= nm AS LP window RP */
181158 -5, /* (316) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181159 -6, /* (317) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181160 -4, /* (318) window ::= ORDER BY sortlist frame_opt */
181161 -5, /* (319) window ::= nm ORDER BY sortlist frame_opt */
181162 -2, /* (320) window ::= nm frame_opt */
181163 0, /* (321) frame_opt ::= */
181164 -3, /* (322) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181165 -6, /* (323) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181166 -1, /* (324) range_or_rows ::= RANGE|ROWS|GROUPS */
181167 -1, /* (325) frame_bound_s ::= frame_bound */
181168 -2, /* (326) frame_bound_s ::= UNBOUNDED PRECEDING */
181169 -1, /* (327) frame_bound_e ::= frame_bound */
181170 -2, /* (328) frame_bound_e ::= UNBOUNDED FOLLOWING */
181171 -2, /* (329) frame_bound ::= expr PRECEDING|FOLLOWING */
181172 -2, /* (330) frame_bound ::= CURRENT ROW */
181173 0, /* (331) frame_exclude_opt ::= */
181174 -2, /* (332) frame_exclude_opt ::= EXCLUDE frame_exclude */
181175 -2, /* (333) frame_exclude ::= NO OTHERS */
181176 -2, /* (334) frame_exclude ::= CURRENT ROW */
181177 -1, /* (335) frame_exclude ::= GROUP|TIES */
181178 -2, /* (336) window_clause ::= WINDOW windowdefn_list */
181179 -2, /* (337) filter_over ::= filter_clause over_clause */
181180 -1, /* (338) filter_over ::= over_clause */
181181 -1, /* (339) filter_over ::= filter_clause */
181182 -4, /* (340) over_clause ::= OVER LP window RP */
181183 -2, /* (341) over_clause ::= OVER nm */
181184 -5, /* (342) filter_clause ::= FILTER LP WHERE expr RP */
181185 -1, /* (343) term ::= QNUMBER */
181186 -1, /* (344) input ::= cmdlist */
181187 -2, /* (345) cmdlist ::= cmdlist ecmd */
181188 -1, /* (346) cmdlist ::= ecmd */
181189 -1, /* (347) ecmd ::= SEMI */
181190 -2, /* (348) ecmd ::= cmdx SEMI */
181191 -3, /* (349) ecmd ::= explain cmdx SEMI */
181192 0, /* (350) trans_opt ::= */
181193 -1, /* (351) trans_opt ::= TRANSACTION */
181194 -2, /* (352) trans_opt ::= TRANSACTION nm */
181195 -1, /* (353) savepoint_opt ::= SAVEPOINT */
181196 0, /* (354) savepoint_opt ::= */
181197 -2, /* (355) cmd ::= create_table create_table_args */
181198 -1, /* (356) table_option_set ::= table_option */
181199 -4, /* (357) columnlist ::= columnlist COMMA columnname carglist */
181200 -2, /* (358) columnlist ::= columnname carglist */
181201 -1, /* (359) nm ::= ID|INDEXED|JOIN_KW */
181202 -1, /* (360) nm ::= STRING */
181203 -1, /* (361) typetoken ::= typename */
181204 -1, /* (362) typename ::= ID|STRING */
181205 -1, /* (363) signed ::= plus_num */
181206 -1, /* (364) signed ::= minus_num */
181207 -2, /* (365) carglist ::= carglist ccons */
181208 0, /* (366) carglist ::= */
181209 -2, /* (367) ccons ::= NULL onconf */
181210 -4, /* (368) ccons ::= GENERATED ALWAYS AS generated */
181211 -2, /* (369) ccons ::= AS generated */
181212 -2, /* (370) conslist_opt ::= COMMA conslist */
181213 -3, /* (371) conslist ::= conslist tconscomma tcons */
181214 -1, /* (372) conslist ::= tcons */
181215 0, /* (373) tconscomma ::= */
181216 -1, /* (374) defer_subclause_opt ::= defer_subclause */
181217 -1, /* (375) resolvetype ::= raisetype */
181218 -1, /* (376) selectnowith ::= oneselect */
181219 -1, /* (377) oneselect ::= values */
181220 -2, /* (378) sclp ::= selcollist COMMA */
181221 -1, /* (379) as ::= ID|STRING */
181222 -1, /* (380) indexed_opt ::= indexed_by */
181223 0, /* (381) returning ::= */
181224 -1, /* (382) expr ::= term */
181225 -1, /* (383) likeop ::= LIKE_KW|MATCH */
181226 -1, /* (384) case_operand ::= expr */
181227 -1, /* (385) exprlist ::= nexprlist */
181228 -1, /* (386) nmnum ::= plus_num */
181229 -1, /* (387) nmnum ::= nm */
181230 -1, /* (388) nmnum ::= ON */
181231 -1, /* (389) nmnum ::= DELETE */
181232 -1, /* (390) nmnum ::= DEFAULT */
181233 -1, /* (391) plus_num ::= INTEGER|FLOAT */
181234 0, /* (392) foreach_clause ::= */
181235 -3, /* (393) foreach_clause ::= FOR EACH ROW */
181236 -1, /* (394) trnm ::= nm */
181237 0, /* (395) tridxby ::= */
181238 -1, /* (396) database_kw_opt ::= DATABASE */
181239 0, /* (397) database_kw_opt ::= */
181240 0, /* (398) kwcolumn_opt ::= */
181241 -1, /* (399) kwcolumn_opt ::= COLUMNKW */
181242 -1, /* (400) vtabarglist ::= vtabarg */
181243 -3, /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */
181244 -2, /* (402) vtabarg ::= vtabarg vtabargtoken */
181245 0, /* (403) anylist ::= */
181246 -4, /* (404) anylist ::= anylist LP anylist RP */
181247 -2, /* (405) anylist ::= anylist ANY */
181248 0, /* (406) with ::= */
181249 -1, /* (407) windowdefn_list ::= windowdefn */
181250 -1, /* (408) window ::= frame_opt */
 
 
 
 
 
181251 };
181252
181253 static void yy_accept(yyParser*); /* Forward Declaration */
181254
181255 /*
@@ -181305,11 +182081,11 @@
181305 {yymsp[1].minor.yy502 = TK_DEFERRED;}
181306 break;
181307 case 5: /* transtype ::= DEFERRED */
181308 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
181309 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
181310 case 324: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==324);
181311 {yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/}
181312 break;
181313 case 8: /* cmd ::= COMMIT|END trans_opt */
181314 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
181315 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -182576,177 +183352,206 @@
182576 case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
182577 {
182578 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy563,&yymsp[0].minor.yy0);
182579 }
182580 break;
182581 case 294: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
182582 {
182583 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
182584 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
182585 }
182586 break;
182587 case 295: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
182588 {
182589 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
182590 }
182591 break;
182592 case 296: /* add_column_fullname ::= fullname */
182593 {
182594 disableLookaside(pParse);
182595 sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy563);
 
 
 
 
 
 
 
182596 }
182597 break;
182598 case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
182599 {
182600 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy563, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
182601 }
182602 break;
182603 case 298: /* cmd ::= create_vtab */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182604 {sqlite3VtabFinishParse(pParse,0);}
182605 break;
182606 case 299: /* cmd ::= create_vtab LP vtabarglist RP */
182607 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
182608 break;
182609 case 300: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
182610 {
182611 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502);
182612 }
182613 break;
182614 case 301: /* vtabarg ::= */
182615 {sqlite3VtabArgInit(pParse);}
182616 break;
182617 case 302: /* vtabargtoken ::= ANY */
182618 case 303: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==303);
182619 case 304: /* lp ::= LP */ yytestcase(yyruleno==304);
182620 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
182621 break;
182622 case 305: /* with ::= WITH wqlist */
182623 case 306: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==306);
182624 { sqlite3WithPush(pParse, yymsp[0].minor.yy125, 1); }
182625 break;
182626 case 307: /* wqas ::= AS */
182627 {yymsp[0].minor.yy444 = M10d_Any;}
182628 break;
182629 case 308: /* wqas ::= AS MATERIALIZED */
182630 {yymsp[-1].minor.yy444 = M10d_Yes;}
182631 break;
182632 case 309: /* wqas ::= AS NOT MATERIALIZED */
182633 {yymsp[-2].minor.yy444 = M10d_No;}
182634 break;
182635 case 310: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
182636 {
182637 yymsp[-5].minor.yy361 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy402, yymsp[-1].minor.yy637, yymsp[-3].minor.yy444); /*A-overwrites-X*/
182638 }
182639 break;
182640 case 311: /* withnm ::= nm */
182641 {pParse->bHasWith = 1;}
182642 break;
182643 case 312: /* wqlist ::= wqitem */
182644 {
182645 yymsp[0].minor.yy125 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy361); /*A-overwrites-X*/
182646 }
182647 break;
182648 case 313: /* wqlist ::= wqlist COMMA wqitem */
182649 {
182650 yymsp[-2].minor.yy125 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy125, yymsp[0].minor.yy361);
182651 }
182652 break;
182653 case 314: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
182654 {
182655 assert( yymsp[0].minor.yy483!=0 );
182656 sqlite3WindowChain(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy483);
182657 yymsp[0].minor.yy483->pNextWin = yymsp[-2].minor.yy483;
182658 yylhsminor.yy483 = yymsp[0].minor.yy483;
182659 }
182660 yymsp[-2].minor.yy483 = yylhsminor.yy483;
182661 break;
182662 case 315: /* windowdefn ::= nm AS LP window RP */
182663 {
182664 if( ALWAYS(yymsp[-1].minor.yy483) ){
182665 yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
182666 }
182667 yylhsminor.yy483 = yymsp[-1].minor.yy483;
182668 }
182669 yymsp[-4].minor.yy483 = yylhsminor.yy483;
182670 break;
182671 case 316: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
182672 {
182673 yymsp[-4].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, 0);
182674 }
182675 break;
182676 case 317: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
182677 {
182678 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, &yymsp[-5].minor.yy0);
182679 }
182680 yymsp[-5].minor.yy483 = yylhsminor.yy483;
182681 break;
182682 case 318: /* window ::= ORDER BY sortlist frame_opt */
182683 {
182684 yymsp[-3].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, 0);
182685 }
182686 break;
182687 case 319: /* window ::= nm ORDER BY sortlist frame_opt */
182688 {
182689 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0);
182690 }
182691 yymsp[-4].minor.yy483 = yylhsminor.yy483;
182692 break;
182693 case 320: /* window ::= nm frame_opt */
182694 {
182695 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, 0, &yymsp[-1].minor.yy0);
182696 }
182697 yymsp[-1].minor.yy483 = yylhsminor.yy483;
182698 break;
182699 case 321: /* frame_opt ::= */
182700 {
182701 yymsp[1].minor.yy483 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
182702 }
182703 break;
182704 case 322: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
182705 {
182706 yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy502, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy444);
182707 }
182708 yymsp[-2].minor.yy483 = yylhsminor.yy483;
182709 break;
182710 case 323: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
182711 {
182712 yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy502, yymsp[-3].minor.yy205.eType, yymsp[-3].minor.yy205.pExpr, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, yymsp[0].minor.yy444);
182713 }
182714 yymsp[-5].minor.yy483 = yylhsminor.yy483;
182715 break;
182716 case 325: /* frame_bound_s ::= frame_bound */
182717 case 327: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==327);
182718 {yylhsminor.yy205 = yymsp[0].minor.yy205;}
182719 yymsp[0].minor.yy205 = yylhsminor.yy205;
182720 break;
182721 case 326: /* frame_bound_s ::= UNBOUNDED PRECEDING */
182722 case 328: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==328);
182723 case 330: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==330);
182724 {yylhsminor.yy205.eType = yymsp[-1].major; yylhsminor.yy205.pExpr = 0;}
182725 yymsp[-1].minor.yy205 = yylhsminor.yy205;
182726 break;
182727 case 329: /* frame_bound ::= expr PRECEDING|FOLLOWING */
182728 {yylhsminor.yy205.eType = yymsp[0].major; yylhsminor.yy205.pExpr = yymsp[-1].minor.yy590;}
182729 yymsp[-1].minor.yy205 = yylhsminor.yy205;
182730 break;
182731 case 331: /* frame_exclude_opt ::= */
182732 {yymsp[1].minor.yy444 = 0;}
182733 break;
182734 case 332: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
182735 {yymsp[-1].minor.yy444 = yymsp[0].minor.yy444;}
182736 break;
182737 case 333: /* frame_exclude ::= NO OTHERS */
182738 case 334: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==334);
182739 {yymsp[-1].minor.yy444 = yymsp[-1].major; /*A-overwrites-X*/}
182740 break;
182741 case 335: /* frame_exclude ::= GROUP|TIES */
182742 {yymsp[0].minor.yy444 = yymsp[0].major; /*A-overwrites-X*/}
182743 break;
182744 case 336: /* window_clause ::= WINDOW windowdefn_list */
182745 { yymsp[-1].minor.yy483 = yymsp[0].minor.yy483; }
182746 break;
182747 case 337: /* filter_over ::= filter_clause over_clause */
182748 {
182749 if( yymsp[0].minor.yy483 ){
182750 yymsp[0].minor.yy483->pFilter = yymsp[-1].minor.yy590;
182751 }else{
182752 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
@@ -182753,17 +183558,17 @@
182753 }
182754 yylhsminor.yy483 = yymsp[0].minor.yy483;
182755 }
182756 yymsp[-1].minor.yy483 = yylhsminor.yy483;
182757 break;
182758 case 338: /* filter_over ::= over_clause */
182759 {
182760 yylhsminor.yy483 = yymsp[0].minor.yy483;
182761 }
182762 yymsp[0].minor.yy483 = yylhsminor.yy483;
182763 break;
182764 case 339: /* filter_over ::= filter_clause */
182765 {
182766 yylhsminor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
182767 if( yylhsminor.yy483 ){
182768 yylhsminor.yy483->eFrmType = TK_FILTER;
182769 yylhsminor.yy483->pFilter = yymsp[0].minor.yy590;
@@ -182771,100 +183576,100 @@
182771 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy590);
182772 }
182773 }
182774 yymsp[0].minor.yy483 = yylhsminor.yy483;
182775 break;
182776 case 340: /* over_clause ::= OVER LP window RP */
182777 {
182778 yymsp[-3].minor.yy483 = yymsp[-1].minor.yy483;
182779 assert( yymsp[-3].minor.yy483!=0 );
182780 }
182781 break;
182782 case 341: /* over_clause ::= OVER nm */
182783 {
182784 yymsp[-1].minor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
182785 if( yymsp[-1].minor.yy483 ){
182786 yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
182787 }
182788 }
182789 break;
182790 case 342: /* filter_clause ::= FILTER LP WHERE expr RP */
182791 { yymsp[-4].minor.yy590 = yymsp[-1].minor.yy590; }
182792 break;
182793 case 343: /* term ::= QNUMBER */
182794 {
182795 yylhsminor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
182796 sqlite3DequoteNumber(pParse, yylhsminor.yy590);
182797 }
182798 yymsp[0].minor.yy590 = yylhsminor.yy590;
182799 break;
182800 default:
182801 /* (344) input ::= cmdlist */ yytestcase(yyruleno==344);
182802 /* (345) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==345);
182803 /* (346) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=346);
182804 /* (347) ecmd ::= SEMI */ yytestcase(yyruleno==347);
182805 /* (348) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==348);
182806 /* (349) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=349);
182807 /* (350) trans_opt ::= */ yytestcase(yyruleno==350);
182808 /* (351) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==351);
182809 /* (352) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==352);
182810 /* (353) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==353);
182811 /* (354) savepoint_opt ::= */ yytestcase(yyruleno==354);
182812 /* (355) cmd ::= create_table create_table_args */ yytestcase(yyruleno==355);
182813 /* (356) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=356);
182814 /* (357) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==357);
182815 /* (358) columnlist ::= columnname carglist */ yytestcase(yyruleno==358);
182816 /* (359) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==359);
182817 /* (360) nm ::= STRING */ yytestcase(yyruleno==360);
182818 /* (361) typetoken ::= typename */ yytestcase(yyruleno==361);
182819 /* (362) typename ::= ID|STRING */ yytestcase(yyruleno==362);
182820 /* (363) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=363);
182821 /* (364) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=364);
182822 /* (365) carglist ::= carglist ccons */ yytestcase(yyruleno==365);
182823 /* (366) carglist ::= */ yytestcase(yyruleno==366);
182824 /* (367) ccons ::= NULL onconf */ yytestcase(yyruleno==367);
182825 /* (368) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==368);
182826 /* (369) ccons ::= AS generated */ yytestcase(yyruleno==369);
182827 /* (370) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==370);
182828 /* (371) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==371);
182829 /* (372) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=372);
182830 /* (373) tconscomma ::= */ yytestcase(yyruleno==373);
182831 /* (374) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=374);
182832 /* (375) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=375);
182833 /* (376) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=376);
182834 /* (377) oneselect ::= values */ yytestcase(yyruleno==377);
182835 /* (378) sclp ::= selcollist COMMA */ yytestcase(yyruleno==378);
182836 /* (379) as ::= ID|STRING */ yytestcase(yyruleno==379);
182837 /* (380) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=380);
182838 /* (381) returning ::= */ yytestcase(yyruleno==381);
182839 /* (382) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=382);
182840 /* (383) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==383);
182841 /* (384) case_operand ::= expr */ yytestcase(yyruleno==384);
182842 /* (385) exprlist ::= nexprlist */ yytestcase(yyruleno==385);
182843 /* (386) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=386);
182844 /* (387) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=387);
182845 /* (388) nmnum ::= ON */ yytestcase(yyruleno==388);
182846 /* (389) nmnum ::= DELETE */ yytestcase(yyruleno==389);
182847 /* (390) nmnum ::= DEFAULT */ yytestcase(yyruleno==390);
182848 /* (391) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==391);
182849 /* (392) foreach_clause ::= */ yytestcase(yyruleno==392);
182850 /* (393) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==393);
182851 /* (394) trnm ::= nm */ yytestcase(yyruleno==394);
182852 /* (395) tridxby ::= */ yytestcase(yyruleno==395);
182853 /* (396) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==396);
182854 /* (397) database_kw_opt ::= */ yytestcase(yyruleno==397);
182855 /* (398) kwcolumn_opt ::= */ yytestcase(yyruleno==398);
182856 /* (399) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==399);
182857 /* (400) vtabarglist ::= vtabarg */ yytestcase(yyruleno==400);
182858 /* (401) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==401);
182859 /* (402) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==402);
182860 /* (403) anylist ::= */ yytestcase(yyruleno==403);
182861 /* (404) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==404);
182862 /* (405) anylist ::= anylist ANY */ yytestcase(yyruleno==405);
182863 /* (406) with ::= */ yytestcase(yyruleno==406);
182864 /* (407) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=407);
182865 /* (408) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=408);
182866 break;
182867 /********** End reduce actions ************************************************/
182868 };
182869 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
182870 yygoto = yyRuleInfoLhs[yyruleno];
@@ -260458,11 +261263,11 @@
260458 int nArg, /* Number of args */
260459 sqlite3_value **apUnused /* Function arguments */
260460 ){
260461 assert( nArg==0 );
260462 UNUSED_PARAM2(nArg, apUnused);
260463 sqlite3_result_text(pCtx, "fts5: 2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901", -1, SQLITE_TRANSIENT);
260464 }
260465
260466 /*
260467 ** Implementation of fts5_locale(LOCALE, TEXT) function.
260468 **
260469
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** 8a230e4da230a7b103749b069a99a58e4c22 with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS ""
475 #define SQLITE_SCM_DATETIME "2025-11-21T17:30:44.138Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -20881,14 +20881,15 @@
20881 } InitData;
20882
20883 /*
20884 ** Allowed values for mInitFlags
20885 */
20886 #define INITFLAG_AlterMask 0x0007 /* Types of ALTER */
20887 #define INITFLAG_AlterRename 0x0001 /* Reparse after a RENAME */
20888 #define INITFLAG_AlterDrop 0x0002 /* Reparse after a DROP COLUMN */
20889 #define INITFLAG_AlterAdd 0x0003 /* Reparse after an ADD COLUMN */
20890 #define INITFLAG_AlterDropCons 0x0004 /* Reparse after an ADD COLUMN */
20891
20892 /* Tuning parameters are set using SQLITE_TESTCTRL_TUNE and are controlled
20893 ** on debug-builds of the CLI using ".testctrl tune ID VALUE". Tuning
20894 ** parameters are for temporary use during development, to help find
20895 ** optimal values for parameters in the query planner. The should not
@@ -22065,10 +22066,13 @@
22066 SQLITE_PRIVATE void sqlite3RootPageMoved(sqlite3*, int, Pgno, Pgno);
22067 SQLITE_PRIVATE void sqlite3Reindex(Parse*, Token*, Token*);
22068 SQLITE_PRIVATE void sqlite3AlterFunctions(void);
22069 SQLITE_PRIVATE void sqlite3AlterRenameTable(Parse*, SrcList*, Token*);
22070 SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
22071 SQLITE_PRIVATE void sqlite3AlterDropConstraint(Parse*,SrcList*,Token*,Token*);
22072 SQLITE_PRIVATE void sqlite3AlterAddConstraint(Parse*,SrcList*,Token*,Token*,const char*,int);
22073 SQLITE_PRIVATE void sqlite3AlterSetNotNull(Parse*, SrcList*, Token*, Token*);
22074 SQLITE_PRIVATE i64 sqlite3GetToken(const unsigned char *, int *);
22075 SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
22076 SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
22077 SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
22078 SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
@@ -95332,10 +95336,11 @@
95336 #ifndef SQLITE_HWTIME_H
95337 #define SQLITE_HWTIME_H
95338
95339 #if defined(_MSC_VER) && defined(_WIN32)
95340
95341 /* #include "windows.h" */
95342 #include <profileapi.h>
95343
95344 __inline sqlite3_uint64 sqlite3Hwtime(void){
95345 LARGE_INTEGER tm;
95346 QueryPerformanceCounter(&tm);
@@ -119669,11 +119674,11 @@
119674 sqlite3 *db = pParse->db;
119675
119676 /* Look up the table being altered. */
119677 assert( pParse->pNewTable==0 );
119678 assert( sqlite3BtreeHoldsAllMutexes(db) );
119679 if( NEVER(db->mallocFailed) ) goto exit_begin_add_column;
119680 pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
119681 if( !pTab ) goto exit_begin_add_column;
119682
119683 #ifndef SQLITE_OMIT_VIRTUALTABLE
119684 if( IsVirtual(pTab) ){
@@ -119741,11 +119746,11 @@
119746 ** it loads an error message into pParse and returns non-zero.
119747 **
119748 ** Or, if pTab is not a view or virtual table, zero is returned.
119749 */
119750 #if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE)
119751 static int isRealTable(Parse *pParse, Table *pTab, int iOp){
119752 const char *zType = 0;
119753 #ifndef SQLITE_OMIT_VIEW
119754 if( IsView(pTab) ){
119755 zType = "view";
119756 }
@@ -119754,13 +119759,16 @@
119759 if( IsVirtual(pTab) ){
119760 zType = "virtual table";
119761 }
119762 #endif
119763 if( zType ){
119764 const char *azMsg[] = {
119765 "rename columns of", "drop column from", "edit constraints of"
119766 };
119767 assert( iOp>=0 && iOp<ArraySize(azMsg) );
119768 sqlite3ErrorMsg(pParse, "cannot %s %s \"%s\"",
119769 azMsg[iOp], zType, pTab->zName
 
119770 );
119771 return 1;
119772 }
119773 return 0;
119774 }
@@ -120226,10 +120234,29 @@
120234 for(pp=&pCtx->pList; *pp!=pBest; pp=&(*pp)->pNext);
120235 *pp = pBest->pNext;
120236
120237 return pBest;
120238 }
120239
120240 /*
120241 ** Set the error message of the context passed as the first argument to
120242 ** the result of formatting zFmt using printf() style formatting.
120243 */
120244 static void errorMPrintf(sqlite3_context *pCtx, const char *zFmt, ...){
120245 sqlite3 *db = sqlite3_context_db_handle(pCtx);
120246 char *zErr = 0;
120247 va_list ap;
120248 va_start(ap, zFmt);
120249 zErr = sqlite3VMPrintf(db, zFmt, ap);
120250 va_end(ap);
120251 if( zErr ){
120252 sqlite3_result_error(pCtx, zErr, -1);
120253 sqlite3DbFree(db, zErr);
120254 }else{
120255 sqlite3_result_error_nomem(pCtx);
120256 }
120257 }
120258
120259 /*
120260 ** An error occurred while parsing or otherwise processing a database
120261 ** object (either pParse->pNewTable, pNewIndex or pNewTrigger) as part of an
120262 ** ALTER TABLE RENAME COLUMN program. The error message emitted by the
@@ -121490,10 +121517,700 @@
121517
121518 exit_drop_column:
121519 sqlite3DbFree(db, zCol);
121520 sqlite3SrcListDelete(db, pSrc);
121521 }
121522
121523 /*
121524 ** Return the number of bytes of leading whitespace/comments in string z[].
121525 */
121526 static int getWhitespace(const u8 *z){
121527 int nRet = 0;
121528 while( 1 ){
121529 int t = 0;
121530 int n = sqlite3GetToken(&z[nRet], &t);
121531 if( t!=TK_SPACE && t!=TK_COMMENT ) break;
121532 nRet += n;
121533 }
121534 return nRet;
121535 }
121536
121537
121538 /*
121539 ** Return the number of bytes until the end of the next non-whitespace and
121540 ** non-comment token. For the purpose of this function, a "(" token includes
121541 ** all of the bytes through and including the matching ")", or until the
121542 ** first illegal token, whichever comes first.
121543 **
121544 ** Write the token type into *piToken.
121545 **
121546 ** The value returned is the number of bytes in the token itself plus
121547 ** the number of bytes of leading whitespace and comments skipped plus
121548 ** all bytes through the next matching ")" if the token is TK_LP.
121549 **
121550 ** Example: (Note: '.' used in place of '*' in the example z[] text)
121551 **
121552 ** ,--------- *piToken := TK_RP
121553 ** v
121554 ** z[] = " /.comment./ --comment\n (two three four) five"
121555 ** | |
121556 ** |<-------------------------------------->|
121557 ** |
121558 ** `--- return value
121559 */
121560 static int getConstraintToken(const u8 *z, int *piToken){
121561 int iOff = 0;
121562 int t = 0;
121563 do {
121564 iOff += sqlite3GetToken(&z[iOff], &t);
121565 }while( t==TK_SPACE || t==TK_COMMENT );
121566
121567 *piToken = t;
121568
121569 if( t==TK_LP ){
121570 int nNest = 1;
121571 while( nNest>0 ){
121572 iOff += sqlite3GetToken(&z[iOff], &t);
121573 if( t==TK_LP ){
121574 nNest++;
121575 }else if( t==TK_RP ){
121576 t = TK_LP;
121577 nNest--;
121578 }else if( t==TK_ILLEGAL ){
121579 break;
121580 }
121581 }
121582 }
121583
121584 *piToken = t;
121585 return iOff;
121586 }
121587
121588 /*
121589 ** Argument z points into the body of a constraint - specifically the
121590 ** second token of the constraint definition. For a named constraint,
121591 ** z points to the first token past the CONSTRAINT keyword. For an
121592 ** unnamed NOT NULL constraint, z points to the first byte past the NOT
121593 ** keyword.
121594 **
121595 ** Return the number of bytes until the end of the constraint.
121596 */
121597 static int getConstraint(const u8 *z){
121598 int iOff = 0;
121599 int t = 0;
121600
121601 /* Now, the current constraint proceeds until the next occurence of one
121602 ** of the following tokens:
121603 **
121604 ** CONSTRAINT, PRIMARY, NOT, UNIQUE, CHECK, DEFAULT,
121605 ** COLLATE, REFERENCES, FOREIGN, GENERATED, AS, RP, or COMMA
121606 **
121607 ** Also exit the loop if ILLEGAL turns up.
121608 */
121609 while( 1 ){
121610 int n = getConstraintToken(&z[iOff], &t);
121611 if( t==TK_CONSTRAINT || t==TK_PRIMARY || t==TK_NOT || t==TK_UNIQUE
121612 || t==TK_CHECK || t==TK_DEFAULT || t==TK_COLLATE || t==TK_REFERENCES
121613 || t==TK_FOREIGN || t==TK_RP || t==TK_COMMA || t==TK_ILLEGAL
121614 || t==TK_AS || t==TK_GENERATED
121615 ){
121616 break;
121617 }
121618 iOff += n;
121619 }
121620
121621 return iOff;
121622 }
121623
121624 /*
121625 ** Compare two constraint names.
121626 **
121627 ** Summary: *pRes := zQuote != zCmp
121628 **
121629 ** Details:
121630 ** Compare the (possibly quoted) constraint name zQuote[0..nQuote-1]
121631 ** against zCmp[]. Write zero into *pRes if they are the same and
121632 ** non-zero if they differ. Normally return SQLITE_OK, except if there
121633 ** is an OOM, set the OOM error condition on ctx and return SQLITE_NOMEM.
121634 */
121635 static int quotedCompare(
121636 sqlite3_context *ctx, /* Function context on which to report errors */
121637 const u8 *zQuote, /* Possibly quoted text. Not zero-terminated. */
121638 int nQuote, /* Length of zQuote in bytes */
121639 const u8 *zCmp, /* Zero-terminated, unquoted name to compare against */
121640 int *pRes /* OUT: Set to 0 if equal, non-zero if unequal */
121641 ){
121642 char *zCopy = 0; /* De-quoted, zero-terminated copy of zQuote[] */
121643
121644 zCopy = sqlite3MallocZero(nQuote+1);
121645 if( zCopy==0 ){
121646 sqlite3_result_error_nomem(ctx);
121647 return SQLITE_NOMEM_BKPT;
121648 }
121649 memcpy(zCopy, zQuote, nQuote);
121650 sqlite3Dequote(zCopy);
121651 *pRes = sqlite3_stricmp((const char*)zCopy, (const char*)zCmp);
121652 sqlite3_free(zCopy);
121653 return SQLITE_OK;
121654 }
121655
121656 /*
121657 ** zSql[] is a CREATE TABLE statement, supposedly. Find the offset
121658 ** into zSql[] of the first character past the first "(" and write
121659 ** that offset into *piOff and return SQLITE_OK. Or, if not found,
121660 ** set the SQLITE_CORRUPT error code and return SQLITE_ERROR.
121661 */
121662 static int skipCreateTable(sqlite3_context *ctx, const u8 *zSql, int *piOff){
121663 int iOff = 0;
121664
121665 if( zSql==0 ) return SQLITE_ERROR;
121666
121667 /* Jump past the "CREATE TABLE" bit. */
121668 while( 1 ){
121669 int t = 0;
121670 iOff += sqlite3GetToken(&zSql[iOff], &t);
121671 if( t==TK_LP ) break;
121672 if( t==TK_ILLEGAL ){
121673 sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
121674 return SQLITE_ERROR;
121675 }
121676 }
121677
121678 *piOff = iOff;
121679 return SQLITE_OK;
121680 }
121681
121682 /*
121683 ** Internal SQL function sqlite3_drop_constraint(): Given an input
121684 ** CREATE TABLE statement, return a revised CREATE TABLE statement
121685 ** with a constraint removed. Two forms, depending on the datatype
121686 ** of argv[2]:
121687 **
121688 ** sqlite_drop_constraint(SQL, INT) -- Omit NOT NULL from the INT-th column
121689 ** sqlite_drop_constraint(SQL, TEXT) -- OMIT constraint with name TEXT
121690 **
121691 ** In the first case, the left-most column is 0.
121692 */
121693 static void dropConstraintFunc(
121694 sqlite3_context *ctx,
121695 int NotUsed,
121696 sqlite3_value **argv
121697 ){
121698 const u8 *zSql = sqlite3_value_text(argv[0]);
121699 const u8 *zCons = 0;
121700 int iNotNull = -1;
121701 int ii;
121702 int iOff = 0;
121703 int iStart = 0;
121704 int iEnd = 0;
121705 char *zNew = 0;
121706 int t = 0;
121707 sqlite3 *db;
121708 UNUSED_PARAMETER(NotUsed);
121709
121710 if( zSql==0 ) return;
121711
121712 /* Jump past the "CREATE TABLE" bit. */
121713 if( skipCreateTable(ctx, zSql, &iOff) ) return;
121714
121715 if( sqlite3_value_type(argv[1])==SQLITE_INTEGER ){
121716 iNotNull = sqlite3_value_int(argv[1]);
121717 }else{
121718 zCons = sqlite3_value_text(argv[1]);
121719 }
121720
121721 /* Search for the named constraint within column definitions. */
121722 for(ii=0; iEnd==0; ii++){
121723
121724 /* Now parse the column or table constraint definition. Search
121725 ** for the token CONSTRAINT if this is a DROP CONSTRAINT command, or
121726 ** NOT in the right column if this is a DROP NOT NULL. */
121727 while( 1 ){
121728 iStart = iOff;
121729 iOff += getConstraintToken(&zSql[iOff], &t);
121730 if( t==TK_CONSTRAINT && (zCons || iNotNull==ii) ){
121731 /* Check if this is the constraint we are searching for. */
121732 int nTok = 0;
121733 int cmp = 1;
121734
121735 /* Skip past any whitespace. */
121736 iOff += getWhitespace(&zSql[iOff]);
121737
121738 /* Compare the next token - which may be quoted - with the name of
121739 ** the constraint being dropped. */
121740 nTok = getConstraintToken(&zSql[iOff], &t);
121741 if( zCons ){
121742 if( quotedCompare(ctx, &zSql[iOff], nTok, zCons, &cmp) ) return;
121743 }
121744 iOff += nTok;
121745
121746 /* The next token is usually the first token of the constraint
121747 ** definition. This is enough to tell the type of the constraint -
121748 ** TK_NOT means it is a NOT NULL, TK_CHECK a CHECK constraint etc.
121749 **
121750 ** There is also the chance that the next token is TK_CONSTRAINT
121751 ** (or TK_DEFAULT or TK_COLLATE), for example if a table has been
121752 ** created as follows:
121753 **
121754 ** CREATE TABLE t1(cols, CONSTRAINT one CONSTRAINT two NOT NULL);
121755 **
121756 ** In this case, allow the "CONSTRAINT one" bit to be dropped by
121757 ** this command if that is what is requested, or to advance to
121758 ** the next iteration of the loop with &zSql[iOff] still pointing
121759 ** to the CONSTRAINT keyword. */
121760 nTok = getConstraintToken(&zSql[iOff], &t);
121761 if( t==TK_CONSTRAINT || t==TK_DEFAULT || t==TK_COLLATE
121762 || t==TK_COMMA || t==TK_RP || t==TK_GENERATED || t==TK_AS
121763 ){
121764 t = TK_CHECK;
121765 }else{
121766 iOff += nTok;
121767 iOff += getConstraint(&zSql[iOff]);
121768 }
121769
121770 if( cmp==0 || (iNotNull>=0 && t==TK_NOT) ){
121771 if( t!=TK_NOT && t!=TK_CHECK ){
121772 errorMPrintf(ctx, "constraint may not be dropped: %s", zCons);
121773 return;
121774 }
121775 iEnd = iOff;
121776 break;
121777 }
121778
121779 }else if( t==TK_NOT && iNotNull==ii ){
121780 iEnd = iOff + getConstraint(&zSql[iOff]);
121781 break;
121782 }else if( t==TK_RP || t==TK_ILLEGAL ){
121783 iEnd = -1;
121784 break;
121785 }else if( t==TK_COMMA ){
121786 break;
121787 }
121788 }
121789 }
121790
121791 /* If the constraint has not been found it is an error. */
121792 if( iEnd<=0 ){
121793 if( zCons ){
121794 errorMPrintf(ctx, "no such constraint: %s", zCons);
121795 }else{
121796 /* SQLite follows postgres in that a DROP NOT NULL on a column that is
121797 ** not NOT NULL is not an error. So just return the original SQL here. */
121798 sqlite3_result_text(ctx, (const char*)zSql, -1, SQLITE_TRANSIENT);
121799 }
121800 }else{
121801
121802 /* Figure out if an extra space should be inserted after the constraint
121803 ** is removed. And if an additional comma preceding the constraint
121804 ** should be removed. */
121805 const char *zSpace = " ";
121806 iEnd += getWhitespace(&zSql[iEnd]);
121807 sqlite3GetToken(&zSql[iEnd], &t);
121808 if( t==TK_RP || t==TK_COMMA ){
121809 zSpace = "";
121810 if( zSql[iStart-1]==',' ) iStart--;
121811 }
121812
121813 db = sqlite3_context_db_handle(ctx);
121814 zNew = sqlite3MPrintf(db, "%.*s%s%s", iStart, zSql, zSpace, &zSql[iEnd]);
121815 sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
121816 }
121817 }
121818
121819 /*
121820 ** Internal SQL function:
121821 **
121822 ** sqlite_add_constraint(SQL, CONSTRAINT-TEXT, ICOL)
121823 **
121824 ** SQL is a CREATE TABLE statement. Return a modified version of
121825 ** SQL that adds CONSTRAINT-TEXT at the end of the ICOL-th column
121826 ** definition. (The left-most column defintion is 0.)
121827 */
121828 static void addConstraintFunc(
121829 sqlite3_context *ctx,
121830 int NotUsed,
121831 sqlite3_value **argv
121832 ){
121833 const u8 *zSql = sqlite3_value_text(argv[0]);
121834 const char *zCons = (const char*)sqlite3_value_text(argv[1]);
121835 int iCol = sqlite3_value_int(argv[2]);
121836 int iOff = 0;
121837 int ii;
121838 char *zNew = 0;
121839 int t = 0;
121840 sqlite3 *db;
121841 UNUSED_PARAMETER(NotUsed);
121842
121843 if( skipCreateTable(ctx, zSql, &iOff) ) return;
121844
121845 for(ii=0; ii<=iCol || (iCol<0 && t!=TK_RP); ii++){
121846 iOff += getConstraintToken(&zSql[iOff], &t);
121847 while( 1 ){
121848 int nTok = getConstraintToken(&zSql[iOff], &t);
121849 if( t==TK_COMMA || t==TK_RP ) break;
121850 if( t==TK_ILLEGAL ){
121851 sqlite3_result_error_code(ctx, SQLITE_CORRUPT_BKPT);
121852 return;
121853 }
121854 iOff += nTok;
121855 }
121856 }
121857
121858 iOff += getWhitespace(&zSql[iOff]);
121859
121860 db = sqlite3_context_db_handle(ctx);
121861 if( iCol<0 ){
121862 zNew = sqlite3MPrintf(db, "%.*s, %s%s", iOff, zSql, zCons, &zSql[iOff]);
121863 }else{
121864 zNew = sqlite3MPrintf(db, "%.*s %s%s", iOff, zSql, zCons, &zSql[iOff]);
121865 }
121866 sqlite3_result_text(ctx, zNew, -1, SQLITE_DYNAMIC);
121867 }
121868
121869 /*
121870 ** Find a column named pCol in table pTab. If successful, set output
121871 ** parameter *piCol to the index of the column in the table and return
121872 ** SQLITE_OK. Otherwise, set *piCol to -1 and return an SQLite error
121873 ** code.
121874 */
121875 static int alterFindCol(Parse *pParse, Table *pTab, Token *pCol, int *piCol){
121876 sqlite3 *db = pParse->db;
121877 char *zName = sqlite3NameFromToken(db, pCol);
121878 int rc = SQLITE_NOMEM;
121879 int iCol = -1;
121880
121881 if( zName ){
121882 iCol = sqlite3ColumnIndex(pTab, zName);
121883 if( iCol<0 ){
121884 sqlite3ErrorMsg(pParse, "no such column: %s", zName);
121885 rc = SQLITE_ERROR;
121886 }else{
121887 rc = SQLITE_OK;
121888 }
121889 }
121890
121891 #ifndef SQLITE_OMIT_AUTHORIZATION
121892 if( rc==SQLITE_OK ){
121893 const char *zDb = db->aDb[sqlite3SchemaToIndex(db, pTab->pSchema)].zDbSName;
121894 const char *zCol = pTab->aCol[iCol].zCnName;
121895 if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, zCol) ){
121896 pTab = 0;
121897 }
121898 }
121899 #endif
121900
121901 sqlite3DbFree(db, zName);
121902 *piCol = iCol;
121903 return rc;
121904 }
121905
121906
121907 /*
121908 ** Find the table named by the first entry in source list pSrc. If successful,
121909 ** return a pointer to the Table structure and set output variable (*pzDb)
121910 ** to point to the name of the database containin the table (i.e. "main",
121911 ** "temp" or the name of an attached database).
121912 **
121913 ** If the table cannot be located, return NULL. The value of the two output
121914 ** parameters is undefined in this case.
121915 */
121916 static Table *alterFindTable(
121917 Parse *pParse, /* Parsing context */
121918 SrcList *pSrc, /* Name of the table to look for */
121919 int *piDb, /* OUT: write the iDb here */
121920 const char **pzDb, /* OUT: write name of schema here */
121921 int bAuth /* Do ALTER TABLE authorization checks if true */
121922 ){
121923 sqlite3 *db = pParse->db;
121924 Table *pTab = 0;
121925 assert( sqlite3BtreeHoldsAllMutexes(db) );
121926 pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
121927 if( pTab ){
121928 int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
121929 *pzDb = db->aDb[iDb].zDbSName;
121930 *piDb = iDb;
121931
121932 if( SQLITE_OK!=isRealTable(pParse, pTab, 2)
121933 || SQLITE_OK!=isAlterableTable(pParse, pTab)
121934 ){
121935 pTab = 0;
121936 }
121937 }
121938 #ifndef SQLITE_OMIT_AUTHORIZATION
121939 if( pTab && bAuth ){
121940 if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, *pzDb, pTab->zName, 0) ){
121941 pTab = 0;
121942 }
121943 }
121944 #endif
121945 sqlite3SrcListDelete(db, pSrc);
121946 return pTab;
121947 }
121948
121949 /*
121950 ** Generate bytecode for one of:
121951 **
121952 ** (1) ALTER TABLE pSrc DROP CONSTRAINT pCons
121953 ** (2) ALTER TABLE pSrc ALTER pCol DROP NOT NULL
121954 **
121955 ** One of pCons and pCol must be NULL and the other non-null.
121956 */
121957 SQLITE_PRIVATE void sqlite3AlterDropConstraint(
121958 Parse *pParse, /* Parsing context */
121959 SrcList *pSrc, /* The table being altered */
121960 Token *pCons, /* Name of the constraint to drop */
121961 Token *pCol /* Name of the column from which to remove the NOT NULL */
121962 ){
121963 sqlite3 *db = pParse->db;
121964 Table *pTab = 0;
121965 int iDb = 0;
121966 const char *zDb = 0;
121967 char *zArg = 0;
121968
121969 assert( (pCol==0)!=(pCons==0) );
121970 assert( pSrc->nSrc==1 );
121971 pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, pCons!=0);
121972 if( !pTab ) return;
121973
121974 if( pCons ){
121975 zArg = sqlite3MPrintf(db, "%.*Q", pCons->n, pCons->z);
121976 }else{
121977 int iCol;
121978 if( alterFindCol(pParse, pTab, pCol, &iCol) ) return;
121979 zArg = sqlite3MPrintf(db, "%d", iCol);
121980 }
121981
121982 /* Edit the SQL for the named table. */
121983 sqlite3NestedParse(pParse,
121984 "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
121985 "sql = sqlite_drop_constraint(sql, %s) "
121986 "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
121987 , zDb, zArg, pTab->zName
121988 );
121989 sqlite3DbFree(db, zArg);
121990
121991 /* Finally, reload the database schema. */
121992 renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
121993 }
121994
121995 /*
121996 ** The implementation of SQL function sqlite_fail(MSG). This takes a single
121997 ** argument, and returns it as an error message with the error code set to
121998 ** SQLITE_CONSTRAINT.
121999 */
122000 static void failConstraintFunc(
122001 sqlite3_context *ctx,
122002 int NotUsed,
122003 sqlite3_value **argv
122004 ){
122005 const char *zText = (const char*)sqlite3_value_text(argv[0]);
122006 int err = sqlite3_value_int(argv[1]);
122007 (void)NotUsed;
122008 sqlite3_result_error(ctx, zText, -1);
122009 sqlite3_result_error_code(ctx, err);
122010 }
122011
122012 /*
122013 ** Buffer pCons, which is nCons bytes in size, contains the text of a
122014 ** NOT NULL or CHECK constraint that will be inserted into a CREATE TABLE
122015 ** statement. If successful, this function returns the size of the buffer in
122016 ** bytes not including any trailing whitespace or "--" style comments. Or,
122017 ** if an OOM occurs, it returns 0 and sets db->mallocFailed to true.
122018 **
122019 ** C-style comments at the end are preserved. "--" style comments are
122020 ** removed because the comment terminator might be \000, and we are about
122021 ** to insert the pCons[] text into the middle of a larger string, and that
122022 ** will have the effect of removing the comment terminator and messing up
122023 ** the syntax.
122024 */
122025 static int alterRtrimConstraint(
122026 sqlite3 *db, /* used to record OOM error */
122027 const char *pCons, /* Buffer containing constraint */
122028 int nCons /* Size of pCons in bytes */
122029 ){
122030 u8 *zTmp = (u8*)sqlite3MPrintf(db, "%.*s", nCons, pCons);
122031 int iOff = 0;
122032 int iEnd = 0;
122033
122034 if( zTmp==0 ) return 0;
122035
122036 while( 1 ){
122037 int t = 0;
122038 int nToken = sqlite3GetToken(&zTmp[iOff], &t);
122039 if( t==TK_ILLEGAL ) break;
122040 if( t!=TK_SPACE && (t!=TK_COMMENT || zTmp[iOff]!='-') ){
122041 iEnd = iOff+nToken;
122042 }
122043 iOff += nToken;
122044 }
122045
122046 sqlite3DbFree(db, zTmp);
122047 return iEnd;
122048 }
122049
122050 /*
122051 ** Prepare a statement of the form:
122052 **
122053 ** ALTER TABLE pSrc ALTER pCol SET NOT NULL
122054 */
122055 SQLITE_PRIVATE void sqlite3AlterSetNotNull(
122056 Parse *pParse, /* Parsing context */
122057 SrcList *pSrc, /* Name of the table being altered */
122058 Token *pCol, /* Name of the column to add a NOT NULL constraint to */
122059 Token *pFirst /* The NOT token of the NOT NULL constraint text */
122060 ){
122061 Table *pTab = 0;
122062 int iCol = 0;
122063 int iDb = 0;
122064 const char *zDb = 0;
122065 const char *pCons = 0;
122066 int nCons = 0;
122067
122068 /* Look up the table being altered. */
122069 assert( pSrc->nSrc==1 );
122070 pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 0);
122071 if( !pTab ) return;
122072
122073 /* Find the column being altered. */
122074 if( alterFindCol(pParse, pTab, pCol, &iCol) ){
122075 return;
122076 }
122077
122078 /* Find the length in bytes of the constraint definition */
122079 pCons = pFirst->z;
122080 nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
122081
122082 /* Search for a constraint violation. Throw an exception if one is found. */
122083 sqlite3NestedParse(pParse,
122084 "SELECT sqlite_fail('constraint failed', %d) "
122085 "FROM %Q.%Q AS x WHERE x.%.*s IS NULL",
122086 SQLITE_CONSTRAINT, zDb, pTab->zName, (int)pCol->n, pCol->z
122087 );
122088
122089 /* Edit the SQL for the named table. */
122090 sqlite3NestedParse(pParse,
122091 "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
122092 "sql = sqlite_add_constraint(sqlite_drop_constraint(sql, %d), %.*Q, %d) "
122093 "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
122094 , zDb, iCol, nCons, pCons, iCol, pTab->zName
122095 );
122096
122097 /* Finally, reload the database schema. */
122098 renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
122099 }
122100
122101 /*
122102 ** Implementation of internal SQL function:
122103 **
122104 ** sqlite_find_constraint(SQL, CONSTRAINT-NAME)
122105 **
122106 ** This function returns true if the SQL passed as the first argument is a
122107 ** CREATE TABLE that contains a constraint with the name CONSTRAINT-NAME,
122108 ** or false otherwise.
122109 */
122110 static void findConstraintFunc(
122111 sqlite3_context *ctx,
122112 int NotUsed,
122113 sqlite3_value **argv
122114 ){
122115 const u8 *zSql = 0;
122116 const u8 *zCons = 0;
122117 int iOff = 0;
122118 int t = 0;
122119
122120 (void)NotUsed;
122121 zSql = sqlite3_value_text(argv[0]);
122122 zCons = sqlite3_value_text(argv[1]);
122123
122124 if( zSql==0 || zCons==0 ) return;
122125 while( t!=TK_LP && t!=TK_ILLEGAL ){
122126 iOff += sqlite3GetToken(&zSql[iOff], &t);
122127 }
122128
122129 while( 1 ){
122130 iOff += getConstraintToken(&zSql[iOff], &t);
122131 if( t==TK_CONSTRAINT ){
122132 int nTok = 0;
122133 int cmp = 0;
122134 iOff += getWhitespace(&zSql[iOff]);
122135 nTok = getConstraintToken(&zSql[iOff], &t);
122136 if( quotedCompare(ctx, &zSql[iOff], nTok, zCons, &cmp) ) return;
122137 if( cmp==0 ){
122138 sqlite3_result_int(ctx, 1);
122139 return;
122140 }
122141 }else if( t==TK_ILLEGAL ){
122142 break;
122143 }
122144 }
122145
122146 sqlite3_result_int(ctx, 0);
122147 }
122148
122149 /*
122150 ** Generate bytecode to implement:
122151 **
122152 ** ALTER TABLE pSrc ADD [CONSTRAINT pName] CHECK(pExpr)
122153 **
122154 ** Any "ON CONFLICT" text that occurs after the "CHECK(...)", up
122155 ** until pParse->sLastToken, is included as part of the new constraint.
122156 */
122157 SQLITE_PRIVATE void sqlite3AlterAddConstraint(
122158 Parse *pParse, /* Parse context */
122159 SrcList *pSrc, /* Table to add constraint to */
122160 Token *pFirst, /* First token of new constraint */
122161 Token *pName, /* Name of new constraint. NULL if name omitted. */
122162 const char *pExpr, /* Text of CHECK expression */
122163 int nExpr /* Size of pExpr in bytes */
122164 ){
122165 Table *pTab = 0; /* Table identified by pSrc */
122166 int iDb = 0; /* Which schema does pTab live in */
122167 const char *zDb = 0; /* Name of the schema in which pTab lives */
122168 const char *pCons = 0; /* Text of the constraint */
122169 int nCons; /* Bytes of text to use from pCons[] */
122170
122171 /* Look up the table being altered. */
122172 assert( pSrc->nSrc==1 );
122173 pTab = alterFindTable(pParse, pSrc, &iDb, &zDb, 1);
122174 if( !pTab ) return;
122175
122176 /* If this new constraint has a name, check that it is not a duplicate of
122177 ** an existing constraint. It is an error if it is. */
122178 if( pName ){
122179 char *zName = sqlite3NameFromToken(pParse->db, pName);
122180
122181 sqlite3NestedParse(pParse,
122182 "SELECT sqlite_fail('constraint %q already exists', %d) "
122183 "FROM \"%w\"." LEGACY_SCHEMA_TABLE " "
122184 "WHERE type='table' AND tbl_name=%Q COLLATE nocase "
122185 "AND sqlite_find_constraint(sql, %Q)",
122186 zName, SQLITE_ERROR, zDb, pTab->zName, zName
122187 );
122188 sqlite3DbFree(pParse->db, zName);
122189 }
122190
122191 /* Search for a constraint violation. Throw an exception if one is found. */
122192 sqlite3NestedParse(pParse,
122193 "SELECT sqlite_fail('constraint failed', %d) "
122194 "FROM %Q.%Q WHERE (%.*s) IS NOT TRUE",
122195 SQLITE_CONSTRAINT, zDb, pTab->zName, nExpr, pExpr
122196 );
122197
122198 /* Edit the SQL for the named table. */
122199 pCons = pFirst->z;
122200 nCons = alterRtrimConstraint(pParse->db, pCons, pParse->sLastToken.z - pCons);
122201
122202 sqlite3NestedParse(pParse,
122203 "UPDATE \"%w\"." LEGACY_SCHEMA_TABLE " SET "
122204 "sql = sqlite_add_constraint(sql, %.*Q, -1) "
122205 "WHERE type='table' AND tbl_name=%Q COLLATE nocase"
122206 , zDb, nCons, pCons, pTab->zName
122207 );
122208
122209 /* Finally, reload the database schema. */
122210 renameReloadSchema(pParse, iDb, INITFLAG_AlterDropCons);
122211 }
122212
122213 /*
122214 ** Register built-in functions used to help implement ALTER TABLE
122215 */
122216 SQLITE_PRIVATE void sqlite3AlterFunctions(void){
@@ -121501,10 +122218,14 @@
122218 INTERNAL_FUNCTION(sqlite_rename_column, 9, renameColumnFunc),
122219 INTERNAL_FUNCTION(sqlite_rename_table, 7, renameTableFunc),
122220 INTERNAL_FUNCTION(sqlite_rename_test, 7, renameTableTest),
122221 INTERNAL_FUNCTION(sqlite_drop_column, 3, dropColumnFunc),
122222 INTERNAL_FUNCTION(sqlite_rename_quotefix,2, renameQuotefixFunc),
122223 INTERNAL_FUNCTION(sqlite_drop_constraint,2, dropConstraintFunc),
122224 INTERNAL_FUNCTION(sqlite_fail, 2, failConstraintFunc),
122225 INTERNAL_FUNCTION(sqlite_add_constraint, 3, addConstraintFunc),
122226 INTERNAL_FUNCTION(sqlite_find_constraint,2, findConstraintFunc),
122227 };
122228 sqlite3InsertBuiltinFuncs(aAlterTableFuncs, ArraySize(aAlterTableFuncs));
122229 }
122230 #endif /* SQLITE_ALTER_TABLE */
122231
@@ -145769,11 +146490,12 @@
146490 /* A error message has already been generated. Do not overwrite it */
146491 }else if( pData->mInitFlags & (INITFLAG_AlterMask) ){
146492 static const char *azAlterType[] = {
146493 "rename",
146494 "drop column",
146495 "add column",
146496 "drop constraint"
146497 };
146498 *pData->pzErrMsg = sqlite3MPrintf(db,
146499 "error in %s %s after %s: %s", azObj[0], azObj[1],
146500 azAlterType[(pData->mInitFlags&INITFLAG_AlterMask)-1],
146501 zExtra
@@ -178135,22 +178857,22 @@
178857 #define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
178858 #undef YYERRORSYMBOL
178859 #undef YYERRSYMDT
178860 #undef YYFALLBACK
178861 #define YYFALLBACK 1
178862 #define YYNSTATE 602
178863 #define YYNRULE 414
178864 #define YYNRULE_WITH_ACTION 349
178865 #define YYNTOKEN 187
178866 #define YY_MAX_SHIFT 601
178867 #define YY_MIN_SHIFTREDUCE 870
178868 #define YY_MAX_SHIFTREDUCE 1283
178869 #define YY_ERROR_ACTION 1284
178870 #define YY_ACCEPT_ACTION 1285
178871 #define YY_NO_ACTION 1286
178872 #define YY_MIN_REDUCE 1287
178873 #define YY_MAX_REDUCE 1700
178874 #define YY_MIN_DSTRCTR 206
178875 #define YY_MAX_DSTRCTR 320
178876 /************* End control #defines *******************************************/
178877 #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
178878
@@ -178231,647 +178953,686 @@
178953 ** yy_reduce_ofst[] For each state, the offset into yy_action for
178954 ** shifting non-terminals after a reduce.
178955 ** yy_default[] Default action for each state.
178956 **
178957 *********** Begin parsing tables **********************************************/
178958 #define YY_ACTTAB_COUNT (2379)
178959 static const YYACTIONTYPE yy_action[] = {
178960 /* 0 */ 134, 131, 238, 291, 291, 1358, 595, 1337, 479, 483,
178961 /* 10 */ 595, 436, 595, 393, 595, 1358, 592, 595, 581, 425,
178962 /* 20 */ 423, 1572, 134, 131, 238, 543, 479, 478, 577, 84,
178963 /* 30 */ 84, 1008, 304, 51, 51, 51, 51, 63, 63, 1009,
178964 /* 40 */ 84, 84, 1132, 141, 142, 93, 1132, 1258, 1258, 1088,
178965 /* 50 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 425,
178966 /* 60 */ 297, 297, 1481, 297, 297, 569, 555, 297, 297, 134,
178967 /* 70 */ 131, 238, 1130, 592, 544, 581, 592, 576, 581, 512,
178968 /* 80 */ 592, 343, 581, 141, 142, 93, 578, 1258, 1258, 1088,
178969 /* 90 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 6,
178970 /* 100 */ 479, 385, 1630, 138, 138, 138, 138, 137, 137, 136,
178971 /* 110 */ 136, 136, 135, 132, 464, 1363, 1363, 595, 1044, 1603,
178972 /* 120 */ 1285, 1, 1, 601, 2, 1289, 44, 1204, 231, 1204,
178973 /* 130 */ 331, 425, 158, 1617, 392, 1617, 563, 116, 500, 1371,
178974 /* 140 */ 84, 84, 569, 138, 138, 138, 138, 137, 137, 136,
178975 /* 150 */ 136, 136, 135, 132, 464, 141, 142, 93, 517, 1258,
178976 /* 160 */ 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140,
178977 /* 170 */ 140, 1234, 356, 212, 297, 297, 464, 576, 490, 1234,
178978 /* 180 */ 570, 570, 143, 330, 586, 1320, 550, 592, 1199, 581,
178979 /* 190 */ 491, 358, 45, 140, 140, 140, 140, 133, 394, 566,
178980 /* 200 */ 1323, 1199, 253, 426, 1199, 137, 137, 136, 136, 136,
178981 /* 210 */ 135, 132, 464, 292, 306, 138, 138, 138, 138, 137,
178982 /* 220 */ 137, 136, 136, 136, 135, 132, 464, 1322, 1234, 1235,
178983 /* 230 */ 1234, 1605, 413, 389, 468, 425, 1234, 1235, 1234, 491,
178984 /* 240 */ 358, 138, 138, 138, 138, 137, 137, 136, 136, 136,
178985 /* 250 */ 135, 132, 464, 113, 134, 131, 238, 557, 1606, 141,
178986 /* 260 */ 142, 93, 595, 1258, 1258, 1088, 1091, 1078, 1078, 139,
178987 /* 270 */ 139, 140, 140, 140, 140, 134, 131, 238, 1612, 425,
178988 /* 280 */ 502, 185, 7, 334, 97, 19, 19, 994, 140, 140,
178989 /* 290 */ 140, 140, 136, 136, 136, 135, 132, 464, 1179, 1692,
178990 /* 300 */ 209, 1692, 1610, 141, 142, 93, 7, 1258, 1258, 1088,
178991 /* 310 */ 1091, 1078, 1078, 139, 139, 140, 140, 140, 140, 138,
178992 /* 320 */ 138, 138, 138, 137, 137, 136, 136, 136, 135, 132,
178993 /* 330 */ 464, 1663, 1234, 589, 589, 589, 138, 138, 138, 138,
178994 /* 340 */ 137, 137, 136, 136, 136, 135, 132, 464, 138, 138,
178995 /* 350 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
178996 /* 360 */ 275, 595, 430, 138, 138, 138, 138, 137, 137, 136,
178997 /* 370 */ 136, 136, 135, 132, 464, 400, 1234, 396, 1177, 461,
178998 /* 380 */ 460, 237, 1611, 425, 51, 51, 7, 335, 1263, 1234,
178999 /* 390 */ 1235, 1234, 1311, 1265, 549, 145, 1254, 283, 542, 542,
179000 /* 400 */ 595, 1264, 597, 7, 597, 927, 994, 141, 142, 93,
179001 /* 410 */ 506, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140,
179002 /* 420 */ 140, 140, 140, 19, 19, 44, 1266, 425, 1266, 297,
179003 /* 430 */ 297, 1234, 98, 1234, 1235, 1234, 265, 534, 439, 530,
179004 /* 440 */ 527, 526, 592, 1633, 581, 928, 511, 272, 235, 525,
179005 /* 450 */ 508, 141, 142, 93, 1254, 1258, 1258, 1088, 1091, 1078,
179006 /* 460 */ 1078, 139, 139, 140, 140, 140, 140, 138, 138, 138,
179007 /* 470 */ 138, 137, 137, 136, 136, 136, 135, 132, 464, 595,
179008 /* 480 */ 422, 421, 330, 586, 1619, 517, 391, 517, 1234, 1235,
179009 /* 490 */ 1234, 1274, 127, 587, 265, 4, 1311, 530, 527, 526,
179010 /* 500 */ 595, 448, 84, 84, 594, 595, 572, 525, 1309, 590,
179011 /* 510 */ 308, 138, 138, 138, 138, 137, 137, 136, 136, 136,
179012 /* 520 */ 135, 132, 464, 19, 19, 161, 1234, 390, 19, 19,
179013 /* 530 */ 1571, 425, 1535, 465, 1637, 601, 2, 1289, 444, 576,
179014 /* 540 */ 330, 586, 331, 446, 158, 584, 1274, 481, 575, 595,
179015 /* 550 */ 240, 1371, 506, 551, 1234, 141, 142, 93, 313, 1258,
179016 /* 560 */ 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140,
179017 /* 570 */ 140, 160, 83, 83, 1065, 974, 135, 132, 464, 595,
179018 /* 580 */ 125, 125, 973, 1234, 1235, 1234, 297, 297, 126, 517,
179019 /* 590 */ 465, 596, 465, 297, 297, 1053, 1234, 1369, 387, 592,
179020 /* 600 */ 1234, 581, 84, 84, 517, 242, 592, 1465, 581, 46,
179021 /* 610 */ 473, 1234, 1235, 1234, 253, 138, 138, 138, 138, 137,
179022 /* 620 */ 137, 136, 136, 136, 135, 132, 464, 1053, 1053, 1055,
179023 /* 630 */ 1056, 35, 297, 297, 1370, 399, 425, 445, 996, 576,
179024 /* 640 */ 372, 415, 233, 541, 413, 592, 468, 581, 452, 1366,
179025 /* 650 */ 112, 552, 355, 1234, 1235, 1234, 1218, 1234, 1235, 1234,
179026 /* 660 */ 141, 142, 93, 223, 1258, 1258, 1088, 1091, 1078, 1078,
179027 /* 670 */ 139, 139, 140, 140, 140, 140, 297, 297, 441, 553,
179028 /* 680 */ 425, 298, 298, 1375, 531, 330, 586, 1199, 115, 592,
179029 /* 690 */ 1465, 581, 100, 1480, 592, 592, 581, 581, 559, 1307,
179030 /* 700 */ 1199, 907, 545, 1199, 141, 142, 93, 498, 1258, 1258,
179031 /* 710 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179032 /* 720 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,
179033 /* 730 */ 132, 464, 385, 1630, 297, 297, 470, 297, 297, 472,
179034 /* 740 */ 200, 579, 1065, 201, 44, 127, 587, 592, 4, 581,
179035 /* 750 */ 592, 1044, 581, 482, 40, 500, 558, 482, 907, 1054,
179036 /* 760 */ 1479, 442, 590, 1053, 138, 138, 138, 138, 137, 137,
179037 /* 770 */ 136, 136, 136, 135, 132, 464, 297, 297, 1234, 1657,
179038 /* 780 */ 492, 1234, 1603, 480, 425, 506, 465, 1330, 911, 592,
179039 /* 790 */ 918, 581, 1234, 1361, 1361, 1053, 1053, 1055, 584, 385,
179040 /* 800 */ 1630, 330, 586, 353, 5, 356, 486, 344, 141, 142,
179041 /* 810 */ 93, 185, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179042 /* 820 */ 140, 140, 140, 140, 1218, 1694, 411, 1065, 425, 1234,
179043 /* 830 */ 48, 309, 904, 125, 125, 1234, 1235, 1234, 1234, 1235,
179044 /* 840 */ 1234, 126, 1234, 465, 596, 465, 348, 517, 1053, 1234,
179045 /* 850 */ 1235, 1234, 141, 142, 93, 3, 1258, 1258, 1088, 1091,
179046 /* 860 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 138, 138,
179047 /* 870 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179048 /* 880 */ 1053, 1053, 1055, 1056, 35, 315, 1234, 1235, 1234, 1234,
179049 /* 890 */ 1065, 1237, 363, 1234, 1604, 887, 389, 341, 500, 1234,
179050 /* 900 */ 1235, 1234, 595, 1075, 1075, 1089, 1092, 1054, 345, 1218,
179051 /* 910 */ 347, 1053, 138, 138, 138, 138, 137, 137, 136, 136,
179052 /* 920 */ 136, 135, 132, 464, 436, 19, 19, 370, 567, 567,
179053 /* 930 */ 595, 554, 425, 7, 1398, 325, 1217, 462, 462, 462,
179054 /* 940 */ 316, 1582, 432, 1053, 1053, 1055, 1234, 1235, 1234, 1237,
179055 /* 950 */ 1234, 1235, 1234, 84, 84, 489, 141, 142, 93, 595,
179056 /* 960 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179057 /* 970 */ 140, 140, 1218, 995, 312, 383, 425, 600, 1079, 1289,
179058 /* 980 */ 1066, 115, 19, 19, 331, 382, 158, 1603, 1536, 365,
179059 /* 990 */ 326, 368, 346, 1371, 216, 461, 460, 451, 1110, 236,
179060 /* 1000 */ 141, 142, 93, 1465, 1258, 1258, 1088, 1091, 1078, 1078,
179061 /* 1010 */ 139, 139, 140, 140, 140, 140, 138, 138, 138, 138,
179062 /* 1020 */ 137, 137, 136, 136, 136, 135, 132, 464, 297, 297,
179063 /* 1030 */ 595, 500, 1008, 1199, 595, 50, 1528, 398, 218, 218,
179064 /* 1040 */ 1009, 592, 1266, 581, 1266, 450, 1199, 404, 522, 1199,
179065 /* 1050 */ 376, 424, 418, 84, 84, 595, 253, 19, 19, 548,
179066 /* 1060 */ 138, 138, 138, 138, 137, 137, 136, 136, 136, 135,
179067 /* 1070 */ 132, 464, 210, 317, 443, 317, 269, 307, 19, 19,
179068 /* 1080 */ 425, 307, 22, 22, 1049, 294, 413, 994, 468, 593,
179069 /* 1090 */ 327, 961, 961, 571, 269, 1603, 1603, 595, 231, 1604,
179070 /* 1100 */ 425, 389, 410, 1279, 141, 142, 93, 314, 1258, 1258,
179071 /* 1110 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179072 /* 1120 */ 84, 84, 533, 387, 141, 142, 93, 434, 1258, 1258,
179073 /* 1130 */ 1088, 1091, 1078, 1078, 139, 139, 140, 140, 140, 140,
179074 /* 1140 */ 447, 1541, 1585, 47, 49, 431, 282, 300, 384, 536,
179075 /* 1150 */ 379, 535, 270, 595, 436, 595, 1465, 458, 375, 1541,
179076 /* 1160 */ 1543, 375, 455, 431, 138, 138, 138, 138, 137, 137,
179077 /* 1170 */ 136, 136, 136, 135, 132, 464, 84, 84, 84, 84,
179078 /* 1180 */ 595, 237, 1280, 1583, 138, 138, 138, 138, 137, 137,
179079 /* 1190 */ 136, 136, 136, 135, 132, 464, 1179, 1693, 10, 1693,
179080 /* 1200 */ 275, 565, 1151, 149, 149, 475, 994, 1604, 1604, 389,
179081 /* 1210 */ 389, 1465, 1199, 459, 425, 463, 226, 1152, 1150, 1609,
179082 /* 1220 */ 564, 303, 1608, 7, 217, 1199, 7, 513, 1199, 1210,
179083 /* 1230 */ 1312, 432, 1153, 1541, 425, 1662, 1254, 936, 141, 142,
179084 /* 1240 */ 93, 119, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179085 /* 1250 */ 140, 140, 140, 140, 583, 302, 538, 1396, 141, 142,
179086 /* 1260 */ 93, 6, 1258, 1258, 1088, 1091, 1078, 1078, 139, 139,
179087 /* 1270 */ 140, 140, 140, 140, 588, 432, 1177, 1135, 1135, 514,
179088 /* 1280 */ 1151, 1210, 456, 969, 333, 288, 433, 187, 968, 595,
179089 /* 1290 */ 129, 595, 547, 595, 1254, 1152, 1341, 551, 138, 138,
179090 /* 1300 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179091 /* 1310 */ 1153, 595, 151, 151, 53, 53, 54, 54, 138, 138,
179092 /* 1320 */ 138, 138, 137, 137, 136, 136, 136, 135, 132, 464,
179093 /* 1330 */ 504, 595, 947, 595, 68, 68, 595, 296, 235, 595,
179094 /* 1340 */ 507, 595, 948, 595, 101, 222, 595, 484, 425, 875,
179095 /* 1350 */ 876, 877, 215, 219, 69, 69, 21, 21, 423, 55,
179096 /* 1360 */ 55, 1584, 70, 70, 56, 56, 71, 71, 425, 72,
179097 /* 1370 */ 72, 1183, 141, 142, 93, 123, 1258, 1258, 1088, 1091,
179098 /* 1380 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 425, 268,
179099 /* 1390 */ 267, 266, 141, 142, 93, 552, 1258, 1258, 1088, 1091,
179100 /* 1400 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 23, 163,
179101 /* 1410 */ 496, 572, 141, 130, 93, 476, 1258, 1258, 1088, 1091,
179102 /* 1420 */ 1078, 1078, 139, 139, 140, 140, 140, 140, 505, 124,
179103 /* 1430 */ 1580, 121, 138, 138, 138, 138, 137, 137, 136, 136,
179104 /* 1440 */ 136, 135, 132, 464, 595, 225, 595, 899, 437, 246,
179105 /* 1450 */ 336, 1253, 138, 138, 138, 138, 137, 137, 136, 136,
179106 /* 1460 */ 136, 135, 132, 464, 595, 1340, 595, 73, 73, 74,
179107 /* 1470 */ 74, 337, 138, 138, 138, 138, 137, 137, 136, 136,
179108 /* 1480 */ 136, 135, 132, 464, 38, 595, 493, 75, 75, 57,
179109 /* 1490 */ 57, 595, 425, 410, 1178, 1274, 497, 423, 250, 969,
179110 /* 1500 */ 329, 164, 914, 16, 968, 899, 1117, 423, 58, 58,
179111 /* 1510 */ 595, 423, 425, 595, 59, 59, 39, 142, 93, 340,
179112 /* 1520 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179113 /* 1530 */ 140, 140, 595, 61, 61, 595, 62, 62, 93, 595,
179114 /* 1540 */ 1258, 1258, 1088, 1091, 1078, 1078, 139, 139, 140, 140,
179115 /* 1550 */ 140, 140, 1410, 926, 925, 76, 76, 1409, 77, 77,
179116 /* 1560 */ 914, 485, 78, 78, 1117, 1174, 595, 412, 595, 226,
179117 /* 1570 */ 595, 127, 587, 1280, 4, 1592, 138, 138, 138, 138,
179118 /* 1580 */ 137, 137, 136, 136, 136, 135, 132, 464, 590, 20,
179119 /* 1590 */ 20, 79, 79, 147, 147, 595, 138, 138, 138, 138,
179120 /* 1600 */ 137, 137, 136, 136, 136, 135, 132, 464, 595, 354,
179121 /* 1610 */ 169, 115, 465, 595, 349, 595, 252, 595, 148, 148,
179122 /* 1620 */ 595, 1046, 595, 274, 584, 494, 112, 499, 595, 274,
179123 /* 1630 */ 1560, 80, 80, 595, 44, 1559, 64, 64, 81, 81,
179124 /* 1640 */ 65, 65, 595, 82, 82, 66, 66, 509, 310, 595,
179125 /* 1650 */ 360, 173, 173, 1065, 595, 553, 174, 174, 595, 125,
179126 /* 1660 */ 125, 501, 595, 274, 1406, 89, 89, 126, 299, 465,
179127 /* 1670 */ 596, 465, 67, 67, 1053, 595, 364, 85, 85, 595,
179128 /* 1680 */ 1057, 150, 150, 933, 934, 86, 86, 127, 587, 367,
179129 /* 1690 */ 4, 330, 586, 359, 523, 115, 271, 369, 171, 171,
179130 /* 1700 */ 1011, 1012, 152, 152, 590, 1339, 1053, 1053, 1055, 1056,
179131 /* 1710 */ 35, 371, 373, 595, 115, 1354, 1338, 9, 595, 168,
179132 /* 1720 */ 595, 115, 595, 1113, 595, 271, 595, 378, 465, 595,
179133 /* 1730 */ 388, 1419, 595, 539, 595, 1218, 146, 146, 1057, 1464,
179134 /* 1740 */ 584, 172, 172, 165, 165, 156, 156, 155, 155, 153,
179135 /* 1750 */ 153, 1392, 154, 154, 561, 88, 88, 90, 90, 560,
179136 /* 1760 */ 127, 587, 1129, 4, 1129, 999, 208, 274, 595, 1065,
179137 /* 1770 */ 595, 967, 595, 129, 1404, 125, 125, 590, 964, 1128,
179138 /* 1780 */ 129, 1128, 897, 126, 162, 465, 596, 465, 1651, 582,
179139 /* 1790 */ 1053, 87, 87, 52, 52, 60, 60, 966, 1624, 129,
179140 /* 1800 */ 1469, 465, 1319, 243, 1310, 1298, 1297, 1299, 1644, 170,
179141 /* 1810 */ 518, 1389, 289, 584, 12, 322, 323, 324, 228, 409,
179142 /* 1820 */ 1451, 305, 1053, 1053, 1055, 1056, 35, 561, 241, 351,
179143 /* 1830 */ 245, 1446, 562, 127, 587, 357, 4, 1439, 352, 311,
179144 /* 1840 */ 1456, 503, 1065, 528, 1455, 416, 232, 1401, 125, 125,
179145 /* 1850 */ 590, 1218, 381, 1532, 1337, 1531, 126, 1402, 465, 596,
179146 /* 1860 */ 465, 1400, 1399, 1053, 585, 213, 403, 227, 214, 537,
179147 /* 1870 */ 1647, 1587, 1274, 1589, 465, 1588, 239, 278, 1271, 1579,
179148 /* 1880 */ 1577, 96, 435, 100, 224, 198, 584, 1537, 183, 99,
179149 /* 1890 */ 191, 487, 488, 1452, 521, 1053, 1053, 1055, 1056, 35,
179150 /* 1900 */ 561, 13, 193, 194, 195, 560, 196, 255, 113, 414,
179151 /* 1910 */ 1458, 1457, 14, 510, 495, 1065, 259, 1460, 202, 106,
179152 /* 1920 */ 516, 125, 125, 417, 1218, 290, 1548, 1526, 261, 126,
179153 /* 1930 */ 206, 465, 596, 465, 362, 519, 1053, 419, 366, 262,
179154 /* 1940 */ 1357, 1300, 1356, 449, 263, 1355, 1348, 108, 918, 1327,
179155 /* 1950 */ 1661, 420, 1660, 233, 1326, 453, 1629, 380, 546, 1347,
179156 /* 1960 */ 1325, 454, 277, 276, 1659, 1615, 1614, 457, 1053, 1053,
179157 /* 1970 */ 1055, 1056, 35, 1636, 1222, 467, 320, 321, 301, 386,
179158 /* 1980 */ 144, 1424, 572, 408, 408, 407, 285, 405, 11, 1423,
179159 /* 1990 */ 884, 397, 120, 127, 587, 220, 4, 1218, 1380, 1513,
179160 /* 2000 */ 395, 114, 1379, 247, 42, 339, 556, 598, 1228, 284,
179161 /* 2010 */ 590, 401, 402, 338, 286, 287, 328, 599, 1295, 1290,
179162 /* 2020 */ 1564, 175, 428, 1565, 429, 1563, 176, 871, 159, 177,
179163 /* 2030 */ 1562, 318, 229, 466, 465, 230, 221, 91, 332, 469,
179164 /* 2040 */ 1169, 471, 474, 94, 249, 189, 584, 95, 244, 1127,
179165 /* 2050 */ 188, 1125, 178, 342, 190, 43, 1253, 179, 251, 950,
179166 /* 2060 */ 254, 350, 192, 1141, 197, 180, 181, 438, 182, 440,
179167 /* 2070 */ 102, 103, 248, 104, 199, 1065, 1144, 256, 105, 1140,
179168 /* 2080 */ 257, 125, 125, 24, 166, 258, 361, 1133, 274, 126,
179169 /* 2090 */ 515, 465, 596, 465, 260, 15, 1053, 204, 264, 382,
179170 /* 2100 */ 886, 92, 587, 1268, 4, 203, 520, 427, 205, 524,
179171 /* 2110 */ 107, 25, 330, 586, 374, 574, 26, 916, 590, 529,
179172 /* 2120 */ 377, 929, 109, 319, 167, 110, 27, 184, 1053, 1053,
179173 /* 2130 */ 1055, 1056, 35, 540, 532, 1215, 477, 1094, 111, 1185,
179174 /* 2140 */ 17, 234, 465, 293, 1184, 295, 207, 997, 129, 273,
179175 /* 2150 */ 1205, 28, 1003, 29, 584, 30, 1201, 1218, 1208, 31,
179176 /* 2160 */ 1203, 1209, 32, 1190, 41, 568, 33, 34, 211, 115,
179177 /* 2170 */ 8, 1108, 1095, 1093, 1097, 1098, 279, 580, 122, 1149,
179178 /* 2180 */ 36, 117, 18, 1065, 1058, 118, 898, 128, 37, 125,
179179 /* 2190 */ 125, 406, 591, 186, 960, 280, 281, 126, 1652, 465,
179180 /* 2200 */ 596, 465, 1222, 467, 1053, 157, 301, 1224, 1223, 1286,
179181 /* 2210 */ 1286, 408, 408, 407, 285, 405, 1286, 1286, 884, 1286,
179182 /* 2220 */ 301, 1286, 1286, 573, 1286, 408, 408, 407, 285, 405,
179183 /* 2230 */ 1286, 247, 884, 339, 1286, 1286, 1053, 1053, 1055, 1056,
179184 /* 2240 */ 35, 338, 1286, 1286, 1286, 247, 1286, 339, 1286, 1286,
179185 /* 2250 */ 1286, 1286, 1286, 1286, 1286, 338, 1286, 1286, 1286, 1286,
179186 /* 2260 */ 1286, 1286, 1286, 1286, 1286, 1218, 1286, 1286, 1286, 1286,
179187 /* 2270 */ 1286, 1286, 249, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179188 /* 2280 */ 178, 1286, 1286, 43, 1286, 1286, 249, 1286, 1286, 1286,
179189 /* 2290 */ 1286, 1286, 1286, 1286, 178, 1286, 1286, 43, 1286, 1286,
179190 /* 2300 */ 248, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179191 /* 2310 */ 1286, 1286, 1286, 1286, 248, 1286, 1286, 1286, 1286, 1286,
179192 /* 2320 */ 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
179193 /* 2330 */ 1286, 1286, 1286, 1286, 1286, 427, 1286, 1286, 1286, 1286,
179194 /* 2340 */ 330, 586, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 427,
179195 /* 2350 */ 1286, 1286, 1286, 1286, 330, 586, 1286, 1286, 1286, 1286,
179196 /* 2360 */ 1286, 1286, 1286, 1286, 477, 1286, 1286, 1286, 1286, 1286,
179197 /* 2370 */ 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 477,
179198 };
179199 static const YYCODETYPE yy_lookahead[] = {
179200 /* 0 */ 277, 278, 279, 241, 242, 225, 195, 227, 195, 246,
179201 /* 10 */ 195, 195, 195, 221, 195, 235, 254, 195, 256, 19,
179202 /* 20 */ 257, 298, 277, 278, 279, 206, 213, 214, 206, 218,
179203 /* 30 */ 219, 31, 206, 218, 219, 218, 219, 218, 219, 39,
179204 /* 40 */ 218, 219, 29, 43, 44, 45, 33, 47, 48, 49,
179205 /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 19,
179206 /* 60 */ 241, 242, 276, 241, 242, 195, 255, 241, 242, 277,
179207 /* 70 */ 278, 279, 11, 254, 255, 256, 254, 255, 256, 66,
179208 /* 80 */ 254, 265, 256, 43, 44, 45, 264, 47, 48, 49,
179209 /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 215,
179210 /* 100 */ 287, 315, 316, 103, 104, 105, 106, 107, 108, 109,
179211 /* 110 */ 110, 111, 112, 113, 114, 237, 238, 195, 74, 195,
179212 /* 120 */ 187, 188, 189, 190, 191, 192, 82, 87, 25, 89,
179213 /* 130 */ 197, 19, 199, 318, 319, 318, 319, 25, 195, 206,
179214 /* 140 */ 218, 219, 195, 103, 104, 105, 106, 107, 108, 109,
179215 /* 150 */ 110, 111, 112, 113, 114, 43, 44, 45, 195, 47,
179216 /* 160 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
179217 /* 170 */ 58, 60, 128, 289, 241, 242, 114, 255, 294, 60,
179218 /* 180 */ 310, 311, 70, 139, 140, 218, 264, 254, 77, 256,
179219 /* 190 */ 129, 130, 73, 55, 56, 57, 58, 59, 221, 88,
179220 /* 200 */ 218, 90, 269, 240, 93, 107, 108, 109, 110, 111,
179221 /* 210 */ 112, 113, 114, 215, 271, 103, 104, 105, 106, 107,
179222 /* 220 */ 108, 109, 110, 111, 112, 113, 114, 218, 117, 118,
179223 /* 230 */ 119, 307, 299, 309, 301, 19, 117, 118, 119, 129,
179224 /* 240 */ 130, 103, 104, 105, 106, 107, 108, 109, 110, 111,
179225 /* 250 */ 112, 113, 114, 150, 277, 278, 279, 146, 311, 43,
179226 /* 260 */ 44, 45, 195, 47, 48, 49, 50, 51, 52, 53,
179227 /* 270 */ 54, 55, 56, 57, 58, 277, 278, 279, 313, 19,
179228 /* 280 */ 195, 195, 317, 23, 68, 218, 219, 25, 55, 56,
179229 /* 290 */ 57, 58, 109, 110, 111, 112, 113, 114, 22, 23,
179230 /* 300 */ 233, 25, 313, 43, 44, 45, 317, 47, 48, 49,
179231 /* 310 */ 50, 51, 52, 53, 54, 55, 56, 57, 58, 103,
179232 /* 320 */ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
179233 /* 330 */ 114, 232, 60, 212, 213, 214, 103, 104, 105, 106,
179234 /* 340 */ 107, 108, 109, 110, 111, 112, 113, 114, 103, 104,
179235 /* 350 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179236 /* 360 */ 24, 195, 200, 103, 104, 105, 106, 107, 108, 109,
179237 /* 370 */ 110, 111, 112, 113, 114, 251, 60, 253, 102, 107,
179238 /* 380 */ 108, 119, 313, 19, 218, 219, 317, 23, 116, 117,
179239 /* 390 */ 118, 119, 195, 121, 206, 22, 60, 26, 312, 313,
179240 /* 400 */ 195, 129, 205, 317, 207, 35, 144, 43, 44, 45,
179241 /* 410 */ 195, 47, 48, 49, 50, 51, 52, 53, 54, 55,
179242 /* 420 */ 56, 57, 58, 218, 219, 82, 154, 19, 156, 241,
179243 /* 430 */ 242, 60, 24, 117, 118, 119, 120, 67, 233, 123,
179244 /* 440 */ 124, 125, 254, 195, 256, 75, 284, 259, 260, 133,
179245 /* 450 */ 288, 43, 44, 45, 118, 47, 48, 49, 50, 51,
179246 /* 460 */ 52, 53, 54, 55, 56, 57, 58, 103, 104, 105,
179247 /* 470 */ 106, 107, 108, 109, 110, 111, 112, 113, 114, 195,
179248 /* 480 */ 107, 108, 139, 140, 318, 195, 320, 195, 117, 118,
179249 /* 490 */ 119, 61, 19, 20, 120, 22, 195, 123, 124, 125,
179250 /* 500 */ 195, 131, 218, 219, 195, 195, 146, 133, 207, 36,
179251 /* 510 */ 295, 103, 104, 105, 106, 107, 108, 109, 110, 111,
179252 /* 520 */ 112, 113, 114, 218, 219, 165, 60, 195, 218, 219,
179253 /* 530 */ 240, 19, 240, 60, 189, 190, 191, 192, 233, 255,
179254 /* 540 */ 139, 140, 197, 233, 199, 72, 61, 272, 264, 195,
179255 /* 550 */ 120, 206, 195, 19, 60, 43, 44, 45, 206, 47,
179256 /* 560 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
179257 /* 570 */ 58, 25, 218, 219, 101, 109, 112, 113, 114, 195,
179258 /* 580 */ 107, 108, 109, 117, 118, 119, 241, 242, 115, 195,
179259 /* 590 */ 117, 118, 119, 241, 242, 122, 60, 206, 195, 254,
179260 /* 600 */ 60, 256, 218, 219, 195, 120, 254, 195, 256, 73,
179261 /* 610 */ 125, 117, 118, 119, 269, 103, 104, 105, 106, 107,
179262 /* 620 */ 108, 109, 110, 111, 112, 113, 114, 154, 155, 156,
179263 /* 630 */ 157, 158, 241, 242, 240, 281, 19, 234, 144, 255,
179264 /* 640 */ 23, 206, 166, 167, 299, 254, 301, 256, 264, 240,
179265 /* 650 */ 116, 117, 295, 117, 118, 119, 183, 117, 118, 119,
179266 /* 660 */ 43, 44, 45, 151, 47, 48, 49, 50, 51, 52,
179267 /* 670 */ 53, 54, 55, 56, 57, 58, 241, 242, 266, 145,
179268 /* 680 */ 19, 241, 242, 242, 23, 139, 140, 77, 25, 254,
179269 /* 690 */ 195, 256, 152, 276, 254, 254, 256, 256, 88, 206,
179270 /* 700 */ 90, 60, 206, 93, 43, 44, 45, 272, 47, 48,
179271 /* 710 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179272 /* 720 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
179273 /* 730 */ 113, 114, 315, 316, 241, 242, 131, 241, 242, 134,
179274 /* 740 */ 22, 206, 101, 22, 82, 19, 20, 254, 22, 256,
179275 /* 750 */ 254, 74, 256, 263, 22, 195, 146, 267, 117, 118,
179276 /* 760 */ 276, 266, 36, 122, 103, 104, 105, 106, 107, 108,
179277 /* 770 */ 109, 110, 111, 112, 113, 114, 241, 242, 60, 217,
179278 /* 780 */ 130, 60, 195, 121, 19, 195, 60, 225, 23, 254,
179279 /* 790 */ 127, 256, 60, 237, 238, 154, 155, 156, 72, 315,
179280 /* 800 */ 316, 139, 140, 153, 22, 128, 129, 130, 43, 44,
179281 /* 810 */ 45, 195, 47, 48, 49, 50, 51, 52, 53, 54,
179282 /* 820 */ 55, 56, 57, 58, 183, 304, 305, 101, 19, 60,
179283 /* 830 */ 243, 271, 23, 107, 108, 117, 118, 119, 117, 118,
179284 /* 840 */ 119, 115, 60, 117, 118, 119, 16, 195, 122, 117,
179285 /* 850 */ 118, 119, 43, 44, 45, 22, 47, 48, 49, 50,
179286 /* 860 */ 51, 52, 53, 54, 55, 56, 57, 58, 103, 104,
179287 /* 870 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179288 /* 880 */ 154, 155, 156, 157, 158, 295, 117, 118, 119, 60,
179289 /* 890 */ 101, 60, 240, 60, 307, 21, 309, 195, 195, 117,
179290 /* 900 */ 118, 119, 195, 47, 48, 49, 50, 118, 78, 183,
179291 /* 910 */ 80, 122, 103, 104, 105, 106, 107, 108, 109, 110,
179292 /* 920 */ 111, 112, 113, 114, 195, 218, 219, 16, 312, 313,
179293 /* 930 */ 195, 195, 19, 317, 262, 263, 23, 212, 213, 214,
179294 /* 940 */ 233, 210, 211, 154, 155, 156, 117, 118, 119, 118,
179295 /* 950 */ 117, 118, 119, 218, 219, 81, 43, 44, 45, 195,
179296 /* 960 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179297 /* 970 */ 57, 58, 183, 144, 271, 122, 19, 190, 122, 192,
179298 /* 980 */ 23, 25, 218, 219, 197, 132, 199, 195, 286, 78,
179299 /* 990 */ 255, 80, 162, 206, 265, 107, 108, 233, 124, 195,
179300 /* 1000 */ 43, 44, 45, 195, 47, 48, 49, 50, 51, 52,
179301 /* 1010 */ 53, 54, 55, 56, 57, 58, 103, 104, 105, 106,
179302 /* 1020 */ 107, 108, 109, 110, 111, 112, 113, 114, 241, 242,
179303 /* 1030 */ 195, 195, 31, 77, 195, 243, 162, 195, 195, 195,
179304 /* 1040 */ 39, 254, 154, 256, 156, 19, 90, 203, 19, 93,
179305 /* 1050 */ 24, 208, 208, 218, 219, 195, 269, 218, 219, 195,
179306 /* 1060 */ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
179307 /* 1070 */ 113, 114, 233, 230, 266, 232, 47, 263, 218, 219,
179308 /* 1080 */ 19, 267, 218, 219, 23, 23, 299, 25, 301, 135,
179309 /* 1090 */ 255, 137, 138, 233, 47, 195, 195, 195, 25, 307,
179310 /* 1100 */ 19, 309, 22, 23, 43, 44, 45, 271, 47, 48,
179311 /* 1110 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179312 /* 1120 */ 218, 219, 96, 195, 43, 44, 45, 195, 47, 48,
179313 /* 1130 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
179314 /* 1140 */ 114, 195, 195, 243, 243, 116, 120, 121, 122, 123,
179315 /* 1150 */ 124, 125, 126, 195, 195, 195, 195, 255, 132, 213,
179316 /* 1160 */ 214, 132, 234, 116, 103, 104, 105, 106, 107, 108,
179317 /* 1170 */ 109, 110, 111, 112, 113, 114, 218, 219, 218, 219,
179318 /* 1180 */ 195, 119, 102, 195, 103, 104, 105, 106, 107, 108,
179319 /* 1190 */ 109, 110, 111, 112, 113, 114, 22, 23, 22, 25,
179320 /* 1200 */ 24, 67, 12, 218, 219, 195, 144, 307, 307, 309,
179321 /* 1210 */ 309, 195, 77, 255, 19, 255, 143, 27, 23, 313,
179322 /* 1220 */ 86, 100, 313, 317, 265, 90, 317, 266, 93, 95,
179323 /* 1230 */ 210, 211, 42, 287, 19, 23, 60, 25, 43, 44,
179324 /* 1240 */ 45, 160, 47, 48, 49, 50, 51, 52, 53, 54,
179325 /* 1250 */ 55, 56, 57, 58, 64, 134, 109, 261, 43, 44,
179326 /* 1260 */ 45, 215, 47, 48, 49, 50, 51, 52, 53, 54,
179327 /* 1270 */ 55, 56, 57, 58, 210, 211, 102, 128, 129, 130,
179328 /* 1280 */ 12, 147, 266, 136, 163, 164, 302, 303, 141, 195,
179329 /* 1290 */ 25, 195, 19, 195, 118, 27, 228, 19, 103, 104,
179330 /* 1300 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179331 /* 1310 */ 42, 195, 218, 219, 218, 219, 218, 219, 103, 104,
179332 /* 1320 */ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
179333 /* 1330 */ 19, 195, 64, 195, 218, 219, 195, 259, 260, 195,
179334 /* 1340 */ 294, 195, 74, 195, 150, 151, 195, 246, 19, 7,
179335 /* 1350 */ 8, 9, 195, 24, 218, 219, 218, 219, 257, 218,
179336 /* 1360 */ 219, 195, 218, 219, 218, 219, 218, 219, 19, 218,
179337 /* 1370 */ 219, 98, 43, 44, 45, 160, 47, 48, 49, 50,
179338 /* 1380 */ 51, 52, 53, 54, 55, 56, 57, 58, 19, 128,
179339 /* 1390 */ 129, 130, 43, 44, 45, 117, 47, 48, 49, 50,
179340 /* 1400 */ 51, 52, 53, 54, 55, 56, 57, 58, 22, 22,
179341 /* 1410 */ 116, 146, 43, 44, 45, 195, 47, 48, 49, 50,
179342 /* 1420 */ 51, 52, 53, 54, 55, 56, 57, 58, 117, 159,
179343 /* 1430 */ 195, 161, 103, 104, 105, 106, 107, 108, 109, 110,
179344 /* 1440 */ 111, 112, 113, 114, 195, 151, 195, 60, 62, 15,
179345 /* 1450 */ 195, 25, 103, 104, 105, 106, 107, 108, 109, 110,
179346 /* 1460 */ 111, 112, 113, 114, 195, 228, 195, 218, 219, 218,
179347 /* 1470 */ 219, 195, 103, 104, 105, 106, 107, 108, 109, 110,
179348 /* 1480 */ 111, 112, 113, 114, 22, 195, 246, 218, 219, 218,
179349 /* 1490 */ 219, 195, 19, 22, 23, 61, 246, 257, 24, 136,
179350 /* 1500 */ 246, 22, 60, 24, 141, 118, 60, 257, 218, 219,
179351 /* 1510 */ 195, 257, 19, 195, 218, 219, 54, 44, 45, 195,
179352 /* 1520 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179353 /* 1530 */ 57, 58, 195, 218, 219, 195, 218, 219, 45, 195,
179354 /* 1540 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
179355 /* 1550 */ 57, 58, 195, 121, 122, 218, 219, 195, 218, 219,
179356 /* 1560 */ 118, 195, 218, 219, 118, 23, 195, 25, 195, 143,
179357 /* 1570 */ 195, 19, 20, 102, 22, 195, 103, 104, 105, 106,
179358 /* 1580 */ 107, 108, 109, 110, 111, 112, 113, 114, 36, 218,
179359 /* 1590 */ 219, 218, 219, 218, 219, 195, 103, 104, 105, 106,
179360 /* 1600 */ 107, 108, 109, 110, 111, 112, 113, 114, 195, 23,
179361 /* 1610 */ 23, 25, 60, 195, 195, 195, 142, 195, 218, 219,
179362 /* 1620 */ 195, 23, 195, 25, 72, 130, 116, 23, 195, 25,
179363 /* 1630 */ 195, 218, 219, 195, 82, 195, 218, 219, 218, 219,
179364 /* 1640 */ 218, 219, 195, 218, 219, 218, 219, 195, 153, 195,
179365 /* 1650 */ 195, 218, 219, 101, 195, 145, 218, 219, 195, 107,
179366 /* 1660 */ 108, 23, 195, 25, 195, 218, 219, 115, 22, 117,
179367 /* 1670 */ 118, 119, 218, 219, 122, 195, 195, 218, 219, 195,
179368 /* 1680 */ 60, 218, 219, 7, 8, 218, 219, 19, 20, 195,
179369 /* 1690 */ 22, 139, 140, 23, 23, 25, 25, 195, 218, 219,
179370 /* 1700 */ 84, 85, 218, 219, 36, 228, 154, 155, 156, 157,
179371 /* 1710 */ 158, 195, 23, 195, 25, 195, 195, 49, 195, 23,
179372 /* 1720 */ 195, 25, 195, 23, 195, 25, 195, 195, 60, 195,
179373 /* 1730 */ 195, 195, 195, 146, 195, 183, 218, 219, 118, 195,
179374 /* 1740 */ 72, 218, 219, 218, 219, 218, 219, 218, 219, 218,
179375 /* 1750 */ 219, 195, 218, 219, 86, 218, 219, 218, 219, 91,
179376 /* 1760 */ 19, 20, 154, 22, 156, 23, 258, 25, 195, 101,
179377 /* 1770 */ 195, 23, 195, 25, 195, 107, 108, 36, 23, 154,
179378 /* 1780 */ 25, 156, 23, 115, 25, 117, 118, 119, 142, 238,
179379 /* 1790 */ 122, 218, 219, 218, 219, 218, 219, 23, 322, 25,
179380 /* 1800 */ 195, 60, 195, 300, 195, 195, 195, 195, 195, 244,
179381 /* 1810 */ 291, 258, 290, 72, 245, 258, 258, 258, 216, 193,
179382 /* 1820 */ 274, 247, 154, 155, 156, 157, 158, 86, 300, 296,
179383 /* 1830 */ 300, 270, 91, 19, 20, 247, 22, 270, 248, 248,
179384 /* 1840 */ 274, 296, 101, 222, 274, 274, 231, 262, 107, 108,
179385 /* 1850 */ 36, 183, 221, 221, 227, 221, 115, 262, 117, 118,
179386 /* 1860 */ 119, 262, 262, 122, 283, 251, 247, 245, 251, 116,
179387 /* 1870 */ 198, 220, 61, 220, 60, 220, 300, 142, 38, 202,
179388 /* 1880 */ 202, 297, 202, 152, 151, 22, 72, 286, 43, 297,
179389 /* 1890 */ 236, 18, 202, 275, 18, 154, 155, 156, 157, 158,
179390 /* 1900 */ 86, 273, 239, 239, 239, 91, 239, 201, 150, 248,
179391 /* 1910 */ 275, 275, 273, 202, 248, 101, 201, 236, 236, 159,
179392 /* 1920 */ 63, 107, 108, 248, 183, 202, 293, 248, 201, 115,
179393 /* 1930 */ 22, 117, 118, 119, 292, 223, 122, 223, 202, 201,
179394 /* 1940 */ 220, 202, 220, 65, 201, 220, 229, 22, 127, 220,
179395 /* 1950 */ 226, 223, 226, 166, 222, 24, 316, 220, 308, 229,
179396 /* 1960 */ 220, 114, 92, 202, 220, 321, 321, 83, 154, 155,
179397 /* 1970 */ 156, 157, 158, 0, 1, 2, 285, 285, 5, 223,
179398 /* 1980 */ 149, 268, 146, 10, 11, 12, 13, 14, 22, 268,
179399 /* 1990 */ 17, 202, 159, 19, 20, 250, 22, 183, 252, 280,
179400 /* 2000 */ 251, 148, 252, 30, 25, 32, 147, 204, 13, 196,
179401 /* 2010 */ 36, 249, 248, 40, 196, 6, 282, 194, 194, 194,
179402 /* 2020 */ 215, 209, 306, 215, 306, 215, 209, 4, 224, 209,
179403 /* 2030 */ 215, 224, 216, 3, 60, 216, 22, 215, 122, 19,
179404 /* 2040 */ 122, 19, 125, 22, 71, 16, 72, 22, 15, 23,
179405 /* 2050 */ 303, 23, 79, 140, 152, 82, 25, 131, 24, 20,
179406 /* 2060 */ 145, 16, 143, 1, 143, 131, 131, 62, 131, 37,
179407 /* 2070 */ 54, 54, 99, 54, 152, 101, 117, 34, 54, 1,
179408 /* 2080 */ 142, 107, 108, 22, 5, 116, 162, 69, 25, 115,
179409 /* 2090 */ 41, 117, 118, 119, 142, 24, 122, 116, 126, 132,
179410 /* 2100 */ 20, 19, 20, 76, 22, 69, 19, 134, 22, 68,
179411 /* 2110 */ 22, 22, 139, 140, 23, 141, 22, 60, 36, 68,
179412 /* 2120 */ 24, 28, 22, 68, 23, 150, 34, 37, 154, 155,
179413 /* 2130 */ 156, 157, 158, 22, 97, 23, 163, 23, 25, 23,
179414 /* 2140 */ 22, 142, 60, 23, 98, 23, 22, 144, 25, 34,
179415 /* 2150 */ 76, 34, 117, 34, 72, 34, 89, 183, 94, 34,
179416 /* 2160 */ 87, 76, 34, 23, 22, 24, 34, 22, 25, 25,
179417 /* 2170 */ 44, 23, 23, 23, 23, 11, 22, 25, 25, 23,
179418 /* 2180 */ 22, 143, 22, 101, 23, 143, 23, 22, 22, 107,
179419 /* 2190 */ 108, 15, 25, 25, 136, 142, 142, 115, 142, 117,
179420 /* 2200 */ 118, 119, 1, 2, 122, 23, 5, 1, 1, 323,
179421 /* 2210 */ 323, 10, 11, 12, 13, 14, 323, 323, 17, 323,
179422 /* 2220 */ 5, 323, 323, 141, 323, 10, 11, 12, 13, 14,
179423 /* 2230 */ 323, 30, 17, 32, 323, 323, 154, 155, 156, 157,
179424 /* 2240 */ 158, 40, 323, 323, 323, 30, 323, 32, 323, 323,
179425 /* 2250 */ 323, 323, 323, 323, 323, 40, 323, 323, 323, 323,
179426 /* 2260 */ 323, 323, 323, 323, 323, 183, 323, 323, 323, 323,
179427 /* 2270 */ 323, 323, 71, 323, 323, 323, 323, 323, 323, 323,
179428 /* 2280 */ 79, 323, 323, 82, 323, 323, 71, 323, 323, 323,
179429 /* 2290 */ 323, 323, 323, 323, 79, 323, 323, 82, 323, 323,
179430 /* 2300 */ 99, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179431 /* 2310 */ 323, 323, 323, 323, 99, 323, 323, 323, 323, 323,
179432 /* 2320 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179433 /* 2330 */ 323, 323, 323, 323, 323, 134, 323, 323, 323, 323,
179434 /* 2340 */ 139, 140, 323, 323, 323, 323, 323, 323, 323, 134,
179435 /* 2350 */ 323, 323, 323, 323, 139, 140, 323, 323, 323, 323,
179436 /* 2360 */ 323, 323, 323, 323, 163, 323, 323, 323, 323, 323,
179437 /* 2370 */ 323, 323, 323, 323, 323, 323, 323, 323, 163, 323,
179438 /* 2380 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179439 /* 2390 */ 323, 323, 323, 323, 323, 323, 323, 323, 323, 323,
179440 /* 2400 */ 323, 323, 323, 323, 323, 323, 323, 323, 187, 187,
179441 /* 2410 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179442 /* 2420 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179443 /* 2430 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179444 /* 2440 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179445 /* 2450 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179446 /* 2460 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179447 /* 2470 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179448 /* 2480 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179449 /* 2490 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179450 /* 2500 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179451 /* 2510 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179452 /* 2520 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179453 /* 2530 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179454 /* 2540 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179455 /* 2550 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
179456 /* 2560 */ 187, 187, 187, 187, 187, 187,
179457 };
179458 #define YY_SHIFT_COUNT (601)
179459 #define YY_SHIFT_MIN (0)
179460 #define YY_SHIFT_MAX (2215)
179461 static const unsigned short int yy_shift_ofst[] = {
179462 /* 0 */ 2201, 1973, 2215, 1552, 1552, 343, 44, 1668, 1741, 1814,
179463 /* 10 */ 726, 726, 726, 662, 343, 343, 343, 343, 343, 0,
179464 /* 20 */ 0, 216, 1349, 726, 726, 726, 726, 726, 726, 726,
179465 /* 30 */ 726, 726, 726, 726, 726, 726, 726, 726, 272, 272,
179466 /* 40 */ 111, 111, 316, 119, 536, 769, 769, 546, 546, 546,
179467 /* 50 */ 546, 40, 112, 260, 364, 408, 512, 617, 661, 765,
179468 /* 60 */ 809, 913, 957, 1061, 1081, 1195, 1215, 1329, 1349, 1349,
179469 /* 70 */ 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
179470 /* 80 */ 1349, 1349, 1349, 1349, 1349, 1349, 1369, 1349, 1473, 1493,
179471 /* 90 */ 1493, 473, 1974, 2082, 726, 726, 726, 726, 726, 726,
179472 /* 100 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179473 /* 110 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179474 /* 120 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179475 /* 130 */ 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
179476 /* 140 */ 726, 726, 726, 726, 726, 726, 138, 233, 233, 233,
179477 /* 150 */ 233, 233, 233, 233, 245, 98, 183, 371, 874, 1029,
179478 /* 160 */ 769, 769, 888, 888, 769, 464, 110, 476, 476, 476,
179479 /* 170 */ 401, 62, 62, 2379, 2379, 1026, 1026, 1026, 540, 718,
179480 /* 180 */ 718, 718, 718, 1268, 1268, 610, 371, 276, 1174, 769,
179481 /* 190 */ 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
179482 /* 200 */ 769, 769, 769, 769, 769, 769, 769, 769, 534, 956,
179483 /* 210 */ 956, 769, 61, 1135, 1135, 831, 1278, 1278, 831, 831,
179484 /* 220 */ 360, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 641, 789,
179485 /* 230 */ 789, 721, 374, 732, 466, 782, 494, 829, 833, 769,
179486 /* 240 */ 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
179487 /* 250 */ 769, 769, 769, 677, 769, 769, 769, 769, 769, 769,
179488 /* 260 */ 769, 769, 769, 769, 769, 769, 370, 370, 370, 769,
179489 /* 270 */ 769, 769, 1062, 769, 769, 769, 1176, 1134, 769, 1190,
179490 /* 280 */ 769, 769, 769, 769, 769, 769, 769, 769, 485, 1149,
179491 /* 290 */ 13, 954, 336, 336, 336, 336, 262, 954, 954, 1147,
179492 /* 300 */ 373, 1342, 430, 1434, 1294, 1194, 1073, 1194, 1311, 103,
179493 /* 310 */ 1294, 1294, 103, 1294, 1073, 1311, 663, 1212, 1047, 1001,
179494 /* 320 */ 1001, 1001, 1510, 1510, 1510, 1510, 1265, 1265, 1270, 1426,
179495 /* 330 */ 1363, 1479, 1753, 1811, 1753, 1753, 1735, 1735, 1840, 1840,
179496 /* 340 */ 1735, 1731, 1733, 1863, 1845, 1873, 1873, 1873, 1873, 1735,
179497 /* 350 */ 1876, 1758, 1733, 1733, 1758, 1863, 1845, 1758, 1845, 1758,
179498 /* 360 */ 1735, 1876, 1760, 1857, 1735, 1876, 1908, 1735, 1876, 1735,
179499 /* 370 */ 1876, 1908, 1753, 1753, 1753, 1878, 1925, 1925, 1908, 1753,
179500 /* 380 */ 1821, 1753, 1878, 1753, 1753, 1787, 1931, 1847, 1847, 1908,
179501 /* 390 */ 1735, 1870, 1870, 1884, 1884, 1831, 1836, 1966, 1735, 1833,
179502 /* 400 */ 1831, 1853, 1859, 1758, 1979, 1995, 1995, 2009, 2009, 2009,
179503 /* 410 */ 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379, 2379,
179504 /* 420 */ 2379, 2379, 2379, 2379, 2379, 856, 1121, 830, 1080, 1471,
179505 /* 430 */ 911, 1261, 1387, 1542, 605, 1462, 1474, 650, 1495, 1586,
179506 /* 440 */ 1386, 1598, 1604, 1638, 1670, 1671, 1689, 1442, 1432, 1676,
179507 /* 450 */ 853, 1696, 1587, 1273, 1446, 1700, 1742, 1616, 1748, 1755,
179508 /* 460 */ 1608, 1625, 1759, 1774, 1620, 1646, 2023, 2030, 2014, 1916,
179509 /* 470 */ 2020, 1918, 2022, 2021, 2025, 1917, 2033, 2029, 2026, 2028,
179510 /* 480 */ 1913, 1902, 1926, 2031, 2031, 2034, 1919, 2039, 1915, 2045,
179511 /* 490 */ 2062, 1921, 1934, 2031, 1935, 2005, 2032, 2031, 1922, 2016,
179512 /* 500 */ 2017, 2019, 2024, 1937, 1959, 2043, 1938, 2078, 2079, 2061,
179513 /* 510 */ 1969, 1924, 2018, 2063, 2036, 2027, 2049, 1952, 1981, 2071,
179514 /* 520 */ 2080, 2087, 1967, 1972, 2086, 2041, 2088, 2089, 2091, 2094,
179515 /* 530 */ 2051, 2057, 2096, 2037, 2093, 2100, 2055, 2090, 2101, 2092,
179516 /* 540 */ 1975, 2111, 2112, 2114, 2113, 2116, 2118, 2046, 1999, 2120,
179517 /* 550 */ 2122, 2035, 2115, 2124, 2003, 2123, 2117, 2119, 2121, 2125,
179518 /* 560 */ 2067, 2074, 2073, 2126, 2085, 2064, 2128, 2140, 2142, 2141,
179519 /* 570 */ 2143, 2144, 2132, 2038, 2042, 2148, 2123, 2149, 2150, 2151,
179520 /* 580 */ 2145, 2152, 2153, 2156, 2154, 2164, 2158, 2160, 2161, 2163,
179521 /* 590 */ 2165, 2166, 2167, 2058, 2053, 2054, 2056, 2168, 2182, 2176,
179522 /* 600 */ 2206, 2207,
179523 };
179524 #define YY_REDUCE_COUNT (424)
179525 #define YY_REDUCE_MIN (-277)
179526 #define YY_REDUCE_MAX (1825)
179527 static const short yy_reduce_ofst[] = {
179528 /* 0 */ -67, 345, 787, -178, -181, 188, 435, -185, 166, -183,
179529 /* 10 */ -78, 284, 384, -174, 352, 391, 493, 496, 535, -208,
179530 /* 20 */ -23, -277, -2, 205, 305, 310, 707, 764, -189, 67,
179531 /* 30 */ 839, 735, 835, 860, 902, 354, 958, 960, -187, 946,
179532 /* 40 */ 86, 616, 843, 587, 792, 900, 901, -238, 440, -238,
179533 /* 50 */ 440, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179534 /* 60 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179535 /* 70 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179536 /* 80 */ -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
179537 /* 90 */ -255, 864, 985, 1094, 1096, 1098, 1116, 1136, 1138, 1141,
179538 /* 100 */ 1144, 1146, 1148, 1151, 1249, 1251, 1269, 1271, 1290, 1296,
179539 /* 110 */ 1315, 1318, 1337, 1340, 1344, 1371, 1373, 1375, 1400, 1413,
179540 /* 120 */ 1418, 1420, 1422, 1425, 1427, 1433, 1438, 1447, 1454, 1459,
179541 /* 130 */ 1463, 1467, 1480, 1484, 1518, 1523, 1525, 1527, 1529, 1531,
179542 /* 140 */ 1534, 1537, 1539, 1573, 1575, 1577, -255, -255, -255, -255,
179543 /* 150 */ -255, -255, -255, -255, -255, -255, -255, 197, 162, -220,
179544 /* 160 */ -76, -130, 121, 725, 844, -255, -116, -214, 417, 484,
179545 /* 170 */ 441, -255, -255, -255, -255, 562, 562, 562, 702, -57,
179546 /* 180 */ 560, 703, 836, -122, 556, -35, 301, 521, 521, -37,
179547 /* 190 */ -184, 729, 959, 290, 292, 394, 409, 215, 412, 357,
179548 /* 200 */ 495, 808, 590, 961, 652, 403, 928, 1016, 672, -11,
179549 /* 210 */ 69, -53, 1046, 906, 909, 731, 490, 814, 1020, 1064,
179550 /* 220 */ 124, 984, -237, 1101, 1240, 1250, 1078, 1254, -33, -18,
179551 /* 230 */ 9, 85, 99, 248, 309, 332, 736, 804, 842, 932,
179552 /* 240 */ 947, 988, 1010, 1157, 1166, 1220, 1235, 1255, 1276, 1324,
179553 /* 250 */ 1357, 1362, 1366, 275, 1380, 1419, 1435, 1440, 1452, 1455,
179554 /* 260 */ 1469, 1481, 1494, 1502, 1516, 1520, 1068, 1237, 1477, 1521,
179555 /* 270 */ 1532, 1535, 996, 1536, 1544, 1556, 1508, 1476, 1579, 1551,
179556 /* 280 */ 1605, 309, 1607, 1609, 1610, 1611, 1612, 1613, 1503, 1519,
179557 /* 290 */ 1522, 1565, 1553, 1557, 1558, 1559, 996, 1565, 1565, 1569,
179558 /* 300 */ 1602, 1626, 1528, 1530, 1546, 1561, 1574, 1567, 1533, 1590,
179559 /* 310 */ 1566, 1570, 1591, 1571, 1588, 1545, 1621, 1615, 1627, 1631,
179560 /* 320 */ 1632, 1634, 1585, 1595, 1599, 1600, 1614, 1617, 1581, 1619,
179561 /* 330 */ 1622, 1672, 1651, 1576, 1653, 1655, 1677, 1678, 1584, 1592,
179562 /* 340 */ 1680, 1601, 1618, 1628, 1654, 1663, 1664, 1665, 1667, 1690,
179563 /* 350 */ 1706, 1661, 1635, 1636, 1666, 1639, 1681, 1675, 1682, 1679,
179564 /* 360 */ 1711, 1715, 1633, 1642, 1723, 1727, 1712, 1736, 1738, 1739,
179565 /* 370 */ 1743, 1714, 1720, 1722, 1725, 1717, 1724, 1726, 1728, 1729,
179566 /* 380 */ 1732, 1737, 1730, 1740, 1744, 1640, 1650, 1691, 1692, 1756,
179567 /* 390 */ 1761, 1644, 1645, 1713, 1721, 1746, 1749, 1719, 1789, 1734,
179568 /* 400 */ 1750, 1745, 1762, 1764, 1803, 1813, 1818, 1823, 1824, 1825,
179569 /* 410 */ 1716, 1718, 1747, 1812, 1805, 1808, 1810, 1815, 1817, 1804,
179570 /* 420 */ 1807, 1816, 1819, 1822, 1820,
179571 };
179572 static const YYACTIONTYPE yy_default[] = {
179573 /* 0 */ 1698, 1698, 1698, 1521, 1284, 1397, 1284, 1284, 1284, 1284,
179574 /* 10 */ 1521, 1521, 1521, 1284, 1284, 1284, 1284, 1284, 1284, 1427,
179575 /* 20 */ 1427, 1574, 1317, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179576 /* 30 */ 1284, 1284, 1284, 1284, 1284, 1520, 1284, 1284, 1284, 1284,
179577 /* 40 */ 1613, 1613, 1284, 1284, 1284, 1284, 1284, 1598, 1597, 1284,
179578 /* 50 */ 1284, 1284, 1436, 1284, 1284, 1284, 1443, 1284, 1284, 1284,
179579 /* 60 */ 1284, 1284, 1522, 1523, 1284, 1284, 1284, 1284, 1573, 1575,
179580 /* 70 */ 1538, 1450, 1449, 1448, 1447, 1556, 1415, 1441, 1434, 1438,
179581 /* 80 */ 1517, 1518, 1516, 1676, 1523, 1522, 1284, 1437, 1485, 1501,
179582 /* 90 */ 1484, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179583 /* 100 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179584 /* 110 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179585 /* 120 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179586 /* 130 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179587 /* 140 */ 1284, 1284, 1284, 1284, 1284, 1284, 1493, 1500, 1499, 1498,
179588 /* 150 */ 1507, 1497, 1494, 1487, 1486, 1488, 1489, 1308, 1305, 1359,
179589 /* 160 */ 1284, 1284, 1284, 1284, 1284, 1490, 1317, 1478, 1477, 1476,
179590 /* 170 */ 1284, 1504, 1491, 1503, 1502, 1581, 1650, 1649, 1539, 1284,
179591 /* 180 */ 1284, 1284, 1284, 1284, 1284, 1613, 1284, 1284, 1284, 1284,
179592 /* 190 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179593 /* 200 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1417, 1613,
179594 /* 210 */ 1613, 1284, 1317, 1613, 1613, 1313, 1418, 1418, 1313, 1313,
179595 /* 220 */ 1421, 1593, 1388, 1388, 1388, 1388, 1397, 1388, 1284, 1284,
179596 /* 230 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179597 /* 240 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1578, 1576, 1284,
179598 /* 250 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179599 /* 260 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179600 /* 270 */ 1284, 1284, 1284, 1284, 1284, 1284, 1393, 1284, 1284, 1284,
179601 /* 280 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1643, 1690, 1284,
179602 /* 290 */ 1551, 1373, 1393, 1393, 1393, 1393, 1395, 1374, 1372, 1387,
179603 /* 300 */ 1318, 1291, 1690, 1690, 1453, 1442, 1394, 1442, 1687, 1440,
179604 /* 310 */ 1453, 1453, 1440, 1453, 1394, 1687, 1334, 1665, 1329, 1427,
179605 /* 320 */ 1427, 1427, 1417, 1417, 1417, 1417, 1421, 1421, 1519, 1394,
179606 /* 330 */ 1387, 1284, 1360, 1690, 1360, 1360, 1403, 1403, 1689, 1689,
179607 /* 340 */ 1403, 1539, 1673, 1462, 1362, 1368, 1368, 1368, 1368, 1403,
179608 /* 350 */ 1302, 1440, 1673, 1673, 1440, 1462, 1362, 1440, 1362, 1440,
179609 /* 360 */ 1403, 1302, 1555, 1684, 1403, 1302, 1529, 1403, 1302, 1403,
179610 /* 370 */ 1302, 1529, 1360, 1360, 1360, 1349, 1284, 1284, 1529, 1360,
179611 /* 380 */ 1334, 1360, 1349, 1360, 1360, 1631, 1284, 1533, 1533, 1529,
179612 /* 390 */ 1403, 1623, 1623, 1430, 1430, 1435, 1421, 1524, 1403, 1284,
179613 /* 400 */ 1435, 1433, 1431, 1440, 1352, 1646, 1646, 1642, 1642, 1642,
179614 /* 410 */ 1695, 1695, 1593, 1658, 1317, 1317, 1317, 1317, 1658, 1336,
179615 /* 420 */ 1336, 1318, 1318, 1317, 1658, 1284, 1284, 1284, 1284, 1284,
179616 /* 430 */ 1284, 1284, 1653, 1284, 1284, 1540, 1407, 1284, 1284, 1284,
179617 /* 440 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179618 /* 450 */ 1284, 1284, 1284, 1599, 1284, 1284, 1284, 1284, 1284, 1284,
179619 /* 460 */ 1284, 1284, 1284, 1284, 1284, 1467, 1284, 1287, 1590, 1284,
179620 /* 470 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179621 /* 480 */ 1284, 1284, 1284, 1444, 1445, 1408, 1284, 1284, 1284, 1284,
179622 /* 490 */ 1284, 1284, 1284, 1459, 1284, 1284, 1284, 1454, 1284, 1284,
179623 /* 500 */ 1284, 1284, 1284, 1284, 1284, 1284, 1686, 1284, 1284, 1284,
179624 /* 510 */ 1284, 1284, 1284, 1554, 1553, 1284, 1284, 1405, 1284, 1284,
179625 /* 520 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179626 /* 530 */ 1284, 1332, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179627 /* 540 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179628 /* 550 */ 1284, 1284, 1284, 1284, 1284, 1432, 1284, 1284, 1284, 1284,
179629 /* 560 */ 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179630 /* 570 */ 1628, 1422, 1284, 1284, 1284, 1284, 1677, 1284, 1284, 1284,
179631 /* 580 */ 1284, 1382, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
179632 /* 590 */ 1284, 1284, 1669, 1376, 1468, 1284, 1471, 1306, 1284, 1296,
179633 /* 600 */ 1284, 1284,
179634 };
179635 /********** End of lemon-generated parsing tables *****************************/
179636
179637 /* The next table maps tokens (terminal symbols) into fallback tokens.
179638 ** If a construct like the following:
@@ -179456,11 +180217,11 @@
180217 /* 294 */ "trigger_cmd",
180218 /* 295 */ "trnm",
180219 /* 296 */ "tridxby",
180220 /* 297 */ "database_kw_opt",
180221 /* 298 */ "key_opt",
180222 /* 299 */ "alter_add",
180223 /* 300 */ "kwcolumn_opt",
180224 /* 301 */ "create_vtab",
180225 /* 302 */ "vtabarglist",
180226 /* 303 */ "vtabarg",
180227 /* 304 */ "vtabargtoken",
@@ -179781,125 +180542,130 @@
180542 /* 289 */ "cmd ::= REINDEX",
180543 /* 290 */ "cmd ::= REINDEX nm dbnm",
180544 /* 291 */ "cmd ::= ANALYZE",
180545 /* 292 */ "cmd ::= ANALYZE nm dbnm",
180546 /* 293 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
180547 /* 294 */ "cmd ::= alter_add carglist",
180548 /* 295 */ "alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken",
180549 /* 296 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
180550 /* 297 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
180551 /* 298 */ "cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm",
180552 /* 299 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL",
180553 /* 300 */ "cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf",
180554 /* 301 */ "cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf",
180555 /* 302 */ "cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf",
180556 /* 303 */ "cmd ::= create_vtab",
180557 /* 304 */ "cmd ::= create_vtab LP vtabarglist RP",
180558 /* 305 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
180559 /* 306 */ "vtabarg ::=",
180560 /* 307 */ "vtabargtoken ::= ANY",
180561 /* 308 */ "vtabargtoken ::= lp anylist RP",
180562 /* 309 */ "lp ::= LP",
180563 /* 310 */ "with ::= WITH wqlist",
180564 /* 311 */ "with ::= WITH RECURSIVE wqlist",
180565 /* 312 */ "wqas ::= AS",
180566 /* 313 */ "wqas ::= AS MATERIALIZED",
180567 /* 314 */ "wqas ::= AS NOT MATERIALIZED",
180568 /* 315 */ "wqitem ::= withnm eidlist_opt wqas LP select RP",
180569 /* 316 */ "withnm ::= nm",
180570 /* 317 */ "wqlist ::= wqitem",
180571 /* 318 */ "wqlist ::= wqlist COMMA wqitem",
180572 /* 319 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
180573 /* 320 */ "windowdefn ::= nm AS LP window RP",
180574 /* 321 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
180575 /* 322 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
180576 /* 323 */ "window ::= ORDER BY sortlist frame_opt",
180577 /* 324 */ "window ::= nm ORDER BY sortlist frame_opt",
180578 /* 325 */ "window ::= nm frame_opt",
180579 /* 326 */ "frame_opt ::=",
180580 /* 327 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
180581 /* 328 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
180582 /* 329 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
180583 /* 330 */ "frame_bound_s ::= frame_bound",
180584 /* 331 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
180585 /* 332 */ "frame_bound_e ::= frame_bound",
180586 /* 333 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
180587 /* 334 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
180588 /* 335 */ "frame_bound ::= CURRENT ROW",
180589 /* 336 */ "frame_exclude_opt ::=",
180590 /* 337 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
180591 /* 338 */ "frame_exclude ::= NO OTHERS",
180592 /* 339 */ "frame_exclude ::= CURRENT ROW",
180593 /* 340 */ "frame_exclude ::= GROUP|TIES",
180594 /* 341 */ "window_clause ::= WINDOW windowdefn_list",
180595 /* 342 */ "filter_over ::= filter_clause over_clause",
180596 /* 343 */ "filter_over ::= over_clause",
180597 /* 344 */ "filter_over ::= filter_clause",
180598 /* 345 */ "over_clause ::= OVER LP window RP",
180599 /* 346 */ "over_clause ::= OVER nm",
180600 /* 347 */ "filter_clause ::= FILTER LP WHERE expr RP",
180601 /* 348 */ "term ::= QNUMBER",
180602 /* 349 */ "input ::= cmdlist",
180603 /* 350 */ "cmdlist ::= cmdlist ecmd",
180604 /* 351 */ "cmdlist ::= ecmd",
180605 /* 352 */ "ecmd ::= SEMI",
180606 /* 353 */ "ecmd ::= cmdx SEMI",
180607 /* 354 */ "ecmd ::= explain cmdx SEMI",
180608 /* 355 */ "trans_opt ::=",
180609 /* 356 */ "trans_opt ::= TRANSACTION",
180610 /* 357 */ "trans_opt ::= TRANSACTION nm",
180611 /* 358 */ "savepoint_opt ::= SAVEPOINT",
180612 /* 359 */ "savepoint_opt ::=",
180613 /* 360 */ "cmd ::= create_table create_table_args",
180614 /* 361 */ "table_option_set ::= table_option",
180615 /* 362 */ "columnlist ::= columnlist COMMA columnname carglist",
180616 /* 363 */ "columnlist ::= columnname carglist",
180617 /* 364 */ "nm ::= ID|INDEXED|JOIN_KW",
180618 /* 365 */ "nm ::= STRING",
180619 /* 366 */ "typetoken ::= typename",
180620 /* 367 */ "typename ::= ID|STRING",
180621 /* 368 */ "signed ::= plus_num",
180622 /* 369 */ "signed ::= minus_num",
180623 /* 370 */ "carglist ::= carglist ccons",
180624 /* 371 */ "carglist ::=",
180625 /* 372 */ "ccons ::= NULL onconf",
180626 /* 373 */ "ccons ::= GENERATED ALWAYS AS generated",
180627 /* 374 */ "ccons ::= AS generated",
180628 /* 375 */ "conslist_opt ::= COMMA conslist",
180629 /* 376 */ "conslist ::= conslist tconscomma tcons",
180630 /* 377 */ "conslist ::= tcons",
180631 /* 378 */ "tconscomma ::=",
180632 /* 379 */ "defer_subclause_opt ::= defer_subclause",
180633 /* 380 */ "resolvetype ::= raisetype",
180634 /* 381 */ "selectnowith ::= oneselect",
180635 /* 382 */ "oneselect ::= values",
180636 /* 383 */ "sclp ::= selcollist COMMA",
180637 /* 384 */ "as ::= ID|STRING",
180638 /* 385 */ "indexed_opt ::= indexed_by",
180639 /* 386 */ "returning ::=",
180640 /* 387 */ "expr ::= term",
180641 /* 388 */ "likeop ::= LIKE_KW|MATCH",
180642 /* 389 */ "case_operand ::= expr",
180643 /* 390 */ "exprlist ::= nexprlist",
180644 /* 391 */ "nmnum ::= plus_num",
180645 /* 392 */ "nmnum ::= nm",
180646 /* 393 */ "nmnum ::= ON",
180647 /* 394 */ "nmnum ::= DELETE",
180648 /* 395 */ "nmnum ::= DEFAULT",
180649 /* 396 */ "plus_num ::= INTEGER|FLOAT",
180650 /* 397 */ "foreach_clause ::=",
180651 /* 398 */ "foreach_clause ::= FOR EACH ROW",
180652 /* 399 */ "trnm ::= nm",
180653 /* 400 */ "tridxby ::=",
180654 /* 401 */ "database_kw_opt ::= DATABASE",
180655 /* 402 */ "database_kw_opt ::=",
180656 /* 403 */ "kwcolumn_opt ::=",
180657 /* 404 */ "kwcolumn_opt ::= COLUMNKW",
180658 /* 405 */ "vtabarglist ::= vtabarg",
180659 /* 406 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
180660 /* 407 */ "vtabarg ::= vtabarg vtabargtoken",
180661 /* 408 */ "anylist ::=",
180662 /* 409 */ "anylist ::= anylist LP anylist RP",
180663 /* 410 */ "anylist ::= anylist ANY",
180664 /* 411 */ "with ::=",
180665 /* 412 */ "windowdefn_list ::= windowdefn",
180666 /* 413 */ "window ::= frame_opt",
180667 };
180668 #endif /* NDEBUG */
180669
180670
180671 #if YYGROWABLESTACK
@@ -180717,125 +181483,130 @@
181483 192, /* (289) cmd ::= REINDEX */
181484 192, /* (290) cmd ::= REINDEX nm dbnm */
181485 192, /* (291) cmd ::= ANALYZE */
181486 192, /* (292) cmd ::= ANALYZE nm dbnm */
181487 192, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
181488 192, /* (294) cmd ::= alter_add carglist */
181489 299, /* (295) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
181490 192, /* (296) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
181491 192, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
181492 192, /* (298) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
181493 192, /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
181494 192, /* (300) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
181495 192, /* (301) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
181496 192, /* (302) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
181497 192, /* (303) cmd ::= create_vtab */
181498 192, /* (304) cmd ::= create_vtab LP vtabarglist RP */
181499 301, /* (305) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181500 303, /* (306) vtabarg ::= */
181501 304, /* (307) vtabargtoken ::= ANY */
181502 304, /* (308) vtabargtoken ::= lp anylist RP */
181503 305, /* (309) lp ::= LP */
181504 269, /* (310) with ::= WITH wqlist */
181505 269, /* (311) with ::= WITH RECURSIVE wqlist */
181506 308, /* (312) wqas ::= AS */
181507 308, /* (313) wqas ::= AS MATERIALIZED */
181508 308, /* (314) wqas ::= AS NOT MATERIALIZED */
181509 307, /* (315) wqitem ::= withnm eidlist_opt wqas LP select RP */
181510 309, /* (316) withnm ::= nm */
181511 243, /* (317) wqlist ::= wqitem */
181512 243, /* (318) wqlist ::= wqlist COMMA wqitem */
181513 310, /* (319) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181514 311, /* (320) windowdefn ::= nm AS LP window RP */
181515 312, /* (321) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181516 312, /* (322) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181517 312, /* (323) window ::= ORDER BY sortlist frame_opt */
181518 312, /* (324) window ::= nm ORDER BY sortlist frame_opt */
181519 312, /* (325) window ::= nm frame_opt */
181520 313, /* (326) frame_opt ::= */
181521 313, /* (327) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181522 313, /* (328) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181523 317, /* (329) range_or_rows ::= RANGE|ROWS|GROUPS */
181524 319, /* (330) frame_bound_s ::= frame_bound */
181525 319, /* (331) frame_bound_s ::= UNBOUNDED PRECEDING */
181526 320, /* (332) frame_bound_e ::= frame_bound */
181527 320, /* (333) frame_bound_e ::= UNBOUNDED FOLLOWING */
181528 318, /* (334) frame_bound ::= expr PRECEDING|FOLLOWING */
181529 318, /* (335) frame_bound ::= CURRENT ROW */
181530 321, /* (336) frame_exclude_opt ::= */
181531 321, /* (337) frame_exclude_opt ::= EXCLUDE frame_exclude */
181532 322, /* (338) frame_exclude ::= NO OTHERS */
181533 322, /* (339) frame_exclude ::= CURRENT ROW */
181534 322, /* (340) frame_exclude ::= GROUP|TIES */
181535 253, /* (341) window_clause ::= WINDOW windowdefn_list */
181536 276, /* (342) filter_over ::= filter_clause over_clause */
181537 276, /* (343) filter_over ::= over_clause */
181538 276, /* (344) filter_over ::= filter_clause */
181539 316, /* (345) over_clause ::= OVER LP window RP */
181540 316, /* (346) over_clause ::= OVER nm */
181541 315, /* (347) filter_clause ::= FILTER LP WHERE expr RP */
181542 218, /* (348) term ::= QNUMBER */
181543 187, /* (349) input ::= cmdlist */
181544 188, /* (350) cmdlist ::= cmdlist ecmd */
181545 188, /* (351) cmdlist ::= ecmd */
181546 189, /* (352) ecmd ::= SEMI */
181547 189, /* (353) ecmd ::= cmdx SEMI */
181548 189, /* (354) ecmd ::= explain cmdx SEMI */
181549 194, /* (355) trans_opt ::= */
181550 194, /* (356) trans_opt ::= TRANSACTION */
181551 194, /* (357) trans_opt ::= TRANSACTION nm */
181552 196, /* (358) savepoint_opt ::= SAVEPOINT */
181553 196, /* (359) savepoint_opt ::= */
181554 192, /* (360) cmd ::= create_table create_table_args */
181555 205, /* (361) table_option_set ::= table_option */
181556 203, /* (362) columnlist ::= columnlist COMMA columnname carglist */
181557 203, /* (363) columnlist ::= columnname carglist */
181558 195, /* (364) nm ::= ID|INDEXED|JOIN_KW */
181559 195, /* (365) nm ::= STRING */
181560 210, /* (366) typetoken ::= typename */
181561 211, /* (367) typename ::= ID|STRING */
181562 212, /* (368) signed ::= plus_num */
181563 212, /* (369) signed ::= minus_num */
181564 209, /* (370) carglist ::= carglist ccons */
181565 209, /* (371) carglist ::= */
181566 217, /* (372) ccons ::= NULL onconf */
181567 217, /* (373) ccons ::= GENERATED ALWAYS AS generated */
181568 217, /* (374) ccons ::= AS generated */
181569 204, /* (375) conslist_opt ::= COMMA conslist */
181570 230, /* (376) conslist ::= conslist tconscomma tcons */
181571 230, /* (377) conslist ::= tcons */
181572 231, /* (378) tconscomma ::= */
181573 235, /* (379) defer_subclause_opt ::= defer_subclause */
181574 237, /* (380) resolvetype ::= raisetype */
181575 241, /* (381) selectnowith ::= oneselect */
181576 242, /* (382) oneselect ::= values */
181577 257, /* (383) sclp ::= selcollist COMMA */
181578 258, /* (384) as ::= ID|STRING */
181579 267, /* (385) indexed_opt ::= indexed_by */
181580 275, /* (386) returning ::= */
181581 219, /* (387) expr ::= term */
181582 277, /* (388) likeop ::= LIKE_KW|MATCH */
181583 281, /* (389) case_operand ::= expr */
181584 264, /* (390) exprlist ::= nexprlist */
181585 287, /* (391) nmnum ::= plus_num */
181586 287, /* (392) nmnum ::= nm */
181587 287, /* (393) nmnum ::= ON */
181588 287, /* (394) nmnum ::= DELETE */
181589 287, /* (395) nmnum ::= DEFAULT */
181590 213, /* (396) plus_num ::= INTEGER|FLOAT */
181591 292, /* (397) foreach_clause ::= */
181592 292, /* (398) foreach_clause ::= FOR EACH ROW */
181593 295, /* (399) trnm ::= nm */
181594 296, /* (400) tridxby ::= */
181595 297, /* (401) database_kw_opt ::= DATABASE */
181596 297, /* (402) database_kw_opt ::= */
181597 300, /* (403) kwcolumn_opt ::= */
181598 300, /* (404) kwcolumn_opt ::= COLUMNKW */
181599 302, /* (405) vtabarglist ::= vtabarg */
181600 302, /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */
181601 303, /* (407) vtabarg ::= vtabarg vtabargtoken */
181602 306, /* (408) anylist ::= */
181603 306, /* (409) anylist ::= anylist LP anylist RP */
181604 306, /* (410) anylist ::= anylist ANY */
181605 269, /* (411) with ::= */
181606 310, /* (412) windowdefn_list ::= windowdefn */
181607 312, /* (413) window ::= frame_opt */
181608 };
181609
181610 /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
181611 ** of symbols on the right-hand side of that rule. */
181612 static const signed char yyRuleInfoNRhs[] = {
@@ -181131,125 +181902,130 @@
181902 -1, /* (289) cmd ::= REINDEX */
181903 -3, /* (290) cmd ::= REINDEX nm dbnm */
181904 -1, /* (291) cmd ::= ANALYZE */
181905 -3, /* (292) cmd ::= ANALYZE nm dbnm */
181906 -6, /* (293) cmd ::= ALTER TABLE fullname RENAME TO nm */
181907 -2, /* (294) cmd ::= alter_add carglist */
181908 -7, /* (295) alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
181909 -6, /* (296) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
181910 -8, /* (297) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
181911 -6, /* (298) cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
181912 -9, /* (299) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
181913 -10, /* (300) cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
181914 -11, /* (301) cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
181915 -9, /* (302) cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
181916 -1, /* (303) cmd ::= create_vtab */
181917 -4, /* (304) cmd ::= create_vtab LP vtabarglist RP */
181918 -8, /* (305) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
181919 0, /* (306) vtabarg ::= */
181920 -1, /* (307) vtabargtoken ::= ANY */
181921 -3, /* (308) vtabargtoken ::= lp anylist RP */
181922 -1, /* (309) lp ::= LP */
181923 -2, /* (310) with ::= WITH wqlist */
181924 -3, /* (311) with ::= WITH RECURSIVE wqlist */
181925 -1, /* (312) wqas ::= AS */
181926 -2, /* (313) wqas ::= AS MATERIALIZED */
181927 -3, /* (314) wqas ::= AS NOT MATERIALIZED */
181928 -6, /* (315) wqitem ::= withnm eidlist_opt wqas LP select RP */
181929 -1, /* (316) withnm ::= nm */
181930 -1, /* (317) wqlist ::= wqitem */
181931 -3, /* (318) wqlist ::= wqlist COMMA wqitem */
181932 -3, /* (319) windowdefn_list ::= windowdefn_list COMMA windowdefn */
181933 -5, /* (320) windowdefn ::= nm AS LP window RP */
181934 -5, /* (321) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
181935 -6, /* (322) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
181936 -4, /* (323) window ::= ORDER BY sortlist frame_opt */
181937 -5, /* (324) window ::= nm ORDER BY sortlist frame_opt */
181938 -2, /* (325) window ::= nm frame_opt */
181939 0, /* (326) frame_opt ::= */
181940 -3, /* (327) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
181941 -6, /* (328) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
181942 -1, /* (329) range_or_rows ::= RANGE|ROWS|GROUPS */
181943 -1, /* (330) frame_bound_s ::= frame_bound */
181944 -2, /* (331) frame_bound_s ::= UNBOUNDED PRECEDING */
181945 -1, /* (332) frame_bound_e ::= frame_bound */
181946 -2, /* (333) frame_bound_e ::= UNBOUNDED FOLLOWING */
181947 -2, /* (334) frame_bound ::= expr PRECEDING|FOLLOWING */
181948 -2, /* (335) frame_bound ::= CURRENT ROW */
181949 0, /* (336) frame_exclude_opt ::= */
181950 -2, /* (337) frame_exclude_opt ::= EXCLUDE frame_exclude */
181951 -2, /* (338) frame_exclude ::= NO OTHERS */
181952 -2, /* (339) frame_exclude ::= CURRENT ROW */
181953 -1, /* (340) frame_exclude ::= GROUP|TIES */
181954 -2, /* (341) window_clause ::= WINDOW windowdefn_list */
181955 -2, /* (342) filter_over ::= filter_clause over_clause */
181956 -1, /* (343) filter_over ::= over_clause */
181957 -1, /* (344) filter_over ::= filter_clause */
181958 -4, /* (345) over_clause ::= OVER LP window RP */
181959 -2, /* (346) over_clause ::= OVER nm */
181960 -5, /* (347) filter_clause ::= FILTER LP WHERE expr RP */
181961 -1, /* (348) term ::= QNUMBER */
181962 -1, /* (349) input ::= cmdlist */
181963 -2, /* (350) cmdlist ::= cmdlist ecmd */
181964 -1, /* (351) cmdlist ::= ecmd */
181965 -1, /* (352) ecmd ::= SEMI */
181966 -2, /* (353) ecmd ::= cmdx SEMI */
181967 -3, /* (354) ecmd ::= explain cmdx SEMI */
181968 0, /* (355) trans_opt ::= */
181969 -1, /* (356) trans_opt ::= TRANSACTION */
181970 -2, /* (357) trans_opt ::= TRANSACTION nm */
181971 -1, /* (358) savepoint_opt ::= SAVEPOINT */
181972 0, /* (359) savepoint_opt ::= */
181973 -2, /* (360) cmd ::= create_table create_table_args */
181974 -1, /* (361) table_option_set ::= table_option */
181975 -4, /* (362) columnlist ::= columnlist COMMA columnname carglist */
181976 -2, /* (363) columnlist ::= columnname carglist */
181977 -1, /* (364) nm ::= ID|INDEXED|JOIN_KW */
181978 -1, /* (365) nm ::= STRING */
181979 -1, /* (366) typetoken ::= typename */
181980 -1, /* (367) typename ::= ID|STRING */
181981 -1, /* (368) signed ::= plus_num */
181982 -1, /* (369) signed ::= minus_num */
181983 -2, /* (370) carglist ::= carglist ccons */
181984 0, /* (371) carglist ::= */
181985 -2, /* (372) ccons ::= NULL onconf */
181986 -4, /* (373) ccons ::= GENERATED ALWAYS AS generated */
181987 -2, /* (374) ccons ::= AS generated */
181988 -2, /* (375) conslist_opt ::= COMMA conslist */
181989 -3, /* (376) conslist ::= conslist tconscomma tcons */
181990 -1, /* (377) conslist ::= tcons */
181991 0, /* (378) tconscomma ::= */
181992 -1, /* (379) defer_subclause_opt ::= defer_subclause */
181993 -1, /* (380) resolvetype ::= raisetype */
181994 -1, /* (381) selectnowith ::= oneselect */
181995 -1, /* (382) oneselect ::= values */
181996 -2, /* (383) sclp ::= selcollist COMMA */
181997 -1, /* (384) as ::= ID|STRING */
181998 -1, /* (385) indexed_opt ::= indexed_by */
181999 0, /* (386) returning ::= */
182000 -1, /* (387) expr ::= term */
182001 -1, /* (388) likeop ::= LIKE_KW|MATCH */
182002 -1, /* (389) case_operand ::= expr */
182003 -1, /* (390) exprlist ::= nexprlist */
182004 -1, /* (391) nmnum ::= plus_num */
182005 -1, /* (392) nmnum ::= nm */
182006 -1, /* (393) nmnum ::= ON */
182007 -1, /* (394) nmnum ::= DELETE */
182008 -1, /* (395) nmnum ::= DEFAULT */
182009 -1, /* (396) plus_num ::= INTEGER|FLOAT */
182010 0, /* (397) foreach_clause ::= */
182011 -3, /* (398) foreach_clause ::= FOR EACH ROW */
182012 -1, /* (399) trnm ::= nm */
182013 0, /* (400) tridxby ::= */
182014 -1, /* (401) database_kw_opt ::= DATABASE */
182015 0, /* (402) database_kw_opt ::= */
182016 0, /* (403) kwcolumn_opt ::= */
182017 -1, /* (404) kwcolumn_opt ::= COLUMNKW */
182018 -1, /* (405) vtabarglist ::= vtabarg */
182019 -3, /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */
182020 -2, /* (407) vtabarg ::= vtabarg vtabargtoken */
182021 0, /* (408) anylist ::= */
182022 -4, /* (409) anylist ::= anylist LP anylist RP */
182023 -2, /* (410) anylist ::= anylist ANY */
182024 0, /* (411) with ::= */
182025 -1, /* (412) windowdefn_list ::= windowdefn */
182026 -1, /* (413) window ::= frame_opt */
182027 };
182028
182029 static void yy_accept(yyParser*); /* Forward Declaration */
182030
182031 /*
@@ -181305,11 +182081,11 @@
182081 {yymsp[1].minor.yy502 = TK_DEFERRED;}
182082 break;
182083 case 5: /* transtype ::= DEFERRED */
182084 case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
182085 case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
182086 case 329: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==329);
182087 {yymsp[0].minor.yy502 = yymsp[0].major; /*A-overwrites-X*/}
182088 break;
182089 case 8: /* cmd ::= COMMIT|END trans_opt */
182090 case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
182091 {sqlite3EndTransaction(pParse,yymsp[-1].major);}
@@ -182576,177 +183352,206 @@
183352 case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
183353 {
183354 sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy563,&yymsp[0].minor.yy0);
183355 }
183356 break;
183357 case 294: /* cmd ::= alter_add carglist */
183358 {
183359 yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
183360 sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
183361 }
183362 break;
183363 case 295: /* alter_add ::= ALTER TABLE fullname ADD kwcolumn_opt nm typetoken */
 
 
 
 
 
183364 {
183365 disableLookaside(pParse);
183366 sqlite3AlterBeginAddColumn(pParse, yymsp[-4].minor.yy563);
183367 sqlite3AddColumn(pParse, yymsp[-1].minor.yy0, yymsp[0].minor.yy0);
183368 yymsp[-6].minor.yy0 = yymsp[-1].minor.yy0;
183369 }
183370 break;
183371 case 296: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */
183372 {
183373 sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0);
183374 }
183375 break;
183376 case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
183377 {
183378 sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy563, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
183379 }
183380 break;
183381 case 298: /* cmd ::= ALTER TABLE fullname DROP CONSTRAINT nm */
183382 {
183383 sqlite3AlterDropConstraint(pParse, yymsp[-3].minor.yy563, &yymsp[0].minor.yy0, 0);
183384 }
183385 break;
183386 case 299: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm DROP NOT NULL */
183387 {
183388 sqlite3AlterDropConstraint(pParse, yymsp[-6].minor.yy563, 0, &yymsp[-3].minor.yy0);
183389 }
183390 break;
183391 case 300: /* cmd ::= ALTER TABLE fullname ALTER kwcolumn_opt nm SET NOT NULL onconf */
183392 {
183393 sqlite3AlterSetNotNull(pParse, yymsp[-7].minor.yy563, &yymsp[-4].minor.yy0, &yymsp[-2].minor.yy0);
183394 }
183395 break;
183396 case 301: /* cmd ::= ALTER TABLE fullname ADD CONSTRAINT nm CHECK LP expr RP onconf */
183397 {
183398 sqlite3AlterAddConstraint(pParse, yymsp[-8].minor.yy563, &yymsp[-6].minor.yy0, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
183399 }
183400 yy_destructor(yypParser,219,&yymsp[-2].minor);
183401 break;
183402 case 302: /* cmd ::= ALTER TABLE fullname ADD CHECK LP expr RP onconf */
183403 {
183404 sqlite3AlterAddConstraint(pParse, yymsp[-6].minor.yy563, &yymsp[-4].minor.yy0, 0, yymsp[-3].minor.yy0.z+1, (yymsp[-1].minor.yy0.z-yymsp[-3].minor.yy0.z-1));
183405 }
183406 yy_destructor(yypParser,219,&yymsp[-2].minor);
183407 break;
183408 case 303: /* cmd ::= create_vtab */
183409 {sqlite3VtabFinishParse(pParse,0);}
183410 break;
183411 case 304: /* cmd ::= create_vtab LP vtabarglist RP */
183412 {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
183413 break;
183414 case 305: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
183415 {
183416 sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy502);
183417 }
183418 break;
183419 case 306: /* vtabarg ::= */
183420 {sqlite3VtabArgInit(pParse);}
183421 break;
183422 case 307: /* vtabargtoken ::= ANY */
183423 case 308: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==308);
183424 case 309: /* lp ::= LP */ yytestcase(yyruleno==309);
183425 {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
183426 break;
183427 case 310: /* with ::= WITH wqlist */
183428 case 311: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==311);
183429 { sqlite3WithPush(pParse, yymsp[0].minor.yy125, 1); }
183430 break;
183431 case 312: /* wqas ::= AS */
183432 {yymsp[0].minor.yy444 = M10d_Any;}
183433 break;
183434 case 313: /* wqas ::= AS MATERIALIZED */
183435 {yymsp[-1].minor.yy444 = M10d_Yes;}
183436 break;
183437 case 314: /* wqas ::= AS NOT MATERIALIZED */
183438 {yymsp[-2].minor.yy444 = M10d_No;}
183439 break;
183440 case 315: /* wqitem ::= withnm eidlist_opt wqas LP select RP */
183441 {
183442 yymsp[-5].minor.yy361 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy402, yymsp[-1].minor.yy637, yymsp[-3].minor.yy444); /*A-overwrites-X*/
183443 }
183444 break;
183445 case 316: /* withnm ::= nm */
183446 {pParse->bHasWith = 1;}
183447 break;
183448 case 317: /* wqlist ::= wqitem */
183449 {
183450 yymsp[0].minor.yy125 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy361); /*A-overwrites-X*/
183451 }
183452 break;
183453 case 318: /* wqlist ::= wqlist COMMA wqitem */
183454 {
183455 yymsp[-2].minor.yy125 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy125, yymsp[0].minor.yy361);
183456 }
183457 break;
183458 case 319: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
183459 {
183460 assert( yymsp[0].minor.yy483!=0 );
183461 sqlite3WindowChain(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy483);
183462 yymsp[0].minor.yy483->pNextWin = yymsp[-2].minor.yy483;
183463 yylhsminor.yy483 = yymsp[0].minor.yy483;
183464 }
183465 yymsp[-2].minor.yy483 = yylhsminor.yy483;
183466 break;
183467 case 320: /* windowdefn ::= nm AS LP window RP */
183468 {
183469 if( ALWAYS(yymsp[-1].minor.yy483) ){
183470 yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
183471 }
183472 yylhsminor.yy483 = yymsp[-1].minor.yy483;
183473 }
183474 yymsp[-4].minor.yy483 = yylhsminor.yy483;
183475 break;
183476 case 321: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
183477 {
183478 yymsp[-4].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, 0);
183479 }
183480 break;
183481 case 322: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
183482 {
183483 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, yymsp[-2].minor.yy402, yymsp[-1].minor.yy402, &yymsp[-5].minor.yy0);
183484 }
183485 yymsp[-5].minor.yy483 = yylhsminor.yy483;
183486 break;
183487 case 323: /* window ::= ORDER BY sortlist frame_opt */
183488 {
183489 yymsp[-3].minor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, 0);
183490 }
183491 break;
183492 case 324: /* window ::= nm ORDER BY sortlist frame_opt */
183493 {
183494 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, yymsp[-1].minor.yy402, &yymsp[-4].minor.yy0);
183495 }
183496 yymsp[-4].minor.yy483 = yylhsminor.yy483;
183497 break;
183498 case 325: /* window ::= nm frame_opt */
183499 {
183500 yylhsminor.yy483 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy483, 0, 0, &yymsp[-1].minor.yy0);
183501 }
183502 yymsp[-1].minor.yy483 = yylhsminor.yy483;
183503 break;
183504 case 326: /* frame_opt ::= */
183505 {
183506 yymsp[1].minor.yy483 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
183507 }
183508 break;
183509 case 327: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
183510 {
183511 yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy502, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy444);
183512 }
183513 yymsp[-2].minor.yy483 = yylhsminor.yy483;
183514 break;
183515 case 328: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
183516 {
183517 yylhsminor.yy483 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy502, yymsp[-3].minor.yy205.eType, yymsp[-3].minor.yy205.pExpr, yymsp[-1].minor.yy205.eType, yymsp[-1].minor.yy205.pExpr, yymsp[0].minor.yy444);
183518 }
183519 yymsp[-5].minor.yy483 = yylhsminor.yy483;
183520 break;
183521 case 330: /* frame_bound_s ::= frame_bound */
183522 case 332: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==332);
183523 {yylhsminor.yy205 = yymsp[0].minor.yy205;}
183524 yymsp[0].minor.yy205 = yylhsminor.yy205;
183525 break;
183526 case 331: /* frame_bound_s ::= UNBOUNDED PRECEDING */
183527 case 333: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==333);
183528 case 335: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==335);
183529 {yylhsminor.yy205.eType = yymsp[-1].major; yylhsminor.yy205.pExpr = 0;}
183530 yymsp[-1].minor.yy205 = yylhsminor.yy205;
183531 break;
183532 case 334: /* frame_bound ::= expr PRECEDING|FOLLOWING */
183533 {yylhsminor.yy205.eType = yymsp[0].major; yylhsminor.yy205.pExpr = yymsp[-1].minor.yy590;}
183534 yymsp[-1].minor.yy205 = yylhsminor.yy205;
183535 break;
183536 case 336: /* frame_exclude_opt ::= */
183537 {yymsp[1].minor.yy444 = 0;}
183538 break;
183539 case 337: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
183540 {yymsp[-1].minor.yy444 = yymsp[0].minor.yy444;}
183541 break;
183542 case 338: /* frame_exclude ::= NO OTHERS */
183543 case 339: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==339);
183544 {yymsp[-1].minor.yy444 = yymsp[-1].major; /*A-overwrites-X*/}
183545 break;
183546 case 340: /* frame_exclude ::= GROUP|TIES */
183547 {yymsp[0].minor.yy444 = yymsp[0].major; /*A-overwrites-X*/}
183548 break;
183549 case 341: /* window_clause ::= WINDOW windowdefn_list */
183550 { yymsp[-1].minor.yy483 = yymsp[0].minor.yy483; }
183551 break;
183552 case 342: /* filter_over ::= filter_clause over_clause */
183553 {
183554 if( yymsp[0].minor.yy483 ){
183555 yymsp[0].minor.yy483->pFilter = yymsp[-1].minor.yy590;
183556 }else{
183557 sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy590);
@@ -182753,17 +183558,17 @@
183558 }
183559 yylhsminor.yy483 = yymsp[0].minor.yy483;
183560 }
183561 yymsp[-1].minor.yy483 = yylhsminor.yy483;
183562 break;
183563 case 343: /* filter_over ::= over_clause */
183564 {
183565 yylhsminor.yy483 = yymsp[0].minor.yy483;
183566 }
183567 yymsp[0].minor.yy483 = yylhsminor.yy483;
183568 break;
183569 case 344: /* filter_over ::= filter_clause */
183570 {
183571 yylhsminor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
183572 if( yylhsminor.yy483 ){
183573 yylhsminor.yy483->eFrmType = TK_FILTER;
183574 yylhsminor.yy483->pFilter = yymsp[0].minor.yy590;
@@ -182771,100 +183576,100 @@
183576 sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy590);
183577 }
183578 }
183579 yymsp[0].minor.yy483 = yylhsminor.yy483;
183580 break;
183581 case 345: /* over_clause ::= OVER LP window RP */
183582 {
183583 yymsp[-3].minor.yy483 = yymsp[-1].minor.yy483;
183584 assert( yymsp[-3].minor.yy483!=0 );
183585 }
183586 break;
183587 case 346: /* over_clause ::= OVER nm */
183588 {
183589 yymsp[-1].minor.yy483 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
183590 if( yymsp[-1].minor.yy483 ){
183591 yymsp[-1].minor.yy483->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
183592 }
183593 }
183594 break;
183595 case 347: /* filter_clause ::= FILTER LP WHERE expr RP */
183596 { yymsp[-4].minor.yy590 = yymsp[-1].minor.yy590; }
183597 break;
183598 case 348: /* term ::= QNUMBER */
183599 {
183600 yylhsminor.yy590=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0);
183601 sqlite3DequoteNumber(pParse, yylhsminor.yy590);
183602 }
183603 yymsp[0].minor.yy590 = yylhsminor.yy590;
183604 break;
183605 default:
183606 /* (349) input ::= cmdlist */ yytestcase(yyruleno==349);
183607 /* (350) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==350);
183608 /* (351) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=351);
183609 /* (352) ecmd ::= SEMI */ yytestcase(yyruleno==352);
183610 /* (353) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==353);
183611 /* (354) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=354);
183612 /* (355) trans_opt ::= */ yytestcase(yyruleno==355);
183613 /* (356) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==356);
183614 /* (357) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==357);
183615 /* (358) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==358);
183616 /* (359) savepoint_opt ::= */ yytestcase(yyruleno==359);
183617 /* (360) cmd ::= create_table create_table_args */ yytestcase(yyruleno==360);
183618 /* (361) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=361);
183619 /* (362) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==362);
183620 /* (363) columnlist ::= columnname carglist */ yytestcase(yyruleno==363);
183621 /* (364) nm ::= ID|INDEXED|JOIN_KW */ yytestcase(yyruleno==364);
183622 /* (365) nm ::= STRING */ yytestcase(yyruleno==365);
183623 /* (366) typetoken ::= typename */ yytestcase(yyruleno==366);
183624 /* (367) typename ::= ID|STRING */ yytestcase(yyruleno==367);
183625 /* (368) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=368);
183626 /* (369) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=369);
183627 /* (370) carglist ::= carglist ccons */ yytestcase(yyruleno==370);
183628 /* (371) carglist ::= */ yytestcase(yyruleno==371);
183629 /* (372) ccons ::= NULL onconf */ yytestcase(yyruleno==372);
183630 /* (373) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==373);
183631 /* (374) ccons ::= AS generated */ yytestcase(yyruleno==374);
183632 /* (375) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==375);
183633 /* (376) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==376);
183634 /* (377) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=377);
183635 /* (378) tconscomma ::= */ yytestcase(yyruleno==378);
183636 /* (379) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=379);
183637 /* (380) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=380);
183638 /* (381) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=381);
183639 /* (382) oneselect ::= values */ yytestcase(yyruleno==382);
183640 /* (383) sclp ::= selcollist COMMA */ yytestcase(yyruleno==383);
183641 /* (384) as ::= ID|STRING */ yytestcase(yyruleno==384);
183642 /* (385) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=385);
183643 /* (386) returning ::= */ yytestcase(yyruleno==386);
183644 /* (387) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=387);
183645 /* (388) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==388);
183646 /* (389) case_operand ::= expr */ yytestcase(yyruleno==389);
183647 /* (390) exprlist ::= nexprlist */ yytestcase(yyruleno==390);
183648 /* (391) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=391);
183649 /* (392) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=392);
183650 /* (393) nmnum ::= ON */ yytestcase(yyruleno==393);
183651 /* (394) nmnum ::= DELETE */ yytestcase(yyruleno==394);
183652 /* (395) nmnum ::= DEFAULT */ yytestcase(yyruleno==395);
183653 /* (396) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==396);
183654 /* (397) foreach_clause ::= */ yytestcase(yyruleno==397);
183655 /* (398) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==398);
183656 /* (399) trnm ::= nm */ yytestcase(yyruleno==399);
183657 /* (400) tridxby ::= */ yytestcase(yyruleno==400);
183658 /* (401) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==401);
183659 /* (402) database_kw_opt ::= */ yytestcase(yyruleno==402);
183660 /* (403) kwcolumn_opt ::= */ yytestcase(yyruleno==403);
183661 /* (404) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==404);
183662 /* (405) vtabarglist ::= vtabarg */ yytestcase(yyruleno==405);
183663 /* (406) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==406);
183664 /* (407) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==407);
183665 /* (408) anylist ::= */ yytestcase(yyruleno==408);
183666 /* (409) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==409);
183667 /* (410) anylist ::= anylist ANY */ yytestcase(yyruleno==410);
183668 /* (411) with ::= */ yytestcase(yyruleno==411);
183669 /* (412) windowdefn_list ::= windowdefn (OPTIMIZED OUT) */ assert(yyruleno!=412);
183670 /* (413) window ::= frame_opt (OPTIMIZED OUT) */ assert(yyruleno!=413);
183671 break;
183672 /********** End reduce actions ************************************************/
183673 };
183674 assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) );
183675 yygoto = yyRuleInfoLhs[yyruleno];
@@ -260458,11 +261263,11 @@
261263 int nArg, /* Number of args */
261264 sqlite3_value **apUnused /* Function arguments */
261265 ){
261266 assert( nArg==0 );
261267 UNUSED_PARAM2(nArg, apUnused);
261268 sqlite3_result_text(pCtx, "fts5: 2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3", -1, SQLITE_TRANSIENT);
261269 }
261270
261271 /*
261272 ** Implementation of fts5_locale(LOCALE, TEXT) function.
261273 **
261274
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.52.0"
150150
#define SQLITE_VERSION_NUMBER 3052000
151
-#define SQLITE_SOURCE_ID "2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901"
151
+#define SQLITE_SOURCE_ID "2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3"
152152
#define SQLITE_SCM_BRANCH "trunk"
153153
#define SQLITE_SCM_TAGS ""
154
-#define SQLITE_SCM_DATETIME "2025-11-19T19:37:28.777Z"
154
+#define SQLITE_SCM_DATETIME "2025-11-21T17:30:44.138Z"
155155
156156
/*
157157
** CAPI3REF: Run-Time Library Version Numbers
158158
** KEYWORDS: sqlite3_version sqlite3_sourceid
159159
**
160160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2025-11-19 19:37:28 b65b29656c835db22557733f4dcfe906bf21a7a3c36266cbbc7e3277f029b901"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS ""
154 #define SQLITE_SCM_DATETIME "2025-11-19T19:37:28.777Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2025-11-21 17:30:44 8a230e4da230a7b103749b069a99a58e4c220873c2f9576abdc928c3538d70b3"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS ""
154 #define SQLITE_SCM_DATETIME "2025-11-21T17:30:44.138Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button