From 4390b0bfbe2641ff26a35372184880348a19919e Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 2 Feb 1999 03:45:56 +0000 Subject: [PATCH] Add TEMP tables/indexes. Add COPY pfree(). Other cleanups. --- doc/src/sgml/ref/copy.sgml | 2 +- doc/src/sgml/ref/create_table.sgml | 14 +- doc/src/sgml/ref/select.sgml | 16 +- doc/src/sgml/ref/set.sgml | 4 +- src/Makefile.global.in | 50 +- src/backend/access/heap/hio.c | 6 +- src/backend/access/transam/xact.c | 8 +- src/backend/bootstrap/bootparse.y | 7 +- src/backend/catalog/heap.c | 346 +- src/backend/catalog/index.c | 167 +- src/backend/catalog/indexing.c | 10 +- src/backend/commands/cluster.c | 5 +- src/backend/commands/copy.c | 8 +- src/backend/commands/creatinh.c | 8 +- src/backend/commands/defind.c | 8 +- src/backend/commands/recipe.c | 6 +- src/backend/commands/rename.c | 27 +- src/backend/commands/view.c | 3 +- src/backend/executor/execAmi.c | 4 +- src/backend/executor/execMain.c | 4 +- src/backend/executor/nodeTee.c | 6 +- src/backend/nodes/copyfuncs.c | 4 +- src/backend/nodes/outfuncs.c | 12 +- src/backend/nodes/readfuncs.c | 6 +- src/backend/parser/analyze.c | 6 +- src/backend/parser/gram.c | 12067 ++++++++-------- src/backend/parser/gram.y | 44 +- src/backend/parser/keywords.c | 3 +- src/backend/parser/parse.h | 209 +- src/backend/rewrite/rewriteHandler.c | 10 +- src/backend/storage/buffer/bufmgr.c | 10 +- src/backend/storage/large_object/inv_api.c | 15 +- src/backend/tcop/postgres.c | 7 +- src/backend/utils/cache/Makefile | 5 +- src/backend/utils/cache/catcache.c | 3 +- src/backend/utils/cache/inval.c | 45 +- src/backend/utils/cache/relcache.c | 92 +- src/backend/utils/cache/temprel.c | 165 + src/backend/utils/init/enbl.c | 4 +- src/backend/utils/sort/psort.c | 7 +- src/bin/psql/psqlHelp.h | 6 +- src/include/catalog/heap.h | 12 +- src/include/nodes/parsenodes.h | 5 +- src/include/optimizer/internal.h | 4 +- src/include/utils/rel.h | 8 +- src/include/utils/temprel.h | 25 + src/man/copy.l | 6 +- src/man/create_table.l | 4 +- src/man/select.l | 4 +- src/man/set.l | 8 +- src/pl/plpgsql/src/scan.c | 118 +- src/test/regress/expected/alter_table.out | 120 +- src/test/regress/expected/select.out | 2 +- src/test/regress/expected/select_distinct.out | 8 +- .../regress/expected/select_distinct_on.out | 2 +- src/test/regress/expected/select_into.out | 12 +- src/test/regress/expected/temp.out | 29 + src/test/regress/input/constraints.source | 18 +- src/test/regress/input/misc.source | 10 +- src/test/regress/output/constraints.source | 18 +- src/test/regress/output/misc.source | 10 +- src/test/regress/sql/alter_table.sql | 120 +- src/test/regress/sql/select.sql | 2 +- src/test/regress/sql/select_distinct.sql | 8 +- src/test/regress/sql/select_distinct_on.sql | 2 +- src/test/regress/sql/select_into.sql | 12 +- src/test/regress/sql/temp.sql | 47 + src/test/regress/sql/tests | 1 + src/tools/make_ctags | 2 +- 69 files changed, 7195 insertions(+), 6851 deletions(-) create mode 100644 src/backend/utils/cache/temprel.c create mode 100644 src/include/utils/temprel.h create mode 100644 src/test/regress/expected/temp.out create mode 100644 src/test/regress/sql/temp.sql diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml index 7fd7fb92d1..006b022412 100644 --- a/doc/src/sgml/ref/copy.sgml +++ b/doc/src/sgml/ref/copy.sgml @@ -248,7 +248,7 @@ Specifies that output goes to a pipe or terminal. The backslash character has other special meanings. NULL attributes are - output as "\N". A literal backslash character is output as two + represented as "\N". A literal backslash character is represented as two consecutive backslashes ("\\"). A literal tab character is represented as a backslash and a tab. A literal newline character is represented as a backslash and a newline. When loading text data diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 998c370a3b..acf0603ab8 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -18,7 +18,7 @@ 1998-09-11 -CREATE TABLE table ( +CREATE [TEMP] TABLE table ( column type [ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ] [column_constraint_clause | PRIMARY KEY } [ ... ] ] @@ -38,6 +38,18 @@ CREATE TABLE table ( + + + TEMP + + + + The table is created unique to this session, and is + automatically dropped on session exit. + + + + diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index f5be4b9aa1..6306b490e3 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -19,7 +19,7 @@ SELECT SELECT [ALL|DISTINCT [ON column] ] expression [ AS name ] [, ...] - [ INTO [TABLE] new_table ] + [ INTO [TEMP] [TABLE] new_table ] [ FROM table [alias ] [, ...] ] [ WHERE condition ] [ GROUP BY column [, ...] ] @@ -64,6 +64,18 @@ SELECT [ALL|DISTINCT [ON column] ] + + + TEMP + + + + The table is created unique to this session, and is + automatically dropped on session exit. + + + + new_table @@ -599,7 +611,7 @@ Create a new table from an existing table or view SELECT [ ALL | DISTINCT ] expression [ AS name ] [, ...] - INTO [ TABLE ] new_table ] + INTO [TEMP] [ TABLE ] new_table ] [ FROM table [alias] [, ...] ] [ WHERE condition ] [ GROUP BY column [, ...] ] diff --git a/doc/src/sgml/ref/set.sgml b/doc/src/sgml/ref/set.sgml index 4edea532c4..9627c1f354 100644 --- a/doc/src/sgml/ref/set.sgml +++ b/doc/src/sgml/ref/set.sgml @@ -363,7 +363,7 @@ SET TIME ZONE { 'timezone' | LOCAL enables the genetic optimizer algorithm - for statements with 8 or more tables. + for statements with 6 or more tables. @@ -406,7 +406,7 @@ SET TIME ZONE { 'timezone' | LOCAL This algorithm is on by default, which used GEQO for - statements of eight or more tables. + statements of six or more tables. (See the chapter on GEQO in the Programmer's Guide for more information). diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 6028c85c74..90fdff334e 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -7,31 +7,31 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.54 1998/11/29 05:30:14 tgl Exp $ +# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.55 1999/02/02 03:43:56 momjian Exp $ # # NOTES -# Essentially all Postgres make files include this file and use the -# variables it sets. +# Essentially all Postgres make files include this file and use the +# variables it sets. # # To override the default setting, create a Makefile.custom in this # directory and put your defines there. (Makefile.custom is included # near the end of this file). Sometimes, a variable gets set in # Makefile.global after Makefile.custom has been included, so you can't # simply set that variable in Makefile.custom. In those cases, there is -# often another variable (like CUSTOM_COPT) that you can set in +# often another variable (like CUSTOM_COPT) that you can set in # Makefile.custom that influences the later setting of the true variable # of interest (like CFLAGS) by Makefile.global. # # -# If you change any of these defines you probably have to +# If you change any of these defines you probably have to # make clean; make -# since no dependencies are created for these. (of course you can +# since no dependencies are created for these. (of course you can # be crafty and check what files really depend on them and just remake # those). -# -# Before including this file, you must set the SRCDIR variable to the -# path of the top of the Postgres source tree (the directory that -# contains this file). +# +# Before including this file, you must set the SRCDIR variable to the +# path of the top of the Postgres source tree (the directory that +# contains this file). # #------------------------------------------------------------------------- @@ -40,8 +40,8 @@ # # CONFIGURATION SECTION # -# Following are settings pertaining to the postgres build and -# installation. +# Following are settings pertaining to the postgres build and +# installation. # of the port. # # Ignore BSD_SHLIB if you're not using one of the BSD ports. But if you @@ -55,8 +55,8 @@ ELF_SYSTEM= @ELF_SYS@ LIBPQDIR:= $(SRCDIR)/interfaces/libpq -# For convenience, POSTGRESDIR is where BINDIR, and LIBDIR -# and other target destinations are rooted. Of course, each of these is +# For convenience, POSTGRESDIR is where BINDIR, and LIBDIR +# and other target destinations are rooted. Of course, each of these is # changable separately. POSTGRESDIR= @prefix@ @@ -73,7 +73,7 @@ LIBDIR= $(POSTGRESDIR)/lib # This is the directory where IPC utilities ipcs and ipcrm are located # IPCS=@ipcs@ -IPCRM=@ipcrm@ +IPCRM=@ipcrm@ # Where the man pages (suitable for use with "man") get installed. POSTMANDIR= $(POSTGRESDIR)/man @@ -91,7 +91,7 @@ ODBCINST= $(POSTGRESDIR) ############################################################################## # -# FEATURES +# FEATURES # # To disable a feature, comment out the entire definition # (that is, prepend '#', don't set it to "0" or "no"). @@ -167,7 +167,7 @@ endif ############################################################################## # -# Installation. +# Installation. # # For many ports, INSTALL is overridden below. INSTALL= @INSTALL@ @@ -181,7 +181,7 @@ INSTL_SHLIB_OPTS= @INSTL_SHLIB_OPTS@ ############################################################################## # # For building shell scripts: -# +# # For many ports, these are overridden below. # DASH_N is what we put before the text on an echo command when we don't @@ -191,7 +191,7 @@ INSTL_SHLIB_OPTS= @INSTL_SHLIB_OPTS@ # you do echo "no newline after this\c". DASH_N= @DASH_N@ -BACKSLASH_C= @BACKSLASH_C@ +BACKSLASH_C= @BACKSLASH_C@ @@ -204,7 +204,7 @@ YFLAGS= @YFLAGS@ YACC= @YACC@ LEX= @LEX@ AROPT= @AROPT@ -CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend @CPPFLAGS@ @CFLAGS@ +CFLAGS= -I$(SRCDIR)/include -I$(SRCDIR)/backend @CPPFLAGS@ @CFLAGS@ CFLAGS_SL= @SHARED_LIB@ LDFLAGS= @LDFLAGS@ @LIBS@ DLSUFFIX= @DLSUFFIX@ @@ -245,25 +245,25 @@ INSTALL= $(CUSTOM_INSTALL) endif # -# Flags for CC and LD. +# Flags for CC and LD. ############################################################################## # COPT # -# COPT is for options that the sophisticated builder might want to vary +# COPT is for options that the sophisticated builder might want to vary # from one build to the next, like options to build Postgres with debugging -# information included. COPT is meant to be set on the make command line, +# information included. COPT is meant to be set on the make command line, # for example with the command "make COPT=-g". The value you see set here # is the default that gets used if the builder does not give a value for # COPT on his make command. # -# There is a nonobvious relationship between -O (optimization) and +# There is a nonobvious relationship between -O (optimization) and # -Werror (consider all warnings fatal). On some systems, if you don't # optimize, you will always get some warnings because the system header # files will include some unreferenced functions in the code. These are # functions that are supposed to be inline, so there wouldn't ordinarily # be an "unreferenced" problem, but if you don't enable optimization, no -# inlining can happen, and hence the problem. Therefore, we include +# inlining can happen, and hence the problem. Therefore, we include # if you override -O, you override -Werror as well. # # CUSTOM_COPT is something the user may set in Makefile.custom diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c index 462de54ccf..93f4f00016 100644 --- a/src/backend/access/heap/hio.c +++ b/src/backend/access/heap/hio.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Id: hio.c,v 1.15 1998/12/15 12:45:14 vadim Exp $ + * $Id: hio.c,v 1.16 1999/02/02 03:43:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -110,7 +110,7 @@ RelationPutHeapTupleAtEnd(Relation relation, HeapTuple tuple) ItemId itemId; Item item; - if (!relation->rd_islocal) + if (!relation->rd_myxactonly) LockRelation(relation, ExtendLock); /* @@ -158,7 +158,7 @@ RelationPutHeapTupleAtEnd(Relation relation, HeapTuple tuple) elog(ERROR, "Tuple is too big: size %d", len); } - if (!relation->rd_islocal) + if (!relation->rd_myxactonly) UnlockRelation(relation, ExtendLock); offnum = PageAddItem((Page) pageHeader, (Item) tuple->t_data, diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index ec95398131..1fba777995 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.29 1999/01/29 09:22:53 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.30 1999/02/02 03:44:00 momjian Exp $ * * NOTES * Transaction aborts can now occur two ways: @@ -850,7 +850,7 @@ StartTransaction() are created in the course of the transactions they need to be destroyed properly at the end of the transactions */ - InitTempRelList(); + InitNoNameRelList(); /* ---------------- * done with start processing, set current transaction @@ -917,7 +917,7 @@ CommitTransaction() AtCommit_Notify(); CloseSequences(); - DestroyTempRels(); + DestroyNoNameRels(); AtEOXact_portals(); RecordTransactionCommit(); RelationPurgeLocalRelation(true); @@ -984,7 +984,7 @@ AbortTransaction() AtEOXact_portals(); RecordTransactionAbort(); RelationPurgeLocalRelation(false); - DestroyTempRels(); + DestroyNoNameRels(); AtAbort_Cache(); AtAbort_Locks(); AtAbort_Memory(); diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y index 5a2a6e09fd..9bd5c4be8b 100644 --- a/src/backend/bootstrap/bootparse.y +++ b/src/backend/bootstrap/bootparse.y @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.22 1999/01/21 22:48:04 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.23 1999/02/02 03:44:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -164,7 +164,8 @@ Boot_CreateStmt: if (DebugMode) puts("creating bootstrap relation"); tupdesc = CreateTupleDesc(numattr,attrtypes); - reldesc = heap_create(LexIDStr($3), tupdesc); + reldesc = heap_create(LexIDStr($3), tupdesc, + false, false); if (DebugMode) puts("bootstrap relation created ok"); } @@ -175,7 +176,7 @@ Boot_CreateStmt: tupdesc = CreateTupleDesc(numattr,attrtypes); id = heap_create_with_catalog(LexIDStr($3), - tupdesc, RELKIND_RELATION); + tupdesc, RELKIND_RELATION, false); if (!Quiet) printf("CREATED relation %s with OID %d\n", LexIDStr($3), id); diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index bc897c5965..eef7dbea0c 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -7,7 +7,8 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.70 1998/12/15 12:45:40 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.71 1999/02/02 03:44:08 momjian Exp $ + * * * INTERFACE ROUTINES * heap_create() - Create an uncataloged heap relation @@ -26,6 +27,7 @@ *------------------------------------------------------------------------- */ #include "postgres.h" +#include "miscadmin.h" #include "access/heapam.h" #include "catalog/catalog.h" @@ -41,7 +43,6 @@ #include "catalog/pg_type.h" #include "commands/trigger.h" #include "fmgr.h" -#include "miscadmin.h" #include "nodes/plannodes.h" #include "optimizer/tlist.h" #include "parser/parse_expr.h" @@ -53,11 +54,13 @@ #include "storage/lmgr.h" #include "storage/smgr.h" #include "tcop/tcopprot.h" +#include "utils/catcache.h" #include "utils/builtins.h" #include "utils/mcxt.h" #include "utils/relcache.h" #include "utils/syscache.h" #include "utils/tqual.h" +#include "utils/temprel.h" #ifndef HAVE_MEMMOVE #include @@ -65,18 +68,17 @@ #include #endif -static void AddPgRelationTuple(Relation pg_class_desc, +static void AddNewRelationTuple(Relation pg_class_desc, Relation new_rel_desc, Oid new_rel_oid, unsigned natts, - char relkind); -static void AddToTempRelList(Relation r); -static void DeletePgAttributeTuples(Relation rel); -static void DeletePgRelationTuple(Relation rel); -static void DeletePgTypeTuple(Relation rel); -static int RelationAlreadyExists(Relation pg_class_desc, char *relname); + char relkind, char *temp_relname); +static void AddToNoNameRelList(Relation r); +static void DeleteAttributeTuples(Relation rel); +static void DeleteRelationTuple(Relation rel); +static void DeleteTypeTuple(Relation rel); static void RelationRemoveIndexes(Relation relation); static void RelationRemoveInheritance(Relation relation); -static void RemoveFromTempRelList(Relation r); -static void addNewRelationType(char *typeName, Oid new_rel_oid); +static void RemoveFromNoNameRelList(Relation r); +static void AddNewRelationType(char *typeName, Oid new_rel_oid); static void StoreConstraints(Relation rel); static void RemoveConstraints(Relation rel); @@ -167,35 +169,34 @@ static TempRelList *tempRels = NULL; * * * if heap_create is called with "" as the name, then heap_create will create - * a temporary name "temp_$RELOID" for the relation + * a temporary name "pg_noname.$PID.$SEQUENCE" for the relation * ---------------------------------------------------------------- */ Relation -heap_create(char *name, - TupleDesc tupDesc) +heap_create(char *relname, + TupleDesc tupDesc, + bool isnoname, + bool istemp) { unsigned i; Oid relid; Relation rel; int len; bool nailme = false; - char *relname = name; - char tempname[NAMEDATALEN]; - int isTemp = 0; int natts = tupDesc->natts; - -/* Form_pg_attribute *att = tupDesc->attrs; */ - + static unsigned int uniqueId = 0; + extern GlobalMemory CacheCxt; MemoryContext oldcxt; + /* ---------------- * sanity checks * ---------------- */ AssertArg(natts > 0); - if (IsSystemRelationName(relname) && IsNormalProcessingMode()) + if (relname && IsSystemRelationName(relname) && IsNormalProcessingMode()) { elog(ERROR, "Illegal class name: %s -- pg_ is reserved for system catalogs", @@ -218,22 +219,22 @@ heap_create(char *name, * descriptor follows. * ---------------- */ - if (!strcmp(RelationRelationName, relname)) + if (relname && !strcmp(RelationRelationName, relname)) { relid = RelOid_pg_class; nailme = true; } - else if (!strcmp(AttributeRelationName, relname)) + else if (relname && !strcmp(AttributeRelationName, relname)) { relid = RelOid_pg_attribute; nailme = true; } - else if (!strcmp(ProcedureRelationName, relname)) + else if (relname && !strcmp(ProcedureRelationName, relname)) { relid = RelOid_pg_proc; nailme = true; } - else if (!strcmp(TypeRelationName, relname)) + else if (relname && !strcmp(TypeRelationName, relname)) { relid = RelOid_pg_type; nailme = true; @@ -241,14 +242,21 @@ heap_create(char *name, else { relid = newoid(); + } - if (name[0] == '\0') - { - snprintf(tempname, NAMEDATALEN, "temp_%d", relid); - Assert(strlen(tempname) < NAMEDATALEN); - relname = tempname; - isTemp = 1; - } + if (isnoname) + { + Assert(!relname); + relname = palloc(NAMEDATALEN); + snprintf(relname, NAMEDATALEN, "pg_noname.%d.%u", + (int) MyProcPid, uniqueId++); + } + + if (istemp) + { + /* replace relname of caller */ + snprintf(relname, NAMEDATALEN, "pg_temp.%d.%u", + (int) MyProcPid, uniqueId++); } /* ---------------- @@ -262,16 +270,11 @@ heap_create(char *name, rel = (Relation) palloc(len); MemSet((char *) rel, 0, len); - /* ---------- - create a new tuple descriptor from the one passed in + /* + * create a new tuple descriptor from the one passed in */ rel->rd_att = CreateTupleDescCopyConstr(tupDesc); - /* ---------------- - * initialize the fields of our new relation descriptor - * ---------------- - */ - /* ---------------- * nail the reldesc if this is a bootstrap create reln and * we may need it in the cache later on in the bootstrap @@ -285,8 +288,11 @@ heap_create(char *name, rel->rd_rel = (Form_pg_class) palloc(sizeof *rel->rd_rel); - MemSet((char *) rel->rd_rel, 0, - sizeof *rel->rd_rel); + /* ---------------- + * initialize the fields of our new relation descriptor + * ---------------- + */ + MemSet((char *) rel->rd_rel, 0, sizeof *rel->rd_rel); namestrcpy(&(rel->rd_rel->relname), relname); rel->rd_rel->relkind = RELKIND_UNCATALOGED; rel->rd_rel->relnatts = natts; @@ -305,31 +311,30 @@ heap_create(char *name, } /* ---------------- - * remember if this is a temp relation + * remember if this is a noname relation * ---------------- */ - - rel->rd_istemp = isTemp; + rel->rd_isnoname = isnoname; /* ---------------- * have the storage manager create the relation. * ---------------- */ - rel->rd_tmpunlinked = TRUE; /* change once table is created */ + rel->rd_nonameunlinked = TRUE; /* change once table is created */ rel->rd_fd = (File) smgrcreate(DEFAULT_SMGR, rel); - rel->rd_tmpunlinked = FALSE; + rel->rd_nonameunlinked = FALSE; RelationRegisterRelation(rel); MemoryContextSwitchTo(oldcxt); /* - * add all temporary relations to the tempRels list so they can be + * add all noname relations to the tempRels list so they can be * properly disposed of at the end of transaction */ - if (isTemp) - AddToTempRelList(rel); + if (isnoname) + AddToNoNameRelList(rel); return rel; } @@ -343,7 +348,7 @@ heap_create(char *name, * 1) CheckAttributeNames() is used to make certain the tuple * descriptor contains a valid set of attribute names * - * 2) pg_class is opened and RelationAlreadyExists() + * 2) pg_class is opened and RelationFindRelid() * preforms a scan to ensure that no relation with the * same name already exists. * @@ -356,7 +361,7 @@ heap_create(char *name, * 5) AddNewAttributeTuples() is called to register the * new relation's schema in pg_attribute. * - * 6) AddPgRelationTuple() is called to register the + * 6) AddNewRelationTuple() is called to register the * relation itself in the catalogs. * * 7) StoreConstraints is called () - vadim 08/22/97 @@ -456,71 +461,78 @@ CheckAttributeNames(TupleDesc tupdesc) } /* -------------------------------- - * RelationAlreadyExists + * RelnameFindRelid * * this preforms a scan of pg_class to ensure that - * no relation with the same name already exists. The caller - * has to open pg_class and pass an open descriptor. + * no relation with the same name already exists. * -------------------------------- */ -static int -RelationAlreadyExists(Relation pg_class_desc, char *relname) +Oid +RelnameFindRelid(char *relname) { - ScanKeyData key; - HeapScanDesc pg_class_scan; - HeapTuple tup; + HeapTuple tuple; + Oid relid; /* * If this is not bootstrap (initdb) time, use the catalog index on * pg_class. */ - if (!IsBootstrapProcessingMode()) { - tup = SearchSysCacheTuple(RELNAME, + tuple = SearchSysCacheTuple(RELNAME, PointerGetDatum(relname), 0, 0, 0); - if (HeapTupleIsValid(tup)) - return true; + if (HeapTupleIsValid(tuple)) + relid = tuple->t_data->t_oid; else - return false; + relid = InvalidOid; } + else + { + Relation pg_class_desc; + ScanKeyData key; + HeapScanDesc pg_class_scan; + + pg_class_desc = heap_openr(RelationRelationName); - /* ---------------- - * At bootstrap time, we have to do this the hard way. Form the - * scan key. - * ---------------- - */ - ScanKeyEntryInitialize(&key, - 0, - (AttrNumber) Anum_pg_class_relname, - (RegProcedure) F_NAMEEQ, - (Datum) relname); + /* ---------------- + * At bootstrap time, we have to do this the hard way. Form the + * scan key. + * ---------------- + */ + ScanKeyEntryInitialize(&key, + 0, + (AttrNumber) Anum_pg_class_relname, + (RegProcedure) F_NAMEEQ, + (Datum) relname); + + /* ---------------- + * begin the scan + * ---------------- + */ + pg_class_scan = heap_beginscan(pg_class_desc, + 0, + SnapshotNow, + 1, + &key); + + /* ---------------- + * get a tuple. if the tuple is NULL then it means we + * didn't find an existing relation. + * ---------------- + */ + tuple = heap_getnext(pg_class_scan, 0); + + if (HeapTupleIsValid(tuple)) + relid = tuple->t_data->t_oid; + else + relid = InvalidOid; - /* ---------------- - * begin the scan - * ---------------- - */ - pg_class_scan = heap_beginscan(pg_class_desc, - 0, - SnapshotNow, - 1, - &key); + heap_endscan(pg_class_scan); - /* ---------------- - * get a tuple. if the tuple is NULL then it means we - * didn't find an existing relation. - * ---------------- - */ - tup = heap_getnext(pg_class_scan, 0); - - /* ---------------- - * end the scan and return existance of relation. - * ---------------- - */ - heap_endscan(pg_class_scan); - - return HeapTupleIsValid(tup); + heap_close(pg_class_desc); + } + return relid; } /* -------------------------------- @@ -583,6 +595,7 @@ AddNewAttributeTuples(Oid new_rel_oid, (char *) *dpp); heap_insert(rel, tup); + if (hasindex) CatalogIndexInsert(idescs, Num_pg_attr_indices, rel, tup); @@ -623,18 +636,19 @@ AddNewAttributeTuples(Oid new_rel_oid, } /* -------------------------------- - * AddPgRelationTuple + * AddNewRelationTuple * * this registers the new relation in the catalogs by * adding a tuple to pg_class. * -------------------------------- */ static void -AddPgRelationTuple(Relation pg_class_desc, +AddNewRelationTuple(Relation pg_class_desc, Relation new_rel_desc, Oid new_rel_oid, unsigned natts, - char relkind) + char relkind, + char *temp_relname) { Form_pg_class new_rel_reltup; HeapTuple tup; @@ -679,9 +693,11 @@ AddPgRelationTuple(Relation pg_class_desc, heap_insert(pg_class_desc, tup); + if (temp_relname) + create_temp_relation(temp_relname, tup); + if (!isBootstrap) { - /* * First, open the catalog indices and insert index tuples for the * new relation. @@ -690,23 +706,22 @@ AddPgRelationTuple(Relation pg_class_desc, CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, idescs); CatalogIndexInsert(idescs, Num_pg_class_indices, pg_class_desc, tup); CatalogCloseIndices(Num_pg_class_indices, idescs); - /* now restore processing mode */ SetProcessingMode(NormalProcessing); } - + pfree(tup); } /* -------------------------------- - * addNewRelationType - + * AddNewRelationType - * * define a complex type corresponding to the new relation * -------------------------------- */ static void -addNewRelationType(char *typeName, Oid new_rel_oid) +AddNewRelationType(char *typeName, Oid new_rel_oid) { Oid new_type_oid; @@ -745,38 +760,55 @@ addNewRelationType(char *typeName, Oid new_rel_oid) Oid heap_create_with_catalog(char *relname, TupleDesc tupdesc, - char relkind) + char relkind, + bool istemp) { Relation pg_class_desc; Relation new_rel_desc; Oid new_rel_oid; - int natts = tupdesc->natts; - + char *temp_relname = NULL; + /* ---------------- * sanity checks * ---------------- */ - AssertState(IsNormalProcessingMode() || IsBootstrapProcessingMode()); + Assert(IsNormalProcessingMode() || IsBootstrapProcessingMode()); if (natts == 0 || natts > MaxHeapAttributeNumber) elog(ERROR, "amcreate: from 1 to %d attributes must be specified", - MaxHeapAttributeNumber); + MaxHeapAttributeNumber); CheckAttributeNames(tupdesc); - /* ---------------- - * open pg_class and see that the relation doesn't - * already exist. - * ---------------- - */ - pg_class_desc = heap_openr(RelationRelationName); - - if (RelationAlreadyExists(pg_class_desc, relname)) - { - heap_close(pg_class_desc); + /* temp tables can mask non-temp tables */ + if ((!istemp && RelnameFindRelid(relname)) || + (istemp && get_temp_rel_by_name(relname) != NULL)) elog(ERROR, "%s relation already exists", relname); - } + /* invalidate cache so non-temp table is masked by temp */ + if (istemp) + { + Oid relid = RelnameFindRelid(relname); + + if (relid != InvalidOid) + { + /* + * This is heavy-handed, but appears necessary bjm 1999/02/01 + * SystemCacheRelationFlushed(relid) is not enough either. + */ + RelationForgetRelation(relid); + ResetSystemCache(); + } + } + + /* save user relation name because heap_create changes it */ + if (istemp) + { + temp_relname = pstrdup(relname); /* save original value */ + relname = palloc(NAMEDATALEN); + strcpy(relname, temp_relname); /* heap_create will change this */ + } + /* ---------------- * ok, relation does not already exist so now we * create an uncataloged relation and pull its relation oid @@ -784,9 +816,11 @@ heap_create_with_catalog(char *relname, * * Note: The call to heap_create() does all the "real" work * of creating the disk file for the relation. + * This changes relname for noname and temp tables. * ---------------- */ - new_rel_desc = heap_create(relname, tupdesc); + new_rel_desc = heap_create(relname, tupdesc, false, istemp); + new_rel_oid = new_rel_desc->rd_att->attrs[0]->attrelid; /* ---------------- @@ -794,7 +828,7 @@ heap_create_with_catalog(char *relname, * we add a new system type corresponding to the new relation. * ---------------- */ - addNewRelationType(relname, new_rel_oid); + AddNewRelationType(relname, new_rel_oid); /* ---------------- * now add tuples to pg_attribute for the attributes in @@ -807,14 +841,23 @@ heap_create_with_catalog(char *relname, * now update the information in pg_class. * ---------------- */ - AddPgRelationTuple(pg_class_desc, + pg_class_desc = heap_openr(RelationRelationName); + + AddNewRelationTuple(pg_class_desc, new_rel_desc, new_rel_oid, natts, - relkind); + relkind, + temp_relname); StoreConstraints(new_rel_desc); + if (istemp) + { + pfree(relname); + pfree(temp_relname); + } + /* ---------------- * ok, the relation has been cataloged, so close our relations * and return the oid of the newly created relation. @@ -990,12 +1033,12 @@ RelationRemoveIndexes(Relation relation) } /* -------------------------------- - * DeletePgRelationTuple + * DeleteRelationTuple * * -------------------------------- */ static void -DeletePgRelationTuple(Relation rel) +DeleteRelationTuple(Relation rel) { Relation pg_class_desc; HeapTuple tup; @@ -1012,7 +1055,7 @@ DeletePgRelationTuple(Relation rel) if (!HeapTupleIsValid(tup)) { heap_close(pg_class_desc); - elog(ERROR, "DeletePgRelationTuple: %s relation nonexistent", + elog(ERROR, "DeleteRelationTuple: %s relation nonexistent", &rel->rd_rel->relname); } @@ -1027,12 +1070,12 @@ DeletePgRelationTuple(Relation rel) } /* -------------------------------- - * DeletePgAttributeTuples + * DeleteAttributeTuples * * -------------------------------- */ static void -DeletePgAttributeTuples(Relation rel) +DeleteAttributeTuples(Relation rel) { Relation pg_attribute_desc; HeapTuple tup; @@ -1073,7 +1116,7 @@ DeletePgAttributeTuples(Relation rel) } /* -------------------------------- - * DeletePgTypeTuple + * DeleteTypeTuple * * If the user attempts to destroy a relation and there * exists attributes in other relations of type @@ -1082,7 +1125,7 @@ DeletePgAttributeTuples(Relation rel) * -------------------------------- */ static void -DeletePgTypeTuple(Relation rel) +DeleteTypeTuple(Relation rel) { Relation pg_type_desc; HeapScanDesc pg_type_scan; @@ -1127,7 +1170,7 @@ DeletePgTypeTuple(Relation rel) { heap_endscan(pg_type_scan); heap_close(pg_type_desc); - elog(ERROR, "DeletePgTypeTuple: %s type nonexistent", + elog(ERROR, "DeleteTypeTuple: %s type nonexistent", &rel->rd_rel->relname); } @@ -1171,7 +1214,7 @@ DeletePgTypeTuple(Relation rel) heap_endscan(pg_attribute_scan); heap_close(pg_attribute_desc); - elog(ERROR, "DeletePgTypeTuple: att of type %s exists in relation %d", + elog(ERROR, "DeleteTypeTuple: att of type %s exists in relation %d", &rel->rd_rel->relname, relid); } heap_endscan(pg_attribute_scan); @@ -1199,6 +1242,7 @@ heap_destroy_with_catalog(char *relname) { Relation rel; Oid rid; + bool istemp = (get_temp_rel_by_name(relname) != NULL); /* ---------------- * first open the relation. if the relation does exist, @@ -1216,7 +1260,8 @@ heap_destroy_with_catalog(char *relname) * prevent deletion of system relations * ---------------- */ - if (IsSystemRelationName(RelationGetRelationName(rel)->data)) + /* allow temp of pg_class? Guess so. */ + if (!istemp && IsSystemRelationName(RelationGetRelationName(rel)->data)) elog(ERROR, "amdestroy: cannot destroy %s relation", &rel->rd_rel->relname); @@ -1248,22 +1293,26 @@ heap_destroy_with_catalog(char *relname) * delete attribute tuples * ---------------- */ - DeletePgAttributeTuples(rel); + DeleteAttributeTuples(rel); + if (istemp) + remove_temp_relation(rid); + /* ---------------- * delete type tuple. here we want to see the effects * of the deletions we just did, so we use setheapoverride(). * ---------------- */ setheapoverride(true); - DeletePgTypeTuple(rel); + DeleteTypeTuple(rel); setheapoverride(false); /* ---------------- * delete relation tuple * ---------------- */ - DeletePgRelationTuple(rel); + /* must delete fake tuple in cache */ + DeleteRelationTuple(rel); /* * release dirty buffers of this relation @@ -1283,16 +1332,15 @@ heap_destroy_with_catalog(char *relname) * unlink the relation and finish up. * ---------------- */ - if (!(rel->rd_istemp) || !(rel->rd_tmpunlinked)) + if (!(rel->rd_isnoname) || !(rel->rd_nonameunlinked)) smgrunlink(DEFAULT_SMGR, rel); - rel->rd_tmpunlinked = TRUE; + rel->rd_nonameunlinked = TRUE; UnlockRelation(rel, AccessExclusiveLock); heap_close(rel); - /* ok - flush the relation from the relcache */ RelationForgetRelation(rid); } @@ -1306,11 +1354,11 @@ void heap_destroy(Relation rel) { ReleaseRelationBuffers(rel); - if (!(rel->rd_istemp) || !(rel->rd_tmpunlinked)) + if (!(rel->rd_isnoname) || !(rel->rd_nonameunlinked)) smgrunlink(DEFAULT_SMGR, rel); - rel->rd_tmpunlinked = TRUE; + rel->rd_nonameunlinked = TRUE; heap_close(rel); - RemoveFromTempRelList(rel); + RemoveFromNoNameRelList(rel); } @@ -1336,7 +1384,7 @@ heap_destroy(Relation rel) */ void -InitTempRelList(void) +InitNoNameRelList(void) { if (tempRels) { @@ -1356,10 +1404,10 @@ InitTempRelList(void) MODIFIES the global variable tempRels we don't really remove it, just mark it as NULL - and DestroyTempRels will look for NULLs + and DestroyNoNameRels will look for NULLs */ static void -RemoveFromTempRelList(Relation r) +RemoveFromNoNameRelList(Relation r) { int i; @@ -1382,7 +1430,7 @@ RemoveFromTempRelList(Relation r) MODIFIES the global variable tempRels */ static void -AddToTempRelList(Relation r) +AddToNoNameRelList(Relation r) { if (!tempRels) return; @@ -1401,7 +1449,7 @@ AddToTempRelList(Relation r) go through the tempRels list and destroy each of the relations */ void -DestroyTempRels(void) +DestroyNoNameRels(void) { int i; Relation rel; diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index ce9d7343c8..800dc2c3f9 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -7,19 +7,13 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.67 1999/01/21 22:48:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.68 1999/02/02 03:44:13 momjian Exp $ * * * INTERFACE ROUTINES * index_create() - Create a cataloged index relation * index_destroy() - Removes index relation from catalogs * - * NOTES - * Much of this code uses hardcoded sequential heap relation scans - * to fetch information from the catalogs. These should all be - * rewritten to use the system caches lookup routines like - * SearchSysCacheTuple, which can do efficient lookup and - * caching. * *------------------------------------------------------------------------- */ @@ -46,10 +40,12 @@ #include "storage/lmgr.h" #include "storage/smgr.h" #include "utils/builtins.h" +#include "utils/catcache.h" #include "utils/mcxt.h" #include "utils/relcache.h" #include "utils/syscache.h" #include "utils/tqual.h" +#include "utils/temprel.h" #ifndef HAVE_MEMMOVE #include @@ -64,16 +60,15 @@ #define NTUPLES_PER_PAGE(natts) (BLCKSZ/((natts)*AVG_TUPLE_SIZE)) /* non-export function prototypes */ -static Oid - RelationNameGetObjectId(char *relationName, Relation pg_class); -static Oid GetHeapRelationOid(char *heapRelationName, char *indexRelationName); +static Oid GetHeapRelationOid(char *heapRelationName, char *indexRelationName, + bool istemp); static TupleDesc BuildFuncTupleDesc(FuncIndexInfo *funcInfo); static TupleDesc ConstructTupleDescriptor(Oid heapoid, Relation heapRelation, List *attributeList, int numatts, AttrNumber *attNums); static void ConstructIndexReldesc(Relation indexRelation, Oid amoid); -static Oid UpdateRelationRelation(Relation indexRelation); +static Oid UpdateRelationRelation(Relation indexRelation, char *temp_relname); static void InitializeAttributeOids(Relation indexRelation, int numatts, Oid indexoid); @@ -121,105 +116,30 @@ static FormData_pg_attribute sysatts[] = { {0, {"cmax"}, CIDOID, 0, 4, -6, 0, -1, -1, '\001', '\0', 'i', '\0', '\0'}, }; -/* ---------------------------------------------------------------- - * RelationNameGetObjectId -- - * Returns the object identifier for a relation given its name. - * - * ---------------------------------------------------------------- - */ -static Oid -RelationNameGetObjectId(char *relationName, - Relation pg_class) -{ - HeapScanDesc pg_class_scan; - HeapTuple pg_class_tuple; - Oid relationObjectId; - ScanKeyData key; - - /* - * If this isn't bootstrap time, we can use the system catalogs to - * speed this up. - */ - - if (!IsBootstrapProcessingMode()) - { - HeapTuple tuple; - - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(relationName), - 0, 0, 0); - - if (HeapTupleIsValid(tuple)) - return tuple->t_data->t_oid; - else - return InvalidOid; - } - - /* ---------------- - * BOOTSTRAP TIME, do this the hard way. - * begin a scan of pg_class for the named relation - * ---------------- - */ - ScanKeyEntryInitialize(&key, 0, Anum_pg_class_relname, - F_NAMEEQ, - PointerGetDatum(relationName)); - - pg_class_scan = heap_beginscan(pg_class, 0, SnapshotNow, 1, &key); - - /* ---------------- - * if we find the named relation, fetch its relation id - * (the oid of the tuple we found). - * ---------------- - */ - pg_class_tuple = heap_getnext(pg_class_scan, 0); - - if (!HeapTupleIsValid(pg_class_tuple)) - relationObjectId = InvalidOid; - else - relationObjectId = pg_class_tuple->t_data->t_oid; - - /* ---------------- - * cleanup and return results - * ---------------- - */ - heap_endscan(pg_class_scan); - - return relationObjectId; -} - - /* ---------------------------------------------------------------- * GetHeapRelationOid * ---------------------------------------------------------------- */ static Oid -GetHeapRelationOid(char *heapRelationName, char *indexRelationName) +GetHeapRelationOid(char *heapRelationName, char *indexRelationName, bool istemp) { - Relation pg_class; Oid indoid; Oid heapoid; - /* ---------------- - * open pg_class and get the oid of the relation - * corresponding to the name of the index relation. - * ---------------- - */ - pg_class = heap_openr(RelationRelationName); + + indoid = RelnameFindRelid(indexRelationName); - indoid = RelationNameGetObjectId(indexRelationName, pg_class); - - if (OidIsValid(indoid)) + if ((!istemp && OidIsValid(indoid)) || + (istemp && get_temp_rel_by_name(indexRelationName) != NULL)) elog(ERROR, "Cannot create index: '%s' already exists", indexRelationName); - heapoid = RelationNameGetObjectId(heapRelationName, pg_class); + heapoid = RelnameFindRelid(heapRelationName); if (!OidIsValid(heapoid)) elog(ERROR, "Cannot create index on '%s': relation does not exist", heapRelationName); - - heap_close(pg_class); - + return heapoid; } @@ -538,7 +458,7 @@ ConstructIndexReldesc(Relation indexRelation, Oid amoid) * ---------------------------------------------------------------- */ static Oid -UpdateRelationRelation(Relation indexRelation) +UpdateRelationRelation(Relation indexRelation, char *temp_relname) { Relation pg_class; HeapTuple tuple; @@ -561,6 +481,9 @@ UpdateRelationRelation(Relation indexRelation) tuple->t_data->t_oid = RelationGetRelid(indexRelation); heap_insert(pg_class, tuple); + if (temp_relname) + create_temp_relation(temp_relname, tuple); + /* * During normal processing, we need to make sure that the system * catalog indices are correct. Bootstrap (initdb) time doesn't @@ -760,6 +683,7 @@ UpdateIndexRelation(Oid indexoid, } else predText = (text *) fmgr(F_TEXTIN, ""); + predLen = VARSIZE(predText); itupLen = predLen + sizeof(FormData_pg_index); indexForm = (Form_pg_index) palloc(itupLen); @@ -1025,27 +949,28 @@ index_create(char *heapRelationName, Oid heapoid; Oid indexoid; PredInfo *predInfo; - + bool istemp = (get_temp_rel_by_name(heapRelationName) != NULL); + char *temp_relname = NULL; + /* ---------------- * check parameters * ---------------- */ if (numatts < 1) elog(ERROR, "must index at least one attribute"); - + /* ---------------- * get heap relation oid and open the heap relation * XXX ADD INDEXING * ---------------- */ - heapoid = GetHeapRelationOid(heapRelationName, indexRelationName); + heapoid = GetHeapRelationOid(heapRelationName, indexRelationName, istemp); heapRelation = heap_open(heapoid); /* * Only SELECT ... FOR UPDATE are allowed */ - LockRelation(heapRelation, ShareLock); /* ---------------- @@ -1061,12 +986,36 @@ index_create(char *heapRelationName, numatts, attNums); + /* invalidate cache so possible non-temp index is masked by temp */ + if (istemp) + { + Oid relid = RelnameFindRelid(indexRelationName); + + if (relid != InvalidOid) + { + /* + * This is heavy-handed, but appears necessary bjm 1999/02/01 + * SystemCacheRelationFlushed(relid) is not enough either. + */ + RelationForgetRelation(relid); + ResetSystemCache(); + } + } + + /* save user relation name because heap_create changes it */ + if (istemp) + { + temp_relname = pstrdup(indexRelationName); /* save original value */ + indexRelationName = palloc(NAMEDATALEN); + strcpy(indexRelationName, temp_relname); /* heap_create will change this */ + } + /* ---------------- * create the index relation * ---------------- */ indexRelation = heap_create(indexRelationName, - indexTupDesc); + indexTupDesc, false, istemp); /* ---------------- * construct the index relation descriptor @@ -1081,7 +1030,7 @@ index_create(char *heapRelationName, * (append RELATION tuple) * ---------------- */ - indexoid = UpdateRelationRelation(indexRelation); + indexoid = UpdateRelationRelation(indexRelation, temp_relname); /* ---------------- * Now get the index procedure (only relevant for functional indices). @@ -1162,9 +1111,9 @@ index_create(char *heapRelationName, } /* ---------------------------------------------------------------- + * * index_destroy * - * XXX break into modules like index_create * ---------------------------------------------------------------- */ void @@ -1175,11 +1124,11 @@ index_destroy(Oid indexId) Relation relationRelation; Relation attributeRelation; HeapTuple tuple; - int16 attnum; - + int16 attnum; + Assert(OidIsValid(indexId)); - /* why open it here? bjm 1998/08/20 */ + /* Open now to obtain lock by referencing table? bjm */ userindexRelation = index_open(indexId); /* ---------------- @@ -1192,7 +1141,7 @@ index_destroy(Oid indexId) ObjectIdGetDatum(indexId), 0, 0, 0); - AssertState(HeapTupleIsValid(tuple)); + Assert(HeapTupleIsValid(tuple)); heap_delete(relationRelation, &tuple->t_self, NULL); pfree(tuple); @@ -1217,6 +1166,9 @@ index_destroy(Oid indexId) } heap_close(attributeRelation); + /* does something only if it is a temp index */ + remove_temp_relation(indexId); + /* ---------------- * fix INDEX relation * ---------------- @@ -1224,10 +1176,7 @@ index_destroy(Oid indexId) tuple = SearchSysCacheTupleCopy(INDEXRELID, ObjectIdGetDatum(indexId), 0, 0, 0); - - if (!HeapTupleIsValid(tuple)) - elog(NOTICE, "IndexRelationDestroy: %s's INDEX tuple missing", - RelationGetRelationName(userindexRelation)); + Assert(HeapTupleIsValid(tuple)); indexRelation = heap_openr(IndexRelationName); diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index a11e668e16..50828cd2f3 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.34 1998/11/27 19:51:50 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.35 1999/02/02 03:44:13 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -30,6 +30,7 @@ #include "storage/bufmgr.h" #include "utils/builtins.h" #include "utils/syscache.h" +#include "utils/temprel.h" /* * Names of indices on the following system catalogs: @@ -455,6 +456,13 @@ ClassNameIndexScan(Relation heapRelation, char *relName) ScanKeyData skey[1]; HeapTuple tuple; + /* + * we have to do this before looking in system tables because temp + * table namespace takes precedence + */ + if ((tuple = get_temp_rel_by_name(relName)) != NULL) + return heap_copytuple(tuple); + ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) 1, diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index a810391206..6198b36089 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.35 1999/01/21 22:48:06 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.36 1999/02/02 03:44:17 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -219,7 +219,8 @@ copy_heap(Oid OIDOldHeap) tupdesc = CreateTupleDescCopy(OldHeapDesc); - OIDNewHeap = heap_create_with_catalog(NewName, tupdesc, RELKIND_RELATION); + OIDNewHeap = heap_create_with_catalog(NewName, tupdesc, + RELKIND_RELATION, false); if (!OidIsValid(OIDNewHeap)) elog(ERROR, "clusterheap: cannot create temporary heap relation\n"); diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index e9f4e65fde..383db52cd6 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.69 1999/02/01 20:25:54 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.70 1999/02/02 03:44:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -646,7 +646,6 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim) index_nulls[i] = ' '; byval[i] = (bool) IsTypeByVal(attr[i]->atttypid); } - values = (Datum *) palloc(sizeof(Datum) * attr_count); lineno = 0; while (!done) @@ -873,13 +872,16 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim) } pfree(values); pfree(nulls); + pfree(index_nulls); + pfree(idatum); + pfree(byval); + if (!binary) { pfree(in_functions); pfree(elements); pfree(typmod); } - pfree(byval); /* comments in execUtils.c */ if (has_index) diff --git a/src/backend/commands/creatinh.c b/src/backend/commands/creatinh.c index bd43a7c7fb..839042ab53 100644 --- a/src/backend/commands/creatinh.c +++ b/src/backend/commands/creatinh.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.37 1998/12/14 05:18:43 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.38 1999/02/02 03:44:19 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -138,8 +138,8 @@ DefineRelation(CreateStmt *stmt, char relkind) } } - relationId = heap_create_with_catalog(relname, - descriptor, relkind); + relationId = heap_create_with_catalog(relname, descriptor, + relkind, stmt->istemp); StoreCatalogInheritance(relationId, inheritList); } @@ -279,7 +279,7 @@ MergeAttributes(List *schema, List *supers, List **supconstr) SearchSysCacheTuple(TYPOID, ObjectIdGetDatum(attribute->atttypid), 0, 0, 0); - AssertState(HeapTupleIsValid(tuple)); + Assert(HeapTupleIsValid(tuple)); attributeType = (((Form_pg_type) GETSTRUCT(tuple))->typname).data; diff --git a/src/backend/commands/defind.c b/src/backend/commands/defind.c index 692e178236..4b75ff8bcd 100644 --- a/src/backend/commands/defind.c +++ b/src/backend/commands/defind.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.30 1999/01/21 22:48:06 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/defind.c,v 1.31 1999/02/02 03:44:19 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -98,15 +98,11 @@ DefineIndex(char *heapRelationName, /* * compute heap relation id */ - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(heapRelationName), - 0, 0, 0); - if (!HeapTupleIsValid(tuple)) + if ((relationId = RelnameFindRelid(heapRelationName)) == InvalidOid) { elog(ERROR, "DefineIndex: %s relation not found", heapRelationName); } - relationId = tuple->t_data->t_oid; if (unique && strcmp(accessMethodName, "btree") != 0) elog(ERROR, "DefineIndex: unique indices are only available with the btree access method"); diff --git a/src/backend/commands/recipe.c b/src/backend/commands/recipe.c index 85b48d18b1..c046cdc9a6 100644 --- a/src/backend/commands/recipe.c +++ b/src/backend/commands/recipe.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.26 1998/12/14 05:18:44 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/recipe.c,v 1.27 1999/02/02 03:44:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1025,7 +1025,7 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo) relid = heap_create_with_catalog( child->nodeElem->outTypes->val[0], - tupdesc, RELKIND_RELATION); + tupdesc, RELKIND_RELATION, false); } else { @@ -1049,7 +1049,7 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo) { relid = heap_create_with_catalog( child->nodeElem->outTypes->val[0], - tupdesc, RELKIND_RELATION); + tupdesc, RELKIND_RELATION, false); } } } diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c index 2977d9e79d..41f2cccb50 100644 --- a/src/backend/commands/rename.c +++ b/src/backend/commands/rename.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.19 1998/12/15 12:45:58 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.20 1999/02/02 03:44:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -106,15 +107,9 @@ renameatt(char *relname, List *child, *children; - reltup = SearchSysCacheTuple(RELNAME, - PointerGetDatum(relname), - 0, 0, 0); - - if (!HeapTupleIsValid(reltup)) + if ((myrelid = RelnameFindRelid(relname)) == InvalidOid) elog(ERROR, "renameatt: unknown relation: \"%s\"", relname); - myrelid = reltup->t_data->t_oid; - /* this routine is actually in the planner */ children = find_all_inheritors(lconsi(myrelid, NIL), NIL); @@ -147,14 +142,10 @@ renameatt(char *relname, } } - reltup = SearchSysCacheTuple(RELNAME, - PointerGetDatum(relname), - 0, 0, 0); - if (!HeapTupleIsValid(reltup)) + + if ((relid = RelnameFindRelid(relname)) == InvalidOid) elog(ERROR, "renameatt: relation \"%s\" nonexistent", relname); - relid = reltup->t_data->t_oid; - oldatttup = SearchSysCacheTupleCopy(ATTNAME, ObjectIdGetDatum(relid), PointerGetDatum(oldattname), @@ -211,8 +202,7 @@ void renamerel(char *oldrelname, char *newrelname) { Relation relrelation; /* for RELATION relation */ - HeapTuple oldreltup, - newreltup; + HeapTuple oldreltup; char oldpath[MAXPGPATH], newpath[MAXPGPATH]; Relation irelations[Num_pg_class_indices]; @@ -231,10 +221,7 @@ renamerel(char *oldrelname, char *newrelname) if (!HeapTupleIsValid(oldreltup)) elog(ERROR, "renamerel: relation \"%s\" does not exist", oldrelname); - newreltup = SearchSysCacheTuple(RELNAME, - PointerGetDatum(newrelname), - 0, 0, 0); - if (HeapTupleIsValid(newreltup)) + if (RelnameFindRelid(newrelname) != InvalidOid) elog(ERROR, "renamerel: relation \"%s\" exists", newrelname); /* rename the path first, so if this fails the rename's not done */ diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index b37acb6d25..ab38014d53 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: view.c,v 1.29 1998/12/14 08:11:01 scrappy Exp $ + * $Id: view.c,v 1.30 1999/02/02 03:44:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -95,6 +95,7 @@ DefineVirtualRelation(char *relname, List *tlist) * nil... */ createStmt.relname = relname; + createStmt.istemp = false; createStmt.tableElts = attrList; /* createStmt.tableType = NULL;*/ createStmt.inhRelnames = NIL; diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c index 139c95c591..1e985edbef 100644 --- a/src/backend/executor/execAmi.c +++ b/src/backend/executor/execAmi.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: execAmi.c,v 1.29 1999/01/18 00:09:45 momjian Exp $ + * $Id: execAmi.c,v 1.30 1999/02/02 03:44:23 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -524,7 +524,7 @@ ExecCreatR(TupleDesc tupType, * heap_create creates a name if the argument to heap_create is * '\0 ' */ - relDesc = heap_create("", tupType); + relDesc = heap_create(NULL, tupType, true, false); } else { diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 00137272e2..60aec3e488 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.69 1999/01/29 13:24:36 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.70 1999/02/02 03:44:23 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -654,7 +654,7 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate) tupdesc = CreateTupleDescCopy(tupType); intoRelationId = heap_create_with_catalog(intoName, - tupdesc, RELKIND_RELATION); + tupdesc, RELKIND_RELATION,parseTree->isTemp); FreeTupleDesc(tupdesc); diff --git a/src/backend/executor/nodeTee.c b/src/backend/executor/nodeTee.c index 5efa748e2c..8f4ca0a22f 100644 --- a/src/backend/executor/nodeTee.c +++ b/src/backend/executor/nodeTee.c @@ -14,7 +14,7 @@ * ExecInitTee * ExecEndTee * - * $Id: nodeTee.c,v 1.28 1999/02/01 13:33:27 vadim Exp $ + * $Id: nodeTee.c,v 1.29 1999/02/02 03:44:24 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -167,7 +167,7 @@ ExecInitTee(Tee *node, EState *currentEstate, Plan *parent) else bufferRel = heap_open( heap_create_with_catalog(teeState->tee_bufferRelname, - tupType, RELKIND_RELATION)); + tupType, RELKIND_RELATION, false)); } else { @@ -176,7 +176,7 @@ ExecInitTee(Tee *node, EState *currentEstate, Plan *parent) newoid()); bufferRel = heap_open( heap_create_with_catalog(teeState->tee_bufferRelname, - tupType, RELKIND_RELATION)); + tupType, RELKIND_RELATION, false)); } teeState->tee_bufferRel = bufferRel; diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 7eb2dd34a3..24266633f2 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.56 1999/01/29 09:22:59 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.57 1999/02/02 03:44:26 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -29,6 +29,7 @@ #include "utils/palloc.h" #include "catalog/pg_type.h" #include "storage/lmgr.h" +#include "optimizer/planmain.h" /* * listCopy-- @@ -1572,6 +1573,7 @@ _copyQuery(Query *from) newnode->into = pstrdup(from->into); newnode->isPortal = from->isPortal; newnode->isBinary = from->isBinary; + newnode->isTemp = from->isTemp; newnode->unionall = from->unionall; if (from->uniqueFlag) newnode->uniqueFlag = pstrdup(from->uniqueFlag); diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index eac479a880..71b188d8b5 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: outfuncs.c,v 1.61 1999/01/24 00:28:20 momjian Exp $ + * $Id: outfuncs.c,v 1.62 1999/02/02 03:44:26 momjian Exp $ * * NOTES * Every (plan) node in POSTGRES has an associated "out" routine which @@ -69,8 +69,13 @@ _outIntList(StringInfo str, List *list) static void _outCreateStmt(StringInfo str, CreateStmt *node) { - appendStringInfo(str, " CREATE :relname %s :columns ", + appendStringInfo(str, " CREATE :relname %s ", stringStringInfo(node->relname)); + + appendStringInfo(str, " :istemp %s ", + node->istemp ? "true" : "false"); + + appendStringInfo(str, " :columns "); _outNode(str, node->tableElts); appendStringInfo(str, " :inhRelnames "); @@ -197,11 +202,12 @@ _outQuery(StringInfo str, Query *node) } appendStringInfo(str, - " :resultRelation %d :into %s :isPortal %s :isBinary %s :unionall %s ", + " :resultRelation %d :into %s :isPortal %s :isBinary %s :isTemp %s :unionall %s ", node->resultRelation, stringStringInfo(node->into), node->isPortal ? "true" : "false", node->isBinary ? "true" : "false", + node->isTemp ? "true" : "false", node->unionall ? "true" : "false"); appendStringInfo(str, " :unique %s :sortClause ", diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 3bc6769389..65d2405b5f 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.43 1999/01/24 00:28:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.44 1999/02/02 03:44:27 momjian Exp $ * * NOTES * Most of the read functions for plan nodes are tested. (In fact, they @@ -120,6 +120,10 @@ _readQuery() token = lsptok(NULL, &length); /* get isBinary */ local_node->isBinary = (token[0] == 't') ? true : false; + token = lsptok(NULL, &length); /* skip :isTemp */ + token = lsptok(NULL, &length); /* get isTemp */ + local_node->isTemp = (token[0] == 't') ? true : false; + token = lsptok(NULL, &length); /* skip :unionall */ token = lsptok(NULL, &length); /* get unionall */ local_node->unionall = (token[0] == 't') ? true : false; diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index f5b19d13a1..6232a2d067 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: analyze.c,v 1.96 1999/01/27 01:18:20 scrappy Exp $ + * $Id: analyze.c,v 1.97 1999/02/02 03:44:32 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -924,6 +924,7 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) qry->uniqueFlag = stmt->unique; qry->into = stmt->into; + qry->isTemp = stmt->istemp; qry->isPortal = FALSE; qry->targetList = transformTargetList(pstate, stmt->targetList); @@ -1032,6 +1033,7 @@ transformCursorStmt(ParseState *pstate, SelectStmt *stmt) qry = transformSelectStmt(pstate, stmt); qry->into = stmt->portalname; + qry->isTemp = stmt->istemp; qry->isPortal = TRUE; qry->isBinary = stmt->binary; /* internal portal */ @@ -1074,7 +1076,7 @@ create_select_list(Node *ptr, List **select_list, bool *unionall_present) * hands back 'true' */ Node *A_Expr_to_Expr(Node *ptr, bool *intersect_present) { - Node *result; + Node *result = NULL; switch(nodeTag(ptr)) { diff --git a/src/backend/parser/gram.c b/src/backend/parser/gram.c index 30d6011cc4..8ae45f764f 100644 --- a/src/backend/parser/gram.c +++ b/src/backend/parser/gram.c @@ -121,110 +121,111 @@ #define SET 371 #define SUBSTRING 372 #define TABLE 373 -#define THEN 374 -#define TIME 375 -#define TIMESTAMP 376 -#define TIMEZONE_HOUR 377 -#define TIMEZONE_MINUTE 378 -#define TO 379 -#define TRAILING 380 -#define TRANSACTION 381 -#define TRIM 382 -#define TRUE_P 383 -#define UNION 384 -#define UNIQUE 385 -#define UPDATE 386 -#define USER 387 -#define USING 388 -#define VALUES 389 -#define VARCHAR 390 -#define VARYING 391 -#define VIEW 392 -#define WHEN 393 -#define WHERE 394 -#define WITH 395 -#define WORK 396 -#define YEAR_P 397 -#define ZONE 398 -#define TRIGGER 399 -#define TYPE_P 400 -#define ABORT_TRANS 401 -#define AFTER 402 -#define AGGREGATE 403 -#define ANALYZE 404 -#define BACKWARD 405 -#define BEFORE 406 -#define BINARY 407 -#define CACHE 408 -#define CLUSTER 409 -#define COPY 410 -#define CREATEDB 411 -#define CREATEUSER 412 -#define CYCLE 413 -#define DATABASE 414 -#define DELIMITERS 415 -#define DO 416 -#define EACH 417 -#define ENCODING 418 -#define EXPLAIN 419 -#define EXTEND 420 -#define FORWARD 421 -#define FUNCTION 422 -#define HANDLER 423 -#define INCREMENT 424 -#define INDEX 425 -#define INHERITS 426 -#define INSTEAD 427 -#define ISNULL 428 -#define LANCOMPILER 429 -#define LISTEN 430 -#define LOAD 431 -#define LOCATION 432 -#define LOCK_P 433 -#define MAXVALUE 434 -#define MINVALUE 435 -#define MOVE 436 -#define NEW 437 -#define NOCREATEDB 438 -#define NOCREATEUSER 439 -#define NONE 440 -#define NOTHING 441 -#define NOTIFY 442 -#define NOTNULL 443 -#define OIDS 444 -#define OPERATOR 445 -#define PASSWORD 446 -#define PROCEDURAL 447 -#define RECIPE 448 -#define RENAME 449 -#define RESET 450 -#define RETURNS 451 -#define ROW 452 -#define RULE 453 -#define SEQUENCE 454 -#define SERIAL 455 -#define SETOF 456 -#define SHOW 457 -#define START 458 -#define STATEMENT 459 -#define STDIN 460 -#define STDOUT 461 -#define TRUSTED 462 -#define UNLISTEN 463 -#define UNTIL 464 -#define VACUUM 465 -#define VALID 466 -#define VERBOSE 467 -#define VERSION 468 -#define IDENT 469 -#define SCONST 470 -#define Op 471 -#define ICONST 472 -#define PARAM 473 -#define FCONST 474 -#define OP 475 -#define UMINUS 476 -#define TYPECAST 477 +#define TEMP 374 +#define THEN 375 +#define TIME 376 +#define TIMESTAMP 377 +#define TIMEZONE_HOUR 378 +#define TIMEZONE_MINUTE 379 +#define TO 380 +#define TRAILING 381 +#define TRANSACTION 382 +#define TRIM 383 +#define TRUE_P 384 +#define UNION 385 +#define UNIQUE 386 +#define UPDATE 387 +#define USER 388 +#define USING 389 +#define VALUES 390 +#define VARCHAR 391 +#define VARYING 392 +#define VIEW 393 +#define WHEN 394 +#define WHERE 395 +#define WITH 396 +#define WORK 397 +#define YEAR_P 398 +#define ZONE 399 +#define TRIGGER 400 +#define TYPE_P 401 +#define ABORT_TRANS 402 +#define AFTER 403 +#define AGGREGATE 404 +#define ANALYZE 405 +#define BACKWARD 406 +#define BEFORE 407 +#define BINARY 408 +#define CACHE 409 +#define CLUSTER 410 +#define COPY 411 +#define CREATEDB 412 +#define CREATEUSER 413 +#define CYCLE 414 +#define DATABASE 415 +#define DELIMITERS 416 +#define DO 417 +#define EACH 418 +#define ENCODING 419 +#define EXPLAIN 420 +#define EXTEND 421 +#define FORWARD 422 +#define FUNCTION 423 +#define HANDLER 424 +#define INCREMENT 425 +#define INDEX 426 +#define INHERITS 427 +#define INSTEAD 428 +#define ISNULL 429 +#define LANCOMPILER 430 +#define LISTEN 431 +#define LOAD 432 +#define LOCATION 433 +#define LOCK_P 434 +#define MAXVALUE 435 +#define MINVALUE 436 +#define MOVE 437 +#define NEW 438 +#define NOCREATEDB 439 +#define NOCREATEUSER 440 +#define NONE 441 +#define NOTHING 442 +#define NOTIFY 443 +#define NOTNULL 444 +#define OIDS 445 +#define OPERATOR 446 +#define PASSWORD 447 +#define PROCEDURAL 448 +#define RECIPE 449 +#define RENAME 450 +#define RESET 451 +#define RETURNS 452 +#define ROW 453 +#define RULE 454 +#define SEQUENCE 455 +#define SERIAL 456 +#define SETOF 457 +#define SHOW 458 +#define START 459 +#define STATEMENT 460 +#define STDIN 461 +#define STDOUT 462 +#define TRUSTED 463 +#define UNLISTEN 464 +#define UNTIL 465 +#define VACUUM 466 +#define VALID 467 +#define VERBOSE 468 +#define VERSION 469 +#define IDENT 470 +#define SCONST 471 +#define Op 472 +#define ICONST 473 +#define PARAM 474 +#define FCONST 475 +#define OP 476 +#define UMINUS 477 +#define TYPECAST 478 #line 1 "gram.y" /* -*-text-*- */ @@ -239,7 +240,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.65 1999/01/29 09:23:02 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.66 1999/02/02 03:44:34 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -357,26 +358,26 @@ typedef union -#define YYFINAL 1690 +#define YYFINAL 1693 #define YYFLAG -32768 -#define YYNTBASE 239 +#define YYNTBASE 240 -#define YYTRANSLATE(x) ((unsigned)(x) <= 477 ? yytranslate[x] : 504) +#define YYTRANSLATE(x) ((unsigned)(x) <= 478 ? yytranslate[x] : 506) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 237, - 238, 226, 224, 236, 225, 232, 227, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 229, 230, 222, - 221, 223, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 238, + 239, 227, 225, 237, 226, 233, 228, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 230, 231, 223, + 222, 224, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 233, 2, 234, 2, 2, 2, 2, 2, 2, 2, + 234, 2, 235, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 228, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 229, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -411,7 +412,7 @@ static const short yytranslate[] = { 0, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 231, 235 + 216, 217, 218, 219, 220, 221, 232, 236 }; #if YYDEBUG != 0 @@ -426,394 +427,396 @@ static const short yyprhs[] = { 0, 182, 184, 186, 188, 190, 192, 195, 199, 204, 207, 211, 216, 222, 226, 231, 235, 242, 248, 251, 254, 262, 264, 266, 268, 270, 272, 274, 275, 278, 279, - 283, 284, 292, 296, 298, 299, 301, 303, 307, 311, - 313, 314, 317, 319, 322, 323, 327, 329, 334, 337, - 340, 343, 345, 348, 354, 358, 360, 362, 365, 369, - 373, 377, 381, 385, 389, 393, 396, 399, 402, 406, - 413, 417, 421, 426, 430, 433, 436, 438, 440, 445, - 447, 452, 454, 456, 460, 462, 467, 472, 478, 489, - 493, 495, 497, 499, 501, 504, 508, 512, 516, 520, - 524, 528, 532, 535, 538, 541, 545, 552, 556, 560, - 565, 569, 573, 578, 582, 586, 589, 592, 595, 598, - 602, 605, 610, 614, 618, 623, 628, 634, 641, 647, - 654, 658, 660, 662, 665, 668, 669, 672, 674, 675, - 679, 683, 686, 688, 691, 694, 699, 700, 707, 711, - 712, 716, 718, 720, 725, 728, 729, 732, 734, 737, - 740, 743, 746, 748, 750, 752, 755, 757, 760, 770, - 772, 773, 778, 793, 795, 797, 799, 803, 809, 811, - 813, 815, 819, 821, 822, 824, 826, 828, 832, 833, - 835, 837, 839, 841, 847, 851, 854, 856, 858, 860, - 862, 864, 866, 868, 870, 874, 876, 880, 884, 886, - 890, 892, 894, 896, 898, 901, 905, 909, 914, 919, - 921, 923, 925, 927, 928, 930, 933, 935, 937, 939, - 940, 943, 946, 947, 955, 958, 960, 962, 964, 968, - 970, 972, 974, 976, 978, 980, 983, 985, 989, 990, - 997, 1009, 1011, 1012, 1015, 1016, 1018, 1020, 1024, 1026, - 1033, 1037, 1040, 1043, 1044, 1046, 1049, 1050, 1055, 1059, - 1071, 1074, 1075, 1079, 1082, 1084, 1088, 1091, 1093, 1094, - 1098, 1100, 1102, 1104, 1106, 1111, 1113, 1115, 1120, 1127, - 1129, 1131, 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, - 1151, 1155, 1159, 1169, 1171, 1172, 1174, 1175, 1176, 1190, - 1192, 1194, 1198, 1200, 1202, 1206, 1209, 1213, 1215, 1217, - 1219, 1221, 1223, 1225, 1226, 1229, 1232, 1235, 1238, 1241, - 1244, 1247, 1250, 1253, 1255, 1257, 1258, 1264, 1267, 1274, - 1278, 1282, 1283, 1287, 1288, 1290, 1292, 1293, 1295, 1297, - 1298, 1302, 1307, 1311, 1317, 1319, 1320, 1322, 1323, 1327, - 1328, 1330, 1334, 1338, 1340, 1342, 1344, 1346, 1348, 1350, - 1355, 1360, 1363, 1365, 1373, 1378, 1382, 1383, 1387, 1389, - 1392, 1397, 1401, 1410, 1418, 1425, 1427, 1428, 1435, 1443, - 1445, 1447, 1449, 1452, 1453, 1456, 1457, 1460, 1463, 1466, - 1470, 1474, 1476, 1480, 1485, 1489, 1498, 1502, 1503, 1505, - 1506, 1508, 1509, 1511, 1515, 1517, 1518, 1522, 1523, 1525, - 1529, 1532, 1535, 1538, 1541, 1543, 1545, 1546, 1548, 1549, - 1551, 1553, 1557, 1561, 1562, 1565, 1566, 1569, 1574, 1575, - 1584, 1587, 1588, 1592, 1597, 1599, 1603, 1606, 1608, 1611, - 1614, 1617, 1620, 1622, 1624, 1626, 1627, 1629, 1630, 1635, - 1640, 1641, 1643, 1647, 1649, 1653, 1655, 1658, 1659, 1661, - 1664, 1668, 1673, 1674, 1678, 1683, 1684, 1687, 1689, 1692, - 1694, 1696, 1698, 1700, 1702, 1704, 1707, 1710, 1713, 1716, - 1718, 1721, 1723, 1725, 1729, 1730, 1736, 1740, 1741, 1747, - 1751, 1752, 1757, 1759, 1764, 1767, 1769, 1773, 1776, 1778, - 1779, 1783, 1784, 1787, 1788, 1790, 1793, 1795, 1798, 1800, - 1802, 1804, 1806, 1808, 1810, 1814, 1815, 1817, 1821, 1825, - 1829, 1833, 1837, 1841, 1845, 1846, 1848, 1850, 1858, 1867, - 1876, 1884, 1892, 1896, 1900, 1902, 1904, 1906, 1908, 1910, - 1912, 1914, 1916, 1918, 1920, 1922, 1925, 1927, 1929, 1931, - 1934, 1938, 1942, 1946, 1950, 1954, 1958, 1962, 1965, 1968, - 1971, 1975, 1982, 1986, 1990, 1994, 1999, 2002, 2005, 2010, - 2014, 2019, 2021, 2023, 2028, 2030, 2035, 2037, 2039, 2044, - 2049, 2054, 2059, 2065, 2071, 2077, 2082, 2085, 2089, 2092, - 2097, 2101, 2106, 2110, 2115, 2121, 2128, 2129, 2136, 2137, - 2145, 2151, 2157, 2163, 2169, 2175, 2181, 2187, 2193, 2200, - 2207, 2214, 2221, 2228, 2235, 2242, 2249, 2256, 2263, 2270, - 2277, 2284, 2291, 2298, 2305, 2309, 2313, 2316, 2318, 2321, - 2323, 2325, 2328, 2332, 2336, 2340, 2344, 2347, 2350, 2353, - 2357, 2364, 2368, 2372, 2375, 2378, 2382, 2387, 2389, 2391, - 2396, 2398, 2403, 2405, 2407, 2412, 2417, 2423, 2429, 2435, - 2440, 2445, 2452, 2453, 2455, 2459, 2463, 2467, 2468, 2470, - 2472, 2474, 2478, 2479, 2482, 2484, 2487, 2491, 2495, 2499, - 2503, 2506, 2510, 2517, 2521, 2525, 2528, 2531, 2533, 2537, - 2542, 2547, 2552, 2558, 2564, 2570, 2575, 2579, 2580, 2583, - 2584, 2587, 2588, 2592, 2595, 2597, 2599, 2601, 2603, 2607, - 2609, 2611, 2613, 2617, 2623, 2630, 2635, 2638, 2640, 2645, - 2648, 2649, 2652, 2654, 2655, 2659, 2663, 2665, 2669, 2673, - 2677, 2679, 2681, 2686, 2689, 2693, 2697, 2699, 2703, 2705, - 2709, 2711, 2713, 2714, 2716, 2718, 2720, 2722, 2724, 2726, - 2728, 2730, 2732, 2734, 2736, 2738, 2740, 2742, 2745, 2747, - 2749, 2751, 2754, 2756, 2758, 2760, 2762, 2764, 2766, 2768, - 2770, 2772, 2774, 2776, 2778, 2780, 2782, 2784, 2786, 2788, - 2790, 2792, 2794, 2796, 2798, 2800, 2802, 2804, 2806, 2808, - 2810, 2812, 2814, 2816, 2818, 2820, 2822, 2824, 2826, 2828, - 2830, 2832, 2834, 2836, 2838, 2840, 2842, 2844, 2846, 2848, - 2850, 2852, 2854, 2856, 2858, 2860, 2862, 2864, 2866, 2868, - 2870, 2872, 2874, 2876, 2878, 2880, 2882, 2884, 2886, 2888, - 2890, 2892, 2894, 2896, 2898, 2900, 2902, 2904, 2906, 2908, - 2910, 2912, 2914, 2916, 2918, 2920, 2922, 2924, 2926, 2928, - 2930, 2932, 2934, 2936, 2938, 2940, 2942, 2944, 2946, 2948, - 2950, 2952, 2954, 2956, 2958, 2960, 2962, 2964, 2966, 2968, - 2970, 2972, 2974, 2976, 2978, 2980, 2982, 2984, 2986, 2988 + 283, 284, 293, 295, 296, 300, 302, 303, 305, 307, + 311, 315, 317, 318, 321, 323, 326, 327, 331, 333, + 338, 341, 344, 347, 349, 352, 358, 362, 364, 366, + 369, 373, 377, 381, 385, 389, 393, 397, 400, 403, + 406, 410, 417, 421, 425, 430, 434, 437, 440, 442, + 444, 449, 451, 456, 458, 460, 464, 466, 471, 476, + 482, 493, 497, 499, 501, 503, 505, 508, 512, 516, + 520, 524, 528, 532, 536, 539, 542, 545, 549, 556, + 560, 564, 569, 573, 577, 582, 586, 590, 593, 596, + 599, 602, 606, 609, 614, 618, 622, 627, 632, 638, + 645, 651, 658, 662, 664, 666, 669, 672, 673, 676, + 678, 679, 683, 687, 690, 692, 695, 698, 703, 704, + 712, 716, 717, 721, 723, 725, 730, 733, 734, 737, + 739, 742, 745, 748, 751, 753, 755, 757, 760, 762, + 765, 775, 777, 778, 783, 798, 800, 802, 804, 808, + 814, 816, 818, 820, 824, 826, 827, 829, 831, 833, + 837, 838, 840, 842, 844, 846, 852, 856, 859, 861, + 863, 865, 867, 869, 871, 873, 875, 879, 881, 885, + 889, 891, 895, 897, 899, 901, 903, 906, 910, 914, + 919, 924, 926, 928, 930, 932, 933, 935, 938, 940, + 942, 944, 945, 948, 951, 952, 960, 963, 965, 967, + 969, 973, 975, 977, 979, 981, 983, 985, 988, 990, + 994, 995, 1002, 1014, 1016, 1017, 1020, 1021, 1023, 1025, + 1029, 1031, 1038, 1042, 1045, 1048, 1049, 1051, 1054, 1055, + 1060, 1064, 1076, 1079, 1080, 1084, 1087, 1089, 1093, 1096, + 1098, 1099, 1103, 1105, 1107, 1109, 1111, 1116, 1118, 1120, + 1125, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, 1148, + 1150, 1152, 1156, 1160, 1164, 1174, 1176, 1177, 1179, 1180, + 1181, 1195, 1197, 1199, 1203, 1205, 1207, 1211, 1214, 1218, + 1220, 1222, 1224, 1226, 1228, 1230, 1231, 1234, 1237, 1240, + 1243, 1246, 1249, 1252, 1255, 1258, 1260, 1262, 1263, 1269, + 1272, 1279, 1283, 1287, 1288, 1292, 1293, 1295, 1297, 1298, + 1300, 1302, 1303, 1307, 1312, 1316, 1322, 1324, 1325, 1327, + 1328, 1332, 1333, 1335, 1339, 1343, 1345, 1347, 1349, 1351, + 1353, 1355, 1360, 1365, 1368, 1370, 1378, 1383, 1387, 1388, + 1392, 1394, 1397, 1402, 1406, 1415, 1423, 1430, 1432, 1433, + 1440, 1448, 1450, 1452, 1454, 1457, 1458, 1461, 1462, 1465, + 1468, 1471, 1475, 1479, 1481, 1485, 1490, 1494, 1503, 1508, + 1509, 1511, 1512, 1514, 1515, 1517, 1521, 1523, 1524, 1528, + 1529, 1531, 1535, 1538, 1541, 1544, 1547, 1549, 1551, 1552, + 1554, 1555, 1557, 1559, 1563, 1567, 1568, 1571, 1572, 1575, + 1580, 1581, 1590, 1593, 1594, 1598, 1603, 1605, 1609, 1612, + 1614, 1617, 1620, 1623, 1626, 1628, 1630, 1632, 1633, 1635, + 1636, 1641, 1646, 1647, 1649, 1653, 1655, 1659, 1661, 1664, + 1665, 1667, 1670, 1674, 1679, 1680, 1684, 1689, 1690, 1693, + 1695, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1713, 1716, + 1719, 1722, 1724, 1727, 1729, 1731, 1735, 1736, 1742, 1746, + 1747, 1753, 1757, 1758, 1763, 1765, 1770, 1773, 1775, 1779, + 1782, 1784, 1785, 1789, 1790, 1793, 1794, 1796, 1799, 1801, + 1804, 1806, 1808, 1810, 1812, 1814, 1816, 1820, 1821, 1823, + 1827, 1831, 1835, 1839, 1843, 1847, 1851, 1852, 1854, 1856, + 1864, 1873, 1882, 1890, 1898, 1902, 1906, 1908, 1910, 1912, + 1914, 1916, 1918, 1920, 1922, 1924, 1926, 1928, 1931, 1933, + 1935, 1937, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, + 1971, 1974, 1977, 1981, 1988, 1992, 1996, 2000, 2005, 2008, + 2011, 2016, 2020, 2025, 2027, 2029, 2034, 2036, 2041, 2043, + 2045, 2050, 2055, 2060, 2065, 2071, 2077, 2083, 2088, 2091, + 2095, 2098, 2103, 2107, 2112, 2116, 2121, 2127, 2134, 2135, + 2142, 2143, 2151, 2157, 2163, 2169, 2175, 2181, 2187, 2193, + 2199, 2206, 2213, 2220, 2227, 2234, 2241, 2248, 2255, 2262, + 2269, 2276, 2283, 2290, 2297, 2304, 2311, 2315, 2319, 2322, + 2324, 2327, 2329, 2331, 2334, 2338, 2342, 2346, 2350, 2353, + 2356, 2359, 2363, 2370, 2374, 2378, 2381, 2384, 2388, 2393, + 2395, 2397, 2402, 2404, 2409, 2411, 2413, 2418, 2423, 2429, + 2435, 2441, 2446, 2451, 2458, 2459, 2461, 2465, 2469, 2473, + 2474, 2476, 2478, 2480, 2484, 2485, 2488, 2490, 2493, 2497, + 2501, 2505, 2509, 2512, 2516, 2523, 2527, 2531, 2534, 2537, + 2539, 2543, 2548, 2553, 2558, 2564, 2570, 2576, 2581, 2585, + 2586, 2589, 2590, 2593, 2594, 2598, 2601, 2603, 2605, 2607, + 2609, 2613, 2615, 2617, 2619, 2623, 2629, 2636, 2641, 2644, + 2646, 2651, 2654, 2655, 2658, 2660, 2661, 2665, 2669, 2671, + 2675, 2679, 2683, 2685, 2687, 2692, 2695, 2699, 2703, 2705, + 2709, 2711, 2715, 2717, 2719, 2720, 2722, 2724, 2726, 2728, + 2730, 2732, 2734, 2736, 2738, 2740, 2742, 2744, 2746, 2748, + 2751, 2753, 2755, 2757, 2760, 2762, 2764, 2766, 2768, 2770, + 2772, 2774, 2776, 2778, 2780, 2782, 2784, 2786, 2788, 2790, + 2792, 2794, 2796, 2798, 2800, 2802, 2804, 2806, 2808, 2810, + 2812, 2814, 2816, 2818, 2820, 2822, 2824, 2826, 2828, 2830, + 2832, 2834, 2836, 2838, 2840, 2842, 2844, 2846, 2848, 2850, + 2852, 2854, 2856, 2858, 2860, 2862, 2864, 2866, 2868, 2870, + 2872, 2874, 2876, 2878, 2880, 2882, 2884, 2886, 2888, 2890, + 2892, 2894, 2896, 2898, 2900, 2902, 2904, 2906, 2908, 2910, + 2912, 2914, 2916, 2918, 2920, 2922, 2924, 2926, 2928, 2930, + 2932, 2934, 2936, 2938, 2940, 2942, 2944, 2946, 2948, 2950, + 2952, 2954, 2956, 2958, 2960, 2962, 2964, 2966, 2968, 2970, + 2972, 2974, 2976, 2978, 2980, 2982, 2984, 2986, 2988, 2990, + 2992, 2994 }; -static const short yyrhs[] = { 240, - 0, 241, 0, 240, 241, 230, 0, 241, 230, 0, - 256, 0, 243, 0, 258, 0, 259, 0, 265, 0, - 287, 0, 291, 0, 297, 0, 300, 0, 242, 0, - 380, 0, 310, 0, 318, 0, 299, 0, 309, 0, - 244, 0, 339, 0, 386, 0, 319, 0, 323, 0, - 330, 0, 368, 0, 369, 0, 394, 0, 341, 0, - 340, 0, 349, 0, 352, 0, 351, 0, 347, 0, - 356, 0, 329, 0, 387, 0, 359, 0, 370, 0, - 372, 0, 373, 0, 374, 0, 379, 0, 381, 0, - 251, 0, 254, 0, 255, 0, 28, 132, 499, 245, - 246, 247, 249, 250, 0, 7, 132, 499, 245, 246, - 247, 249, 250, 0, 44, 132, 499, 0, 140, 191, - 499, 0, 0, 156, 0, 183, 0, 0, 157, 0, - 184, 0, 0, 248, 236, 499, 0, 499, 0, 62, - 59, 248, 0, 0, 211, 209, 215, 0, 0, 116, - 501, 124, 252, 0, 116, 501, 221, 252, 0, 116, - 120, 143, 253, 0, 116, 126, 70, 76, 107, 501, - 0, 116, 126, 70, 76, 501, 0, 116, 82, 378, - 0, 498, 0, 39, 0, 498, 0, 39, 0, 78, - 0, 202, 501, 0, 202, 120, 143, 0, 202, 126, - 70, 76, 0, 195, 501, 0, 195, 120, 143, 0, - 195, 126, 70, 76, 0, 7, 118, 485, 413, 257, - 0, 5, 358, 268, 0, 5, 237, 266, 238, 0, - 44, 358, 501, 0, 7, 358, 501, 116, 39, 275, - 0, 7, 358, 501, 44, 39, 0, 5, 277, 0, - 22, 484, 0, 155, 262, 485, 263, 260, 261, 264, - 0, 124, 0, 56, 0, 498, 0, 205, 0, 206, - 0, 152, 0, 0, 140, 189, 0, 0, 133, 160, - 498, 0, 0, 28, 118, 485, 237, 266, 238, 286, - 0, 266, 236, 267, 0, 267, 0, 0, 268, 0, - 276, 0, 501, 431, 269, 0, 501, 200, 271, 0, - 270, 0, 0, 270, 272, 0, 272, 0, 102, 72, - 0, 0, 27, 491, 273, 0, 273, 0, 21, 237, - 279, 238, 0, 39, 90, 0, 39, 275, 0, 88, - 90, 0, 130, 0, 102, 72, 0, 108, 501, 390, - 282, 283, 0, 274, 236, 275, 0, 275, 0, 495, - 0, 225, 275, 0, 275, 224, 275, 0, 275, 225, - 275, 0, 275, 227, 275, 0, 275, 226, 275, 0, - 275, 221, 275, 0, 275, 222, 275, 0, 275, 223, - 275, 0, 229, 275, 0, 230, 275, 0, 228, 275, - 0, 275, 235, 431, 0, 18, 237, 275, 10, 431, - 238, 0, 237, 275, 238, 0, 492, 237, 238, 0, - 492, 237, 274, 238, 0, 275, 216, 275, 0, 216, - 275, 0, 275, 216, 0, 31, 0, 32, 0, 32, - 237, 497, 238, 0, 33, 0, 33, 237, 497, 238, - 0, 34, 0, 132, 0, 27, 491, 277, 0, 277, - 0, 21, 237, 279, 238, 0, 130, 237, 391, 238, - 0, 102, 72, 237, 391, 238, 0, 55, 72, 237, - 391, 238, 108, 501, 390, 282, 283, 0, 278, 236, - 279, 0, 279, 0, 495, 0, 90, 0, 501, 0, - 225, 279, 0, 279, 224, 279, 0, 279, 225, 279, - 0, 279, 227, 279, 0, 279, 226, 279, 0, 279, - 221, 279, 0, 279, 222, 279, 0, 279, 223, 279, - 0, 229, 279, 0, 230, 279, 0, 228, 279, 0, - 279, 235, 431, 0, 18, 237, 279, 10, 431, 238, - 0, 237, 279, 238, 0, 492, 237, 238, 0, 492, - 237, 278, 238, 0, 279, 216, 279, 0, 279, 77, - 279, 0, 279, 88, 77, 279, 0, 279, 8, 279, - 0, 279, 96, 279, 0, 88, 279, 0, 216, 279, - 0, 279, 216, 0, 279, 173, 0, 279, 69, 90, - 0, 279, 188, 0, 279, 69, 88, 90, 0, 279, - 69, 128, 0, 279, 69, 51, 0, 279, 69, 88, - 128, 0, 279, 69, 88, 51, 0, 279, 62, 237, - 280, 238, 0, 279, 88, 62, 237, 280, 238, 0, - 279, 13, 281, 8, 281, 0, 279, 88, 13, 281, - 8, 281, 0, 280, 236, 281, 0, 281, 0, 495, - 0, 79, 57, 0, 79, 99, 0, 0, 284, 284, - 0, 284, 0, 0, 93, 40, 285, 0, 93, 131, - 285, 0, 87, 4, 0, 16, 0, 116, 39, 0, - 116, 90, 0, 171, 237, 414, 238, 0, 0, 28, - 118, 485, 288, 10, 404, 0, 237, 289, 238, 0, - 0, 289, 236, 290, 0, 290, 0, 501, 0, 28, - 199, 485, 292, 0, 292, 293, 0, 0, 153, 296, - 0, 158, 0, 169, 296, 0, 179, 296, 0, 180, - 296, 0, 203, 296, 0, 295, 0, 296, 0, 219, - 0, 225, 219, 0, 497, 0, 225, 497, 0, 28, - 298, 192, 73, 498, 168, 313, 174, 498, 0, 207, - 0, 0, 44, 192, 73, 498, 0, 28, 144, 491, - 301, 302, 93, 485, 304, 48, 105, 491, 237, 307, - 238, 0, 151, 0, 147, 0, 303, 0, 303, 96, - 303, 0, 303, 96, 303, 96, 303, 0, 65, 0, - 40, 0, 131, 0, 54, 305, 306, 0, 162, 0, - 0, 197, 0, 204, 0, 308, 0, 307, 236, 308, - 0, 0, 217, 0, 219, 0, 498, 0, 214, 0, - 44, 144, 491, 93, 485, 0, 28, 312, 311, 0, - 313, 314, 0, 190, 0, 145, 0, 148, 0, 105, - 0, 71, 0, 501, 0, 354, 0, 216, 0, 237, - 315, 238, 0, 316, 0, 315, 236, 316, 0, 313, - 221, 317, 0, 313, 0, 39, 221, 317, 0, 501, - 0, 353, 0, 294, 0, 498, 0, 201, 501, 0, - 44, 118, 414, 0, 44, 199, 414, 0, 52, 320, - 321, 322, 0, 181, 320, 321, 322, 0, 166, 0, - 150, 0, 109, 0, 3, 0, 0, 497, 0, 225, - 497, 0, 6, 0, 86, 0, 103, 0, 0, 62, - 491, 0, 56, 491, 0, 0, 58, 324, 93, 414, - 124, 327, 328, 0, 6, 104, 0, 6, 0, 325, - 0, 326, 0, 325, 236, 326, 0, 115, 0, 65, - 0, 131, 0, 40, 0, 198, 0, 106, 0, 59, - 501, 0, 501, 0, 140, 58, 95, 0, 0, 110, - 324, 93, 414, 56, 327, 0, 28, 331, 170, 490, - 93, 485, 332, 237, 333, 238, 342, 0, 130, 0, - 0, 133, 487, 0, 0, 334, 0, 335, 0, 334, - 236, 336, 0, 336, 0, 492, 237, 415, 238, 337, - 338, 0, 488, 337, 338, 0, 229, 431, 0, 54, - 431, 0, 0, 489, 0, 133, 489, 0, 0, 165, - 170, 490, 427, 0, 48, 193, 494, 0, 28, 167, - 492, 343, 196, 345, 342, 10, 498, 73, 498, 0, - 140, 314, 0, 0, 237, 344, 238, 0, 237, 238, - 0, 500, 0, 344, 236, 500, 0, 346, 500, 0, - 201, 0, 0, 44, 348, 491, 0, 145, 0, 170, - 0, 198, 0, 137, 0, 44, 148, 491, 350, 0, - 491, 0, 226, 0, 44, 167, 492, 343, 0, 44, - 190, 353, 237, 355, 238, 0, 216, 0, 354, 0, - 224, 0, 225, 0, 226, 0, 227, 0, 222, 0, - 223, 0, 221, 0, 491, 0, 491, 236, 491, 0, - 185, 236, 491, 0, 491, 236, 185, 0, 7, 118, - 485, 413, 194, 358, 357, 124, 491, 0, 491, 0, - 0, 25, 0, 0, 0, 28, 198, 491, 10, 360, - 93, 365, 124, 364, 427, 161, 366, 361, 0, 186, - 0, 387, 0, 233, 362, 234, 0, 363, 0, 387, - 0, 363, 387, 230, 0, 387, 230, 0, 485, 232, - 488, 0, 485, 0, 115, 0, 131, 0, 40, 0, - 65, 0, 172, 0, 0, 187, 485, 0, 175, 485, - 0, 208, 485, 0, 208, 226, 0, 146, 371, 0, - 12, 371, 0, 26, 371, 0, 46, 371, 0, 112, - 371, 0, 141, 0, 126, 0, 0, 28, 137, 491, - 10, 402, 0, 176, 493, 0, 28, 159, 486, 140, - 375, 376, 0, 28, 159, 486, 0, 177, 221, 377, - 0, 0, 163, 221, 378, 0, 0, 498, 0, 39, - 0, 0, 498, 0, 39, 0, 0, 44, 159, 486, - 0, 154, 490, 93, 485, 0, 210, 382, 383, 0, - 210, 382, 383, 485, 384, 0, 212, 0, 0, 149, - 0, 0, 237, 385, 238, 0, 0, 491, 0, 385, - 236, 491, 0, 164, 382, 387, 0, 402, 0, 397, - 0, 396, 0, 388, 0, 367, 0, 393, 0, 65, - 68, 485, 389, 0, 134, 237, 482, 238, 0, 39, - 134, 0, 402, 0, 237, 391, 238, 134, 237, 482, - 238, 0, 237, 391, 238, 402, 0, 237, 391, 238, - 0, 0, 391, 236, 392, 0, 392, 0, 501, 459, - 0, 40, 56, 485, 427, 0, 178, 406, 485, 0, - 178, 406, 485, 62, 395, 197, 214, 214, 0, 178, - 406, 485, 62, 214, 214, 214, 0, 178, 406, 485, - 62, 214, 214, 0, 214, 0, 0, 131, 485, 116, - 480, 419, 427, 0, 38, 491, 398, 35, 54, 402, - 399, 0, 152, 0, 64, 0, 113, 0, 64, 113, - 0, 0, 54, 400, 0, 0, 107, 94, 0, 131, - 401, 0, 92, 391, 0, 403, 409, 418, 0, 237, - 403, 238, 0, 404, 0, 403, 47, 403, 0, 403, - 129, 407, 403, 0, 403, 66, 403, 0, 115, 408, - 482, 405, 419, 427, 416, 417, 0, 68, 406, 485, - 0, 0, 118, 0, 0, 6, 0, 0, 42, 0, - 42, 93, 501, 0, 6, 0, 0, 97, 15, 410, - 0, 0, 411, 0, 410, 236, 411, 0, 455, 412, - 0, 133, 216, 0, 133, 222, 0, 133, 223, 0, - 11, 0, 41, 0, 0, 226, 0, 0, 415, 0, - 491, 0, 415, 236, 491, 0, 59, 15, 460, 0, - 0, 60, 455, 0, 0, 54, 131, 0, 54, 131, - 92, 385, 0, 0, 56, 237, 428, 422, 71, 428, - 424, 238, 0, 56, 420, 0, 0, 420, 236, 421, - 0, 421, 29, 71, 421, 0, 421, 0, 428, 10, - 502, 0, 428, 501, 0, 428, 0, 84, 422, 0, - 57, 423, 0, 75, 423, 0, 111, 423, 0, 98, - 0, 63, 0, 129, 0, 0, 98, 0, 0, 93, - 237, 455, 238, 0, 133, 237, 425, 238, 0, 0, - 426, 0, 425, 236, 426, 0, 501, 0, 501, 232, - 501, 0, 497, 0, 139, 455, 0, 0, 485, 0, - 485, 226, 0, 233, 234, 430, 0, 233, 497, 234, - 430, 0, 0, 233, 234, 430, 0, 233, 497, 234, - 430, 0, 0, 432, 429, 0, 440, 0, 201, 432, - 0, 433, 0, 445, 0, 435, 0, 434, 0, 214, - 0, 145, 0, 53, 437, 0, 43, 101, 0, 37, - 439, 0, 91, 438, 0, 53, 0, 43, 101, 0, - 37, 0, 91, 0, 237, 497, 238, 0, 0, 237, - 497, 236, 497, 238, 0, 237, 497, 238, 0, 0, - 237, 497, 236, 497, 238, 0, 237, 497, 238, 0, - 0, 441, 237, 497, 238, 0, 441, 0, 20, 442, - 443, 444, 0, 19, 442, 0, 135, 0, 83, 20, - 442, 0, 85, 442, 0, 136, 0, 0, 20, 116, - 501, 0, 0, 24, 501, 0, 0, 446, 0, 121, - 447, 0, 120, 0, 67, 448, 0, 142, 0, 81, - 0, 36, 0, 61, 0, 80, 0, 114, 0, 140, - 120, 143, 0, 0, 446, 0, 142, 124, 81, 0, - 36, 124, 61, 0, 36, 124, 80, 0, 36, 124, - 114, 0, 61, 124, 80, 0, 61, 124, 114, 0, - 80, 124, 114, 0, 0, 455, 0, 90, 0, 237, - 451, 238, 62, 237, 404, 238, 0, 237, 451, 238, - 88, 62, 237, 404, 238, 0, 237, 451, 238, 453, - 454, 237, 404, 238, 0, 237, 451, 238, 453, 237, - 404, 238, 0, 237, 451, 238, 453, 237, 451, 238, - 0, 452, 236, 455, 0, 452, 236, 455, 0, 455, - 0, 216, 0, 222, 0, 221, 0, 223, 0, 224, - 0, 225, 0, 226, 0, 227, 0, 9, 0, 6, - 0, 478, 459, 0, 450, 0, 495, 0, 501, 0, - 225, 455, 0, 455, 224, 455, 0, 455, 225, 455, - 0, 455, 227, 455, 0, 455, 226, 455, 0, 455, - 222, 455, 0, 455, 223, 455, 0, 455, 221, 455, - 0, 229, 455, 0, 230, 455, 0, 228, 455, 0, - 455, 235, 431, 0, 18, 237, 455, 10, 431, 238, - 0, 237, 449, 238, 0, 455, 216, 455, 0, 455, - 77, 455, 0, 455, 88, 77, 455, 0, 216, 455, - 0, 455, 216, 0, 492, 237, 226, 238, 0, 492, - 237, 238, 0, 492, 237, 460, 238, 0, 31, 0, - 32, 0, 32, 237, 497, 238, 0, 33, 0, 33, - 237, 497, 238, 0, 34, 0, 132, 0, 49, 237, - 404, 238, 0, 50, 237, 461, 238, 0, 100, 237, - 463, 238, 0, 117, 237, 465, 238, 0, 127, 237, - 14, 468, 238, 0, 127, 237, 74, 468, 238, 0, - 127, 237, 125, 468, 238, 0, 127, 237, 468, 238, - 0, 455, 173, 0, 455, 69, 90, 0, 455, 188, - 0, 455, 69, 88, 90, 0, 455, 69, 128, 0, - 455, 69, 88, 51, 0, 455, 69, 51, 0, 455, - 69, 88, 128, 0, 455, 13, 458, 8, 458, 0, - 455, 88, 13, 458, 8, 458, 0, 0, 455, 62, - 456, 237, 469, 238, 0, 0, 455, 88, 62, 457, - 237, 471, 238, 0, 455, 216, 237, 404, 238, 0, - 455, 224, 237, 404, 238, 0, 455, 225, 237, 404, - 238, 0, 455, 227, 237, 404, 238, 0, 455, 226, - 237, 404, 238, 0, 455, 222, 237, 404, 238, 0, - 455, 223, 237, 404, 238, 0, 455, 221, 237, 404, - 238, 0, 455, 216, 9, 237, 404, 238, 0, 455, - 224, 9, 237, 404, 238, 0, 455, 225, 9, 237, - 404, 238, 0, 455, 227, 9, 237, 404, 238, 0, - 455, 226, 9, 237, 404, 238, 0, 455, 222, 9, - 237, 404, 238, 0, 455, 223, 9, 237, 404, 238, - 0, 455, 221, 9, 237, 404, 238, 0, 455, 216, - 6, 237, 404, 238, 0, 455, 224, 6, 237, 404, - 238, 0, 455, 225, 6, 237, 404, 238, 0, 455, - 227, 6, 237, 404, 238, 0, 455, 226, 6, 237, - 404, 238, 0, 455, 222, 6, 237, 404, 238, 0, - 455, 223, 6, 237, 404, 238, 0, 455, 221, 6, - 237, 404, 238, 0, 455, 8, 455, 0, 455, 96, - 455, 0, 88, 455, 0, 473, 0, 478, 459, 0, - 495, 0, 501, 0, 225, 458, 0, 458, 224, 458, - 0, 458, 225, 458, 0, 458, 227, 458, 0, 458, - 226, 458, 0, 229, 458, 0, 230, 458, 0, 228, - 458, 0, 458, 235, 431, 0, 18, 237, 458, 10, - 431, 238, 0, 237, 455, 238, 0, 458, 216, 458, - 0, 216, 458, 0, 458, 216, 0, 492, 237, 238, - 0, 492, 237, 460, 238, 0, 31, 0, 32, 0, - 32, 237, 497, 238, 0, 33, 0, 33, 237, 497, - 238, 0, 34, 0, 132, 0, 100, 237, 463, 238, - 0, 117, 237, 465, 238, 0, 127, 237, 14, 468, - 238, 0, 127, 237, 74, 468, 238, 0, 127, 237, - 125, 468, 238, 0, 127, 237, 468, 238, 0, 233, - 455, 234, 459, 0, 233, 455, 229, 455, 234, 459, - 0, 0, 449, 0, 460, 236, 449, 0, 460, 133, - 455, 0, 462, 56, 455, 0, 0, 446, 0, 122, - 0, 123, 0, 464, 62, 464, 0, 0, 478, 459, - 0, 495, 0, 225, 464, 0, 464, 224, 464, 0, - 464, 225, 464, 0, 464, 227, 464, 0, 464, 226, - 464, 0, 228, 464, 0, 464, 235, 431, 0, 18, - 237, 464, 10, 431, 238, 0, 237, 464, 238, 0, - 464, 216, 464, 0, 216, 464, 0, 464, 216, 0, - 501, 0, 492, 237, 238, 0, 492, 237, 460, 238, - 0, 100, 237, 463, 238, 0, 117, 237, 465, 238, - 0, 127, 237, 14, 468, 238, 0, 127, 237, 74, - 468, 238, 0, 127, 237, 125, 468, 238, 0, 127, - 237, 468, 238, 0, 460, 466, 467, 0, 0, 56, - 460, 0, 0, 54, 460, 0, 0, 455, 56, 460, - 0, 56, 460, 0, 460, 0, 404, 0, 470, 0, - 495, 0, 470, 236, 495, 0, 404, 0, 472, 0, - 495, 0, 472, 236, 495, 0, 17, 477, 474, 476, - 46, 0, 89, 237, 455, 236, 455, 238, 0, 23, - 237, 460, 238, 0, 474, 475, 0, 475, 0, 138, - 455, 119, 449, 0, 45, 449, 0, 0, 478, 459, - 0, 501, 0, 0, 485, 232, 479, 0, 496, 232, - 479, 0, 488, 0, 479, 232, 488, 0, 479, 232, - 226, 0, 480, 236, 481, 0, 481, 0, 226, 0, - 501, 459, 221, 449, 0, 478, 459, 0, 485, 232, - 226, 0, 482, 236, 483, 0, 483, 0, 449, 10, - 502, 0, 449, 0, 485, 232, 226, 0, 226, 0, - 501, 0, 0, 503, 0, 501, 0, 501, 0, 214, - 0, 501, 0, 214, 0, 501, 0, 501, 0, 501, - 0, 498, 0, 214, 0, 497, 0, 219, 0, 498, - 0, 431, 498, 0, 496, 0, 128, 0, 51, 0, - 218, 459, 0, 217, 0, 215, 0, 214, 0, 501, - 0, 436, 0, 441, 0, 214, 0, 446, 0, 3, - 0, 4, 0, 147, 0, 148, 0, 150, 0, 151, - 0, 153, 0, 156, 0, 157, 0, 158, 0, 159, - 0, 160, 0, 43, 0, 162, 0, 163, 0, 166, - 0, 167, 0, 168, 0, 169, 0, 170, 0, 171, - 0, 64, 0, 172, 0, 173, 0, 72, 0, 73, - 0, 174, 0, 177, 0, 79, 0, 179, 0, 180, - 0, 86, 0, 183, 0, 184, 0, 186, 0, 188, - 0, 92, 0, 189, 0, 94, 0, 190, 0, 95, - 0, 191, 0, 103, 0, 104, 0, 192, 0, 107, - 0, 193, 0, 109, 0, 194, 0, 196, 0, 197, - 0, 198, 0, 113, 0, 199, 0, 200, 0, 203, - 0, 204, 0, 205, 0, 206, 0, 120, 0, 121, - 0, 122, 0, 123, 0, 144, 0, 207, 0, 145, - 0, 211, 0, 213, 0, 143, 0, 501, 0, 146, - 0, 149, 0, 152, 0, 17, 0, 154, 0, 23, - 0, 27, 0, 155, 0, 29, 0, 30, 0, 161, - 0, 45, 0, 46, 0, 164, 0, 165, 0, 51, - 0, 55, 0, 59, 0, 175, 0, 176, 0, 178, - 0, 181, 0, 182, 0, 185, 0, 89, 0, 97, - 0, 100, 0, 101, 0, 195, 0, 201, 0, 202, - 0, 118, 0, 119, 0, 126, 0, 128, 0, 210, - 0, 212, 0, 138, 0, 30, 0, 182, 0 +static const short yyrhs[] = { 241, + 0, 242, 0, 241, 242, 231, 0, 242, 231, 0, + 257, 0, 244, 0, 259, 0, 260, 0, 266, 0, + 289, 0, 293, 0, 299, 0, 302, 0, 243, 0, + 382, 0, 312, 0, 320, 0, 301, 0, 311, 0, + 245, 0, 341, 0, 388, 0, 321, 0, 325, 0, + 332, 0, 370, 0, 371, 0, 396, 0, 343, 0, + 342, 0, 351, 0, 354, 0, 353, 0, 349, 0, + 358, 0, 331, 0, 389, 0, 361, 0, 372, 0, + 374, 0, 375, 0, 376, 0, 381, 0, 383, 0, + 252, 0, 255, 0, 256, 0, 28, 133, 501, 246, + 247, 248, 250, 251, 0, 7, 133, 501, 246, 247, + 248, 250, 251, 0, 44, 133, 501, 0, 141, 192, + 501, 0, 0, 157, 0, 184, 0, 0, 158, 0, + 185, 0, 0, 249, 237, 501, 0, 501, 0, 62, + 59, 249, 0, 0, 212, 210, 216, 0, 0, 116, + 503, 125, 253, 0, 116, 503, 222, 253, 0, 116, + 121, 144, 254, 0, 116, 127, 70, 76, 107, 503, + 0, 116, 127, 70, 76, 503, 0, 116, 82, 380, + 0, 500, 0, 39, 0, 500, 0, 39, 0, 78, + 0, 203, 503, 0, 203, 121, 144, 0, 203, 127, + 70, 76, 0, 196, 503, 0, 196, 121, 144, 0, + 196, 127, 70, 76, 0, 7, 118, 487, 415, 258, + 0, 5, 360, 270, 0, 5, 238, 268, 239, 0, + 44, 360, 503, 0, 7, 360, 503, 116, 39, 277, + 0, 7, 360, 503, 44, 39, 0, 5, 279, 0, + 22, 486, 0, 156, 263, 487, 264, 261, 262, 265, + 0, 125, 0, 56, 0, 500, 0, 206, 0, 207, + 0, 153, 0, 0, 141, 190, 0, 0, 134, 161, + 500, 0, 0, 28, 267, 118, 487, 238, 268, 239, + 288, 0, 119, 0, 0, 268, 237, 269, 0, 269, + 0, 0, 270, 0, 278, 0, 503, 433, 271, 0, + 503, 201, 273, 0, 272, 0, 0, 272, 274, 0, + 274, 0, 102, 72, 0, 0, 27, 493, 275, 0, + 275, 0, 21, 238, 281, 239, 0, 39, 90, 0, + 39, 277, 0, 88, 90, 0, 131, 0, 102, 72, + 0, 108, 503, 392, 284, 285, 0, 276, 237, 277, + 0, 277, 0, 497, 0, 226, 277, 0, 277, 225, + 277, 0, 277, 226, 277, 0, 277, 228, 277, 0, + 277, 227, 277, 0, 277, 222, 277, 0, 277, 223, + 277, 0, 277, 224, 277, 0, 230, 277, 0, 231, + 277, 0, 229, 277, 0, 277, 236, 433, 0, 18, + 238, 277, 10, 433, 239, 0, 238, 277, 239, 0, + 494, 238, 239, 0, 494, 238, 276, 239, 0, 277, + 217, 277, 0, 217, 277, 0, 277, 217, 0, 31, + 0, 32, 0, 32, 238, 499, 239, 0, 33, 0, + 33, 238, 499, 239, 0, 34, 0, 133, 0, 27, + 493, 279, 0, 279, 0, 21, 238, 281, 239, 0, + 131, 238, 393, 239, 0, 102, 72, 238, 393, 239, + 0, 55, 72, 238, 393, 239, 108, 503, 392, 284, + 285, 0, 280, 237, 281, 0, 281, 0, 497, 0, + 90, 0, 503, 0, 226, 281, 0, 281, 225, 281, + 0, 281, 226, 281, 0, 281, 228, 281, 0, 281, + 227, 281, 0, 281, 222, 281, 0, 281, 223, 281, + 0, 281, 224, 281, 0, 230, 281, 0, 231, 281, + 0, 229, 281, 0, 281, 236, 433, 0, 18, 238, + 281, 10, 433, 239, 0, 238, 281, 239, 0, 494, + 238, 239, 0, 494, 238, 280, 239, 0, 281, 217, + 281, 0, 281, 77, 281, 0, 281, 88, 77, 281, + 0, 281, 8, 281, 0, 281, 96, 281, 0, 88, + 281, 0, 217, 281, 0, 281, 217, 0, 281, 174, + 0, 281, 69, 90, 0, 281, 189, 0, 281, 69, + 88, 90, 0, 281, 69, 129, 0, 281, 69, 51, + 0, 281, 69, 88, 129, 0, 281, 69, 88, 51, + 0, 281, 62, 238, 282, 239, 0, 281, 88, 62, + 238, 282, 239, 0, 281, 13, 283, 8, 283, 0, + 281, 88, 13, 283, 8, 283, 0, 282, 237, 283, + 0, 283, 0, 497, 0, 79, 57, 0, 79, 99, + 0, 0, 286, 286, 0, 286, 0, 0, 93, 40, + 287, 0, 93, 132, 287, 0, 87, 4, 0, 16, + 0, 116, 39, 0, 116, 90, 0, 172, 238, 416, + 239, 0, 0, 28, 267, 118, 487, 290, 10, 406, + 0, 238, 291, 239, 0, 0, 291, 237, 292, 0, + 292, 0, 503, 0, 28, 200, 487, 294, 0, 294, + 295, 0, 0, 154, 298, 0, 159, 0, 170, 298, + 0, 180, 298, 0, 181, 298, 0, 204, 298, 0, + 297, 0, 298, 0, 220, 0, 226, 220, 0, 499, + 0, 226, 499, 0, 28, 300, 193, 73, 500, 169, + 315, 175, 500, 0, 208, 0, 0, 44, 193, 73, + 500, 0, 28, 145, 493, 303, 304, 93, 487, 306, + 48, 105, 493, 238, 309, 239, 0, 152, 0, 148, + 0, 305, 0, 305, 96, 305, 0, 305, 96, 305, + 96, 305, 0, 65, 0, 40, 0, 132, 0, 54, + 307, 308, 0, 163, 0, 0, 198, 0, 205, 0, + 310, 0, 309, 237, 310, 0, 0, 218, 0, 220, + 0, 500, 0, 215, 0, 44, 145, 493, 93, 487, + 0, 28, 314, 313, 0, 315, 316, 0, 191, 0, + 146, 0, 149, 0, 105, 0, 71, 0, 503, 0, + 356, 0, 217, 0, 238, 317, 239, 0, 318, 0, + 317, 237, 318, 0, 315, 222, 319, 0, 315, 0, + 39, 222, 319, 0, 503, 0, 355, 0, 296, 0, + 500, 0, 202, 503, 0, 44, 118, 416, 0, 44, + 200, 416, 0, 52, 322, 323, 324, 0, 182, 322, + 323, 324, 0, 167, 0, 151, 0, 109, 0, 3, + 0, 0, 499, 0, 226, 499, 0, 6, 0, 86, + 0, 103, 0, 0, 62, 493, 0, 56, 493, 0, + 0, 58, 326, 93, 416, 125, 329, 330, 0, 6, + 104, 0, 6, 0, 327, 0, 328, 0, 327, 237, + 328, 0, 115, 0, 65, 0, 132, 0, 40, 0, + 199, 0, 106, 0, 59, 503, 0, 503, 0, 141, + 58, 95, 0, 0, 110, 326, 93, 416, 56, 329, + 0, 28, 333, 171, 492, 93, 487, 334, 238, 335, + 239, 344, 0, 131, 0, 0, 134, 489, 0, 0, + 336, 0, 337, 0, 336, 237, 338, 0, 338, 0, + 494, 238, 417, 239, 339, 340, 0, 490, 339, 340, + 0, 230, 433, 0, 54, 433, 0, 0, 491, 0, + 134, 491, 0, 0, 166, 171, 492, 429, 0, 48, + 194, 496, 0, 28, 168, 494, 345, 197, 347, 344, + 10, 500, 73, 500, 0, 141, 316, 0, 0, 238, + 346, 239, 0, 238, 239, 0, 502, 0, 346, 237, + 502, 0, 348, 502, 0, 202, 0, 0, 44, 350, + 493, 0, 146, 0, 171, 0, 199, 0, 138, 0, + 44, 149, 493, 352, 0, 493, 0, 227, 0, 44, + 168, 494, 345, 0, 44, 191, 355, 238, 357, 239, + 0, 217, 0, 356, 0, 225, 0, 226, 0, 227, + 0, 228, 0, 223, 0, 224, 0, 222, 0, 493, + 0, 493, 237, 493, 0, 186, 237, 493, 0, 493, + 237, 186, 0, 7, 118, 487, 415, 195, 360, 359, + 125, 493, 0, 493, 0, 0, 25, 0, 0, 0, + 28, 199, 493, 10, 362, 93, 367, 125, 366, 429, + 162, 368, 363, 0, 187, 0, 389, 0, 234, 364, + 235, 0, 365, 0, 389, 0, 365, 389, 231, 0, + 389, 231, 0, 487, 233, 490, 0, 487, 0, 115, + 0, 132, 0, 40, 0, 65, 0, 173, 0, 0, + 188, 487, 0, 176, 487, 0, 209, 487, 0, 209, + 227, 0, 147, 373, 0, 12, 373, 0, 26, 373, + 0, 46, 373, 0, 112, 373, 0, 142, 0, 127, + 0, 0, 28, 138, 493, 10, 404, 0, 177, 495, + 0, 28, 160, 488, 141, 377, 378, 0, 28, 160, + 488, 0, 178, 222, 379, 0, 0, 164, 222, 380, + 0, 0, 500, 0, 39, 0, 0, 500, 0, 39, + 0, 0, 44, 160, 488, 0, 155, 492, 93, 487, + 0, 211, 384, 385, 0, 211, 384, 385, 487, 386, + 0, 213, 0, 0, 150, 0, 0, 238, 387, 239, + 0, 0, 493, 0, 387, 237, 493, 0, 165, 384, + 389, 0, 404, 0, 399, 0, 398, 0, 390, 0, + 369, 0, 395, 0, 65, 68, 487, 391, 0, 135, + 238, 484, 239, 0, 39, 135, 0, 404, 0, 238, + 393, 239, 135, 238, 484, 239, 0, 238, 393, 239, + 404, 0, 238, 393, 239, 0, 0, 393, 237, 394, + 0, 394, 0, 503, 461, 0, 40, 56, 487, 429, + 0, 179, 408, 487, 0, 179, 408, 487, 62, 397, + 198, 215, 215, 0, 179, 408, 487, 62, 215, 215, + 215, 0, 179, 408, 487, 62, 215, 215, 0, 215, + 0, 0, 132, 487, 116, 482, 421, 429, 0, 38, + 493, 400, 35, 54, 404, 401, 0, 153, 0, 64, + 0, 113, 0, 64, 113, 0, 0, 54, 402, 0, + 0, 107, 94, 0, 132, 403, 0, 92, 393, 0, + 405, 411, 420, 0, 238, 405, 239, 0, 406, 0, + 405, 47, 405, 0, 405, 130, 409, 405, 0, 405, + 66, 405, 0, 115, 410, 484, 407, 421, 429, 418, + 419, 0, 68, 267, 408, 487, 0, 0, 118, 0, + 0, 6, 0, 0, 42, 0, 42, 93, 503, 0, + 6, 0, 0, 97, 15, 412, 0, 0, 413, 0, + 412, 237, 413, 0, 457, 414, 0, 134, 217, 0, + 134, 223, 0, 134, 224, 0, 11, 0, 41, 0, + 0, 227, 0, 0, 417, 0, 493, 0, 417, 237, + 493, 0, 59, 15, 462, 0, 0, 60, 457, 0, + 0, 54, 132, 0, 54, 132, 92, 387, 0, 0, + 56, 238, 430, 424, 71, 430, 426, 239, 0, 56, + 422, 0, 0, 422, 237, 423, 0, 423, 29, 71, + 423, 0, 423, 0, 430, 10, 504, 0, 430, 503, + 0, 430, 0, 84, 424, 0, 57, 425, 0, 75, + 425, 0, 111, 425, 0, 98, 0, 63, 0, 130, + 0, 0, 98, 0, 0, 93, 238, 457, 239, 0, + 134, 238, 427, 239, 0, 0, 428, 0, 427, 237, + 428, 0, 503, 0, 503, 233, 503, 0, 499, 0, + 140, 457, 0, 0, 487, 0, 487, 227, 0, 234, + 235, 432, 0, 234, 499, 235, 432, 0, 0, 234, + 235, 432, 0, 234, 499, 235, 432, 0, 0, 434, + 431, 0, 442, 0, 202, 434, 0, 435, 0, 447, + 0, 437, 0, 436, 0, 215, 0, 146, 0, 53, + 439, 0, 43, 101, 0, 37, 441, 0, 91, 440, + 0, 53, 0, 43, 101, 0, 37, 0, 91, 0, + 238, 499, 239, 0, 0, 238, 499, 237, 499, 239, + 0, 238, 499, 239, 0, 0, 238, 499, 237, 499, + 239, 0, 238, 499, 239, 0, 0, 443, 238, 499, + 239, 0, 443, 0, 20, 444, 445, 446, 0, 19, + 444, 0, 136, 0, 83, 20, 444, 0, 85, 444, + 0, 137, 0, 0, 20, 116, 503, 0, 0, 24, + 503, 0, 0, 448, 0, 122, 449, 0, 121, 0, + 67, 450, 0, 143, 0, 81, 0, 36, 0, 61, + 0, 80, 0, 114, 0, 141, 121, 144, 0, 0, + 448, 0, 143, 125, 81, 0, 36, 125, 61, 0, + 36, 125, 80, 0, 36, 125, 114, 0, 61, 125, + 80, 0, 61, 125, 114, 0, 80, 125, 114, 0, + 0, 457, 0, 90, 0, 238, 453, 239, 62, 238, + 406, 239, 0, 238, 453, 239, 88, 62, 238, 406, + 239, 0, 238, 453, 239, 455, 456, 238, 406, 239, + 0, 238, 453, 239, 455, 238, 406, 239, 0, 238, + 453, 239, 455, 238, 453, 239, 0, 454, 237, 457, + 0, 454, 237, 457, 0, 457, 0, 217, 0, 223, + 0, 222, 0, 224, 0, 225, 0, 226, 0, 227, + 0, 228, 0, 9, 0, 6, 0, 480, 461, 0, + 452, 0, 497, 0, 503, 0, 226, 457, 0, 457, + 225, 457, 0, 457, 226, 457, 0, 457, 228, 457, + 0, 457, 227, 457, 0, 457, 223, 457, 0, 457, + 224, 457, 0, 457, 222, 457, 0, 230, 457, 0, + 231, 457, 0, 229, 457, 0, 457, 236, 433, 0, + 18, 238, 457, 10, 433, 239, 0, 238, 451, 239, + 0, 457, 217, 457, 0, 457, 77, 457, 0, 457, + 88, 77, 457, 0, 217, 457, 0, 457, 217, 0, + 494, 238, 227, 239, 0, 494, 238, 239, 0, 494, + 238, 462, 239, 0, 31, 0, 32, 0, 32, 238, + 499, 239, 0, 33, 0, 33, 238, 499, 239, 0, + 34, 0, 133, 0, 49, 238, 406, 239, 0, 50, + 238, 463, 239, 0, 100, 238, 465, 239, 0, 117, + 238, 467, 239, 0, 128, 238, 14, 470, 239, 0, + 128, 238, 74, 470, 239, 0, 128, 238, 126, 470, + 239, 0, 128, 238, 470, 239, 0, 457, 174, 0, + 457, 69, 90, 0, 457, 189, 0, 457, 69, 88, + 90, 0, 457, 69, 129, 0, 457, 69, 88, 51, + 0, 457, 69, 51, 0, 457, 69, 88, 129, 0, + 457, 13, 460, 8, 460, 0, 457, 88, 13, 460, + 8, 460, 0, 0, 457, 62, 458, 238, 471, 239, + 0, 0, 457, 88, 62, 459, 238, 473, 239, 0, + 457, 217, 238, 406, 239, 0, 457, 225, 238, 406, + 239, 0, 457, 226, 238, 406, 239, 0, 457, 228, + 238, 406, 239, 0, 457, 227, 238, 406, 239, 0, + 457, 223, 238, 406, 239, 0, 457, 224, 238, 406, + 239, 0, 457, 222, 238, 406, 239, 0, 457, 217, + 9, 238, 406, 239, 0, 457, 225, 9, 238, 406, + 239, 0, 457, 226, 9, 238, 406, 239, 0, 457, + 228, 9, 238, 406, 239, 0, 457, 227, 9, 238, + 406, 239, 0, 457, 223, 9, 238, 406, 239, 0, + 457, 224, 9, 238, 406, 239, 0, 457, 222, 9, + 238, 406, 239, 0, 457, 217, 6, 238, 406, 239, + 0, 457, 225, 6, 238, 406, 239, 0, 457, 226, + 6, 238, 406, 239, 0, 457, 228, 6, 238, 406, + 239, 0, 457, 227, 6, 238, 406, 239, 0, 457, + 223, 6, 238, 406, 239, 0, 457, 224, 6, 238, + 406, 239, 0, 457, 222, 6, 238, 406, 239, 0, + 457, 8, 457, 0, 457, 96, 457, 0, 88, 457, + 0, 475, 0, 480, 461, 0, 497, 0, 503, 0, + 226, 460, 0, 460, 225, 460, 0, 460, 226, 460, + 0, 460, 228, 460, 0, 460, 227, 460, 0, 230, + 460, 0, 231, 460, 0, 229, 460, 0, 460, 236, + 433, 0, 18, 238, 460, 10, 433, 239, 0, 238, + 457, 239, 0, 460, 217, 460, 0, 217, 460, 0, + 460, 217, 0, 494, 238, 239, 0, 494, 238, 462, + 239, 0, 31, 0, 32, 0, 32, 238, 499, 239, + 0, 33, 0, 33, 238, 499, 239, 0, 34, 0, + 133, 0, 100, 238, 465, 239, 0, 117, 238, 467, + 239, 0, 128, 238, 14, 470, 239, 0, 128, 238, + 74, 470, 239, 0, 128, 238, 126, 470, 239, 0, + 128, 238, 470, 239, 0, 234, 457, 235, 461, 0, + 234, 457, 230, 457, 235, 461, 0, 0, 451, 0, + 462, 237, 451, 0, 462, 134, 457, 0, 464, 56, + 457, 0, 0, 448, 0, 123, 0, 124, 0, 466, + 62, 466, 0, 0, 480, 461, 0, 497, 0, 226, + 466, 0, 466, 225, 466, 0, 466, 226, 466, 0, + 466, 228, 466, 0, 466, 227, 466, 0, 229, 466, + 0, 466, 236, 433, 0, 18, 238, 466, 10, 433, + 239, 0, 238, 466, 239, 0, 466, 217, 466, 0, + 217, 466, 0, 466, 217, 0, 503, 0, 494, 238, + 239, 0, 494, 238, 462, 239, 0, 100, 238, 465, + 239, 0, 117, 238, 467, 239, 0, 128, 238, 14, + 470, 239, 0, 128, 238, 74, 470, 239, 0, 128, + 238, 126, 470, 239, 0, 128, 238, 470, 239, 0, + 462, 468, 469, 0, 0, 56, 462, 0, 0, 54, + 462, 0, 0, 457, 56, 462, 0, 56, 462, 0, + 462, 0, 406, 0, 472, 0, 497, 0, 472, 237, + 497, 0, 406, 0, 474, 0, 497, 0, 474, 237, + 497, 0, 17, 479, 476, 478, 46, 0, 89, 238, + 457, 237, 457, 239, 0, 23, 238, 462, 239, 0, + 476, 477, 0, 477, 0, 139, 457, 120, 451, 0, + 45, 451, 0, 0, 480, 461, 0, 503, 0, 0, + 487, 233, 481, 0, 498, 233, 481, 0, 490, 0, + 481, 233, 490, 0, 481, 233, 227, 0, 482, 237, + 483, 0, 483, 0, 227, 0, 503, 461, 222, 451, + 0, 480, 461, 0, 487, 233, 227, 0, 484, 237, + 485, 0, 485, 0, 451, 10, 504, 0, 451, 0, + 487, 233, 227, 0, 227, 0, 503, 0, 0, 505, + 0, 503, 0, 503, 0, 215, 0, 503, 0, 215, + 0, 503, 0, 503, 0, 503, 0, 500, 0, 215, + 0, 499, 0, 220, 0, 500, 0, 433, 500, 0, + 498, 0, 129, 0, 51, 0, 219, 461, 0, 218, + 0, 216, 0, 215, 0, 503, 0, 438, 0, 443, + 0, 215, 0, 448, 0, 3, 0, 4, 0, 148, + 0, 149, 0, 151, 0, 152, 0, 154, 0, 157, + 0, 158, 0, 159, 0, 160, 0, 161, 0, 43, + 0, 163, 0, 164, 0, 167, 0, 168, 0, 169, + 0, 170, 0, 171, 0, 172, 0, 64, 0, 173, + 0, 174, 0, 72, 0, 73, 0, 175, 0, 178, + 0, 79, 0, 180, 0, 181, 0, 86, 0, 184, + 0, 185, 0, 187, 0, 189, 0, 92, 0, 190, + 0, 94, 0, 191, 0, 95, 0, 192, 0, 103, + 0, 104, 0, 193, 0, 107, 0, 194, 0, 109, + 0, 195, 0, 197, 0, 198, 0, 199, 0, 113, + 0, 200, 0, 201, 0, 204, 0, 205, 0, 206, + 0, 207, 0, 121, 0, 122, 0, 123, 0, 124, + 0, 145, 0, 208, 0, 146, 0, 212, 0, 214, + 0, 144, 0, 503, 0, 147, 0, 150, 0, 153, + 0, 17, 0, 155, 0, 23, 0, 27, 0, 156, + 0, 29, 0, 30, 0, 162, 0, 45, 0, 46, + 0, 165, 0, 166, 0, 51, 0, 55, 0, 59, + 0, 176, 0, 177, 0, 179, 0, 182, 0, 183, + 0, 186, 0, 89, 0, 97, 0, 100, 0, 101, + 0, 196, 0, 202, 0, 203, 0, 118, 0, 120, + 0, 127, 0, 129, 0, 211, 0, 213, 0, 139, + 0, 30, 0, 183, 0 }; #endif @@ -830,92 +833,93 @@ static const short yyrline[] = { 0, 584, 585, 588, 589, 590, 593, 599, 605, 613, 619, 625, 641, 651, 655, 663, 665, 667, 669, 681, 698, 711, 713, 722, 723, 724, 727, 728, 731, 732, 738, - 739, 750, 762, 769, 776, 779, 780, 783, 793, 808, - 809, 812, 819, 828, 837, 840, 847, 866, 875, 884, - 893, 902, 911, 920, 927, 932, 945, 947, 949, 951, - 953, 955, 957, 959, 961, 963, 965, 967, 969, 974, - 979, 981, 986, 992, 998, 1000, 1003, 1005, 1007, 1013, - 1015, 1021, 1023, 1031, 1037, 1041, 1049, 1058, 1067, 1074, - 1079, 1085, 1087, 1089, 1093, 1095, 1097, 1099, 1101, 1103, - 1105, 1107, 1109, 1111, 1113, 1115, 1120, 1125, 1127, 1132, - 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, - 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1177, 1184, 1191, - 1200, 1205, 1211, 1215, 1216, 1217, 1220, 1221, 1222, 1225, - 1226, 1229, 1230, 1231, 1232, 1235, 1236, 1239, 1249, 1250, - 1253, 1254, 1257, 1277, 1286, 1288, 1291, 1297, 1303, 1309, - 1315, 1321, 1329, 1330, 1332, 1336, 1343, 1347, 1362, 1374, - 1375, 1377, 1393, 1409, 1410, 1413, 1418, 1423, 1431, 1432, - 1433, 1436, 1442, 1443, 1446, 1447, 1450, 1452, 1454, 1458, - 1464, 1470, 1471, 1474, 1491, 1498, 1506, 1507, 1508, 1511, - 1512, 1513, 1514, 1515, 1518, 1521, 1522, 1525, 1531, 1537, - 1545, 1546, 1547, 1548, 1549, 1568, 1575, 1594, 1614, 1630, - 1631, 1632, 1633, 1638, 1641, 1642, 1643, 1644, 1645, 1646, - 1649, 1650, 1651, 1662, 1668, 1672, 1676, 1682, 1686, 1692, - 1696, 1700, 1704, 1708, 1714, 1718, 1722, 1728, 1732, 1743, - 1760, 1777, 1778, 1781, 1782, 1785, 1786, 1789, 1790, 1793, - 1803, 1813, 1814, 1815, 1824, 1825, 1826, 1837, 1854, 1883, - 1896, 1897, 1900, 1901, 1904, 1906, 1910, 1920, 1921, 1941, - 1950, 1951, 1952, 1953, 1957, 1966, 1967, 1971, 1981, 1990, - 1990, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2005, - 2007, 2009, 2022, 2034, 2035, 2038, 2039, 2052, 2054, 2068, - 2069, 2070, 2077, 2079, 2083, 2092, 2096, 2104, 2115, 2116, - 2117, 2118, 2121, 2122, 2134, 2142, 2150, 2156, 2178, 2184, - 2190, 2196, 2202, 2210, 2211, 2212, 2223, 2246, 2262, 2286, - 2300, 2301, 2304, 2305, 2308, 2309, 2310, 2313, 2314, 2315, - 2325, 2341, 2358, 2367, 2380, 2381, 2384, 2385, 2388, 2389, - 2392, 2394, 2406, 2427, 2428, 2429, 2430, 2431, 2432, 2449, - 2456, 2468, 2484, 2501, 2515, 2533, 2534, 2537, 2540, 2544, - 2561, 2571, 2579, 2605, 2622, 2639, 2640, 2650, 2672, 2694, - 2695, 2696, 2697, 2698, 2701, 2702, 2705, 2706, 2714, 2731, - 2820, 2824, 2828, 2833, 2842, 2849, 2876, 2877, 2880, 2881, - 2884, 2885, 2888, 2889, 2890, 2891, 2894, 2895, 2898, 2899, - 2902, 2910, 2911, 2912, 2913, 2914, 2915, 2925, 2926, 2929, - 2931, 2933, 2937, 2938, 2941, 2945, 2948, 2953, 2957, 2971, - 2976, 2977, 2980, 2982, 2984, 2988, 2994, 3000, 3008, 3009, - 3011, 3013, 3015, 3017, 3019, 3021, 3025, 3026, 3029, 3030, - 3031, 3034, 3035, 3038, 3053, 3060, 3069, 3070, 3073, 3080, - 3088, 3090, 3092, 3096, 3098, 3100, 3115, 3137, 3138, 3145, - 3146, 3147, 3150, 3158, 3159, 3167, 3173, 3178, 3184, 3192, - 3194, 3196, 3198, 3202, 3213, 3219, 3230, 3238, 3244, 3255, - 3263, 3277, 3304, 3323, 3343, 3344, 3345, 3346, 3349, 3350, - 3353, 3354, 3357, 3358, 3361, 3367, 3374, 3380, 3388, 3389, - 3390, 3391, 3392, 3393, 3396, 3397, 3400, 3401, 3402, 3403, - 3404, 3405, 3406, 3407, 3408, 3418, 3420, 3437, 3447, 3457, - 3470, 3483, 3489, 3495, 3499, 3505, 3506, 3507, 3508, 3509, - 3510, 3511, 3512, 3515, 3516, 3527, 3532, 3534, 3536, 3544, - 3546, 3548, 3550, 3552, 3554, 3556, 3558, 3560, 3562, 3564, - 3566, 3582, 3598, 3600, 3602, 3604, 3606, 3608, 3610, 3622, - 3629, 3636, 3651, 3666, 3688, 3703, 3725, 3732, 3739, 3749, - 3756, 3763, 3771, 3778, 3785, 3792, 3799, 3801, 3803, 3805, - 3812, 3822, 3832, 3842, 3852, 3858, 3864, 3864, 3878, 3878, - 3892, 3902, 3912, 3922, 3932, 3942, 3952, 3962, 3972, 3982, - 3992, 4002, 4012, 4022, 4032, 4042, 4052, 4062, 4072, 4082, - 4092, 4102, 4112, 4122, 4132, 4134, 4136, 4138, 4147, 4152, - 4154, 4162, 4164, 4166, 4168, 4170, 4172, 4174, 4176, 4178, - 4194, 4210, 4212, 4214, 4216, 4218, 4225, 4232, 4247, 4262, - 4284, 4299, 4321, 4328, 4335, 4342, 4350, 4357, 4364, 4371, - 4380, 4387, 4394, 4398, 4400, 4402, 4406, 4413, 4417, 4418, - 4419, 4422, 4424, 4428, 4433, 4435, 4437, 4439, 4441, 4443, - 4445, 4447, 4463, 4479, 4481, 4483, 4485, 4487, 4495, 4502, - 4509, 4516, 4524, 4531, 4538, 4545, 4554, 4558, 4562, 4564, - 4573, 4575, 4579, 4581, 4583, 4587, 4593, 4597, 4599, 4605, - 4611, 4615, 4617, 4638, 4646, 4657, 4675, 4677, 4681, 4690, - 4691, 4694, 4699, 4707, 4711, 4719, 4729, 4731, 4733, 4744, - 4746, 4748, 4763, 4770, 4777, 4796, 4798, 4803, 4810, 4817, - 4829, 4843, 4844, 4847, 4852, 4864, 4865, 4866, 4867, 4868, - 4874, 4875, 4877, 4878, 4883, 4890, 4897, 4904, 4912, 4914, - 4924, 4936, 4944, 4945, 4946, 4953, 4955, 4957, 4968, 4969, - 4970, 4971, 4972, 4973, 4974, 4975, 4976, 4977, 4978, 4979, - 4980, 4981, 4982, 4983, 4984, 4985, 4986, 4987, 4988, 4989, - 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, - 5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, - 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, - 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, - 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5051, - 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, - 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, - 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5092, 5099 + 739, 750, 763, 764, 767, 774, 781, 784, 785, 788, + 798, 813, 814, 817, 824, 833, 842, 845, 852, 871, + 880, 889, 898, 907, 916, 925, 932, 937, 950, 952, + 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, + 974, 979, 984, 986, 991, 997, 1003, 1005, 1008, 1010, + 1012, 1018, 1020, 1026, 1028, 1036, 1042, 1046, 1054, 1063, + 1072, 1079, 1084, 1090, 1092, 1094, 1098, 1100, 1102, 1104, + 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1125, 1130, + 1132, 1137, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157, + 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 1182, + 1189, 1196, 1205, 1210, 1216, 1220, 1221, 1222, 1225, 1226, + 1227, 1230, 1231, 1234, 1235, 1236, 1237, 1240, 1241, 1244, + 1255, 1256, 1259, 1260, 1263, 1283, 1292, 1294, 1297, 1303, + 1309, 1315, 1321, 1327, 1335, 1336, 1338, 1342, 1349, 1353, + 1368, 1380, 1381, 1383, 1399, 1415, 1416, 1419, 1424, 1429, + 1437, 1438, 1439, 1442, 1448, 1449, 1452, 1453, 1456, 1458, + 1460, 1464, 1470, 1476, 1477, 1480, 1497, 1504, 1512, 1513, + 1514, 1517, 1518, 1519, 1520, 1521, 1524, 1527, 1528, 1531, + 1537, 1543, 1551, 1552, 1553, 1554, 1555, 1574, 1581, 1600, + 1620, 1636, 1637, 1638, 1639, 1644, 1647, 1648, 1649, 1650, + 1651, 1652, 1655, 1656, 1657, 1668, 1674, 1678, 1682, 1688, + 1692, 1698, 1702, 1706, 1710, 1714, 1720, 1724, 1728, 1734, + 1738, 1749, 1766, 1783, 1784, 1787, 1788, 1791, 1792, 1795, + 1796, 1799, 1809, 1819, 1820, 1821, 1830, 1831, 1832, 1843, + 1860, 1889, 1902, 1903, 1906, 1907, 1910, 1912, 1916, 1926, + 1927, 1947, 1956, 1957, 1958, 1959, 1963, 1972, 1973, 1977, + 1987, 1996, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2007, 2011, 2013, 2015, 2028, 2040, 2041, 2044, 2045, 2058, + 2060, 2074, 2075, 2076, 2083, 2085, 2089, 2098, 2102, 2110, + 2121, 2122, 2123, 2124, 2127, 2128, 2140, 2148, 2156, 2162, + 2184, 2190, 2196, 2202, 2208, 2216, 2217, 2218, 2229, 2252, + 2268, 2292, 2306, 2307, 2310, 2311, 2314, 2315, 2316, 2319, + 2320, 2321, 2331, 2347, 2364, 2373, 2386, 2387, 2390, 2391, + 2394, 2395, 2398, 2400, 2412, 2433, 2434, 2435, 2436, 2437, + 2438, 2455, 2462, 2474, 2490, 2507, 2521, 2539, 2540, 2543, + 2546, 2550, 2567, 2577, 2585, 2611, 2628, 2645, 2646, 2656, + 2678, 2700, 2701, 2702, 2703, 2704, 2707, 2708, 2711, 2712, + 2720, 2737, 2826, 2830, 2834, 2839, 2848, 2855, 2884, 2885, + 2888, 2889, 2892, 2893, 2896, 2897, 2898, 2899, 2902, 2903, + 2906, 2907, 2910, 2918, 2919, 2920, 2921, 2922, 2923, 2933, + 2934, 2937, 2939, 2941, 2945, 2946, 2949, 2953, 2956, 2961, + 2965, 2979, 2984, 2985, 2988, 2990, 2992, 2996, 3002, 3008, + 3016, 3017, 3019, 3021, 3023, 3025, 3027, 3029, 3033, 3034, + 3037, 3038, 3039, 3042, 3043, 3046, 3061, 3068, 3077, 3078, + 3081, 3088, 3096, 3098, 3100, 3104, 3106, 3108, 3123, 3145, + 3146, 3153, 3154, 3155, 3158, 3166, 3167, 3175, 3181, 3186, + 3192, 3200, 3202, 3204, 3206, 3210, 3221, 3227, 3238, 3246, + 3252, 3263, 3271, 3285, 3312, 3331, 3351, 3352, 3353, 3354, + 3357, 3358, 3361, 3362, 3365, 3366, 3369, 3375, 3382, 3388, + 3396, 3397, 3398, 3399, 3400, 3401, 3404, 3405, 3408, 3409, + 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3426, 3428, 3445, + 3455, 3465, 3478, 3491, 3497, 3503, 3507, 3513, 3514, 3515, + 3516, 3517, 3518, 3519, 3520, 3523, 3524, 3535, 3540, 3542, + 3544, 3552, 3554, 3556, 3558, 3560, 3562, 3564, 3566, 3568, + 3570, 3572, 3574, 3590, 3606, 3608, 3610, 3612, 3614, 3616, + 3618, 3630, 3637, 3644, 3659, 3674, 3696, 3711, 3733, 3740, + 3747, 3757, 3764, 3771, 3779, 3786, 3793, 3800, 3807, 3809, + 3811, 3813, 3820, 3830, 3840, 3850, 3860, 3866, 3872, 3872, + 3886, 3886, 3900, 3910, 3920, 3930, 3940, 3950, 3960, 3970, + 3980, 3990, 4000, 4010, 4020, 4030, 4040, 4050, 4060, 4070, + 4080, 4090, 4100, 4110, 4120, 4130, 4140, 4142, 4144, 4146, + 4155, 4160, 4162, 4170, 4172, 4174, 4176, 4178, 4180, 4182, + 4184, 4186, 4202, 4218, 4220, 4222, 4224, 4226, 4233, 4240, + 4255, 4270, 4292, 4307, 4329, 4336, 4343, 4350, 4358, 4365, + 4372, 4379, 4388, 4395, 4402, 4406, 4408, 4410, 4414, 4421, + 4425, 4426, 4427, 4430, 4432, 4436, 4441, 4443, 4445, 4447, + 4449, 4451, 4453, 4455, 4471, 4487, 4489, 4491, 4493, 4495, + 4503, 4510, 4517, 4524, 4532, 4539, 4546, 4553, 4562, 4566, + 4570, 4572, 4581, 4583, 4587, 4589, 4591, 4595, 4601, 4605, + 4607, 4613, 4619, 4623, 4625, 4646, 4654, 4665, 4683, 4685, + 4689, 4698, 4699, 4702, 4707, 4715, 4719, 4727, 4737, 4739, + 4741, 4752, 4754, 4756, 4771, 4778, 4785, 4804, 4806, 4811, + 4818, 4825, 4837, 4851, 4852, 4855, 4860, 4872, 4873, 4874, + 4875, 4876, 4882, 4883, 4885, 4886, 4891, 4898, 4905, 4912, + 4920, 4922, 4932, 4944, 4952, 4953, 4954, 4961, 4963, 4965, + 4976, 4977, 4978, 4979, 4980, 4981, 4982, 4983, 4984, 4985, + 4986, 4987, 4988, 4989, 4990, 4991, 4992, 4993, 4994, 4995, + 4996, 4997, 4998, 4999, 5000, 5001, 5002, 5003, 5004, 5005, + 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, + 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, + 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, + 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, + 5046, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, + 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, + 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, + 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, + 5100, 5107 }; #endif @@ -936,7 +940,7 @@ static const char * const yytname[] = { "$","error","$undefined.","ABSOLUTE", "ON","ONLY","OPTION","OR","ORDER","OUTER_P","PARTIAL","POSITION","PRECISION", "PRIMARY","PRIOR","PRIVILEGES","PROCEDURE","PUBLIC","READ","REFERENCES","RELATIVE", "REVOKE","RIGHT","ROLLBACK","SCROLL","SECOND_P","SELECT","SET","SUBSTRING","TABLE", -"THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING", +"TEMP","THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING", "TRANSACTION","TRIM","TRUE_P","UNION","UNIQUE","UPDATE","USER","USING","VALUES", "VARCHAR","VARYING","VIEW","WHEN","WHERE","WITH","WORK","YEAR_P","ZONE","TRIGGER", "TYPE_P","ABORT_TRANS","AFTER","AGGREGATE","ANALYZE","BACKWARD","BEFORE","BINARY", @@ -954,146 +958,147 @@ static const char * const yytname[] = { "$","error","$undefined.","ABSOLUTE", "user_group_list","user_group_clause","user_valid_clause","VariableSetStmt", "var_value","zone_value","VariableShowStmt","VariableResetStmt","AddAttrStmt", "alter_clause","ClosePortalStmt","CopyStmt","copy_dirn","copy_file_name","opt_binary", -"opt_with_copy","copy_delimiter","CreateStmt","OptTableElementList","OptTableElement", -"columnDef","ColQualifier","ColQualList","ColPrimaryKey","ColConstraint","ColConstraintElem", -"default_list","default_expr","TableConstraint","ConstraintElem","constraint_list", -"constraint_expr","c_list","c_expr","key_match","key_actions","key_action","key_reference", -"OptInherit","CreateAsStmt","OptCreateAs","CreateAsList","CreateAsElement","CreateSeqStmt", -"OptSeqList","OptSeqElem","NumericOnly","FloatOnly","IntegerOnly","CreatePLangStmt", -"PLangTrusted","DropPLangStmt","CreateTrigStmt","TriggerActionTime","TriggerEvents", -"TriggerOneEvent","TriggerForSpec","TriggerForOpt","TriggerForType","TriggerFuncArgs", -"TriggerFuncArg","DropTrigStmt","DefineStmt","def_rest","def_type","def_name", -"definition","def_list","def_elem","def_arg","DestroyStmt","FetchStmt","opt_direction", -"fetch_how_many","opt_portal_name","GrantStmt","privileges","operation_commalist", -"operation","grantee","opt_with_grant","RevokeStmt","IndexStmt","index_opt_unique", -"access_method_clause","index_params","index_list","func_index","index_elem", -"opt_type","opt_class","ExtendStmt","RecipeStmt","ProcedureStmt","opt_with", -"func_args","func_args_list","func_return","set_opt","RemoveStmt","remove_type", -"RemoveAggrStmt","aggr_argtype","RemoveFuncStmt","RemoveOperStmt","all_Op","MathOp", -"oper_argtypes","RenameStmt","opt_name","opt_column","RuleStmt","@1","OptStmtList", -"OptStmtBlock","OptStmtMulti","event_object","event","opt_instead","NotifyStmt", -"ListenStmt","UnlistenStmt","TransactionStmt","opt_trans","ViewStmt","LoadStmt", -"CreatedbStmt","opt_database1","opt_database2","location","encoding","DestroydbStmt", -"ClusterStmt","VacuumStmt","opt_verbose","opt_analyze","opt_va_list","va_list", -"ExplainStmt","OptimizableStmt","InsertStmt","insert_rest","opt_column_list", -"columnList","columnElem","DeleteStmt","LockStmt","opt_lmode","UpdateStmt","CursorStmt", -"opt_cursor","cursor_clause","opt_readonly","opt_of","SelectStmt","select_w_o_sort", -"SubSelect","result","opt_table","opt_union","opt_unique","sort_clause","sortby_list", -"sortby","OptUseOp","opt_inh_star","relation_name_list","name_list","group_clause", -"having_clause","for_update_clause","from_clause","from_list","from_val","join_expr", -"join_outer","join_spec","join_list","join_using","where_clause","relation_expr", -"opt_array_bounds","nest_array_bounds","Typename","Array","Generic","generic", -"Numeric","numeric","opt_float","opt_numeric","opt_decimal","Character","character", -"opt_varying","opt_charset","opt_collate","Datetime","datetime","opt_timezone", -"opt_interval","a_expr_or_null","row_expr","row_descriptor","row_list","row_op", -"sub_type","a_expr","@2","@3","b_expr","opt_indirection","expr_list","extract_list", -"extract_arg","position_list","position_expr","substr_list","substr_from","substr_for", -"trim_list","in_expr","in_expr_nodes","not_in_expr","not_in_expr_nodes","case_expr", -"when_clause_list","when_clause","case_default","case_arg","attr","attrs","res_target_list", -"res_target_el","res_target_list2","res_target_el2","opt_id","relation_name", -"database_name","access_method","attr_name","class","index_name","name","func_name", -"file_name","recipe_name","AexprConst","ParamNo","Iconst","Sconst","UserId", -"TypeId","ColId","ColLabel","SpecialRuleRelation", NULL +"opt_with_copy","copy_delimiter","CreateStmt","OptTemp","OptTableElementList", +"OptTableElement","columnDef","ColQualifier","ColQualList","ColPrimaryKey","ColConstraint", +"ColConstraintElem","default_list","default_expr","TableConstraint","ConstraintElem", +"constraint_list","constraint_expr","c_list","c_expr","key_match","key_actions", +"key_action","key_reference","OptInherit","CreateAsStmt","OptCreateAs","CreateAsList", +"CreateAsElement","CreateSeqStmt","OptSeqList","OptSeqElem","NumericOnly","FloatOnly", +"IntegerOnly","CreatePLangStmt","PLangTrusted","DropPLangStmt","CreateTrigStmt", +"TriggerActionTime","TriggerEvents","TriggerOneEvent","TriggerForSpec","TriggerForOpt", +"TriggerForType","TriggerFuncArgs","TriggerFuncArg","DropTrigStmt","DefineStmt", +"def_rest","def_type","def_name","definition","def_list","def_elem","def_arg", +"DestroyStmt","FetchStmt","opt_direction","fetch_how_many","opt_portal_name", +"GrantStmt","privileges","operation_commalist","operation","grantee","opt_with_grant", +"RevokeStmt","IndexStmt","index_opt_unique","access_method_clause","index_params", +"index_list","func_index","index_elem","opt_type","opt_class","ExtendStmt","RecipeStmt", +"ProcedureStmt","opt_with","func_args","func_args_list","func_return","set_opt", +"RemoveStmt","remove_type","RemoveAggrStmt","aggr_argtype","RemoveFuncStmt", +"RemoveOperStmt","all_Op","MathOp","oper_argtypes","RenameStmt","opt_name","opt_column", +"RuleStmt","@1","OptStmtList","OptStmtBlock","OptStmtMulti","event_object","event", +"opt_instead","NotifyStmt","ListenStmt","UnlistenStmt","TransactionStmt","opt_trans", +"ViewStmt","LoadStmt","CreatedbStmt","opt_database1","opt_database2","location", +"encoding","DestroydbStmt","ClusterStmt","VacuumStmt","opt_verbose","opt_analyze", +"opt_va_list","va_list","ExplainStmt","OptimizableStmt","InsertStmt","insert_rest", +"opt_column_list","columnList","columnElem","DeleteStmt","LockStmt","opt_lmode", +"UpdateStmt","CursorStmt","opt_cursor","cursor_clause","opt_readonly","opt_of", +"SelectStmt","select_w_o_sort","SubSelect","result","opt_table","opt_union", +"opt_unique","sort_clause","sortby_list","sortby","OptUseOp","opt_inh_star", +"relation_name_list","name_list","group_clause","having_clause","for_update_clause", +"from_clause","from_list","from_val","join_expr","join_outer","join_spec","join_list", +"join_using","where_clause","relation_expr","opt_array_bounds","nest_array_bounds", +"Typename","Array","Generic","generic","Numeric","numeric","opt_float","opt_numeric", +"opt_decimal","Character","character","opt_varying","opt_charset","opt_collate", +"Datetime","datetime","opt_timezone","opt_interval","a_expr_or_null","row_expr", +"row_descriptor","row_list","row_op","sub_type","a_expr","@2","@3","b_expr", +"opt_indirection","expr_list","extract_list","extract_arg","position_list","position_expr", +"substr_list","substr_from","substr_for","trim_list","in_expr","in_expr_nodes", +"not_in_expr","not_in_expr_nodes","case_expr","when_clause_list","when_clause", +"case_default","case_arg","attr","attrs","res_target_list","res_target_el","res_target_list2", +"res_target_el2","opt_id","relation_name","database_name","access_method","attr_name", +"class","index_name","name","func_name","file_name","recipe_name","AexprConst", +"ParamNo","Iconst","Sconst","UserId","TypeId","ColId","ColLabel","SpecialRuleRelation", NULL }; #endif static const short yyr1[] = { 0, - 239, 239, 240, 240, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, 242, 243, 244, - 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, - 249, 249, 250, 250, 251, 251, 251, 251, 251, 251, - 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, - 255, 256, 257, 257, 257, 257, 257, 257, 258, 259, - 260, 260, 261, 261, 261, 262, 262, 263, 263, 264, - 264, 265, 266, 266, 266, 267, 267, 268, 268, 269, - 269, 270, 270, 271, 271, 272, 272, 273, 273, 273, - 273, 273, 273, 273, 274, 274, 275, 275, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 276, 276, 277, 277, 277, 277, 278, - 278, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 280, 280, 281, 282, 282, 282, 283, 283, 283, 284, - 284, 285, 285, 285, 285, 286, 286, 287, 288, 288, - 289, 289, 290, 291, 292, 292, 293, 293, 293, 293, - 293, 293, 294, 294, 295, 295, 296, 296, 297, 298, - 298, 299, 300, 301, 301, 302, 302, 302, 303, 303, - 303, 304, 305, 305, 306, 306, 307, 307, 307, 308, - 308, 308, 308, 309, 310, 311, 312, 312, 312, 313, - 313, 313, 313, 313, 314, 315, 315, 316, 316, 316, - 317, 317, 317, 317, 317, 318, 318, 319, 319, 320, - 320, 320, 320, 320, 321, 321, 321, 321, 321, 321, - 322, 322, 322, 323, 324, 324, 324, 325, 325, 326, - 326, 326, 326, 326, 327, 327, 327, 328, 328, 329, - 330, 331, 331, 332, 332, 333, 333, 334, 334, 335, - 336, 337, 337, 337, 338, 338, 338, 339, 340, 341, - 342, 342, 343, 343, 344, 344, 345, 346, 346, 347, - 348, 348, 348, 348, 349, 350, 350, 351, 352, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 355, 355, - 355, 355, 356, 357, 357, 358, 358, 360, 359, 361, - 361, 361, 362, 362, 363, 363, 364, 364, 365, 365, - 365, 365, 366, 366, 367, 368, 369, 369, 370, 370, - 370, 370, 370, 371, 371, 371, 372, 373, 374, 374, - 375, 375, 376, 376, 377, 377, 377, 378, 378, 378, - 379, 380, 381, 381, 382, 382, 383, 383, 384, 384, - 385, 385, 386, 387, 387, 387, 387, 387, 387, 388, - 389, 389, 389, 389, 389, 390, 390, 391, 391, 392, - 393, 394, 394, 394, 394, 395, 395, 396, 397, 398, - 398, 398, 398, 398, 399, 399, 400, 400, 401, 402, - 403, 403, 403, 403, 403, 404, 405, 405, 406, 406, - 407, 407, 408, 408, 408, 408, 409, 409, 410, 410, - 411, 412, 412, 412, 412, 412, 412, 413, 413, 414, - 415, 415, 416, 416, 417, 417, 418, 418, 418, 419, - 419, 419, 420, 420, 420, 421, 421, 421, 422, 422, - 422, 422, 422, 422, 422, 422, 423, 423, 424, 424, - 424, 425, 425, 426, 426, 426, 427, 427, 428, 428, - 429, 429, 429, 430, 430, 430, 431, 431, 431, 432, - 432, 432, 433, 434, 434, 435, 435, 435, 435, 436, - 436, 436, 436, 437, 437, 438, 438, 438, 439, 439, - 439, 440, 440, 441, 441, 441, 441, 441, 442, 442, - 443, 443, 444, 444, 445, 445, 445, 445, 446, 446, - 446, 446, 446, 446, 447, 447, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 449, 449, 450, 450, 450, - 450, 450, 451, 452, 452, 453, 453, 453, 453, 453, - 453, 453, 453, 454, 454, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 456, 455, 457, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 458, 458, - 459, 459, 459, 460, 460, 460, 461, 461, 462, 462, - 462, 463, 463, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 465, 465, 466, 466, - 467, 467, 468, 468, 468, 469, 469, 470, 470, 471, - 471, 472, 472, 473, 473, 473, 474, 474, 475, 476, - 476, 477, 477, 477, 478, 478, 479, 479, 479, 480, - 480, 480, 481, 481, 481, 482, 482, 483, 483, 483, - 483, 484, 484, 485, 485, 486, 487, 488, 489, 490, - 491, 492, 493, 494, 495, 495, 495, 495, 495, 495, - 495, 496, 497, 498, 499, 500, 500, 500, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 503, 503 + 240, 240, 241, 241, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, + 242, 242, 242, 242, 242, 242, 242, 243, 244, 245, + 246, 246, 247, 247, 247, 248, 248, 248, 249, 249, + 250, 250, 251, 251, 252, 252, 252, 252, 252, 252, + 253, 253, 254, 254, 254, 255, 255, 255, 256, 256, + 256, 257, 258, 258, 258, 258, 258, 258, 259, 260, + 261, 261, 262, 262, 262, 263, 263, 264, 264, 265, + 265, 266, 267, 267, 268, 268, 268, 269, 269, 270, + 270, 271, 271, 272, 272, 273, 273, 274, 274, 275, + 275, 275, 275, 275, 275, 275, 276, 276, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 277, 277, 278, 278, 279, 279, 279, + 279, 280, 280, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, + 281, 281, 282, 282, 283, 284, 284, 284, 285, 285, + 285, 286, 286, 287, 287, 287, 287, 288, 288, 289, + 290, 290, 291, 291, 292, 293, 294, 294, 295, 295, + 295, 295, 295, 295, 296, 296, 297, 297, 298, 298, + 299, 300, 300, 301, 302, 303, 303, 304, 304, 304, + 305, 305, 305, 306, 307, 307, 308, 308, 309, 309, + 309, 310, 310, 310, 310, 311, 312, 313, 314, 314, + 314, 315, 315, 315, 315, 315, 316, 317, 317, 318, + 318, 318, 319, 319, 319, 319, 319, 320, 320, 321, + 321, 322, 322, 322, 322, 322, 323, 323, 323, 323, + 323, 323, 324, 324, 324, 325, 326, 326, 326, 327, + 327, 328, 328, 328, 328, 328, 329, 329, 329, 330, + 330, 331, 332, 333, 333, 334, 334, 335, 335, 336, + 336, 337, 338, 339, 339, 339, 340, 340, 340, 341, + 342, 343, 344, 344, 345, 345, 346, 346, 347, 348, + 348, 349, 350, 350, 350, 350, 351, 352, 352, 353, + 354, 355, 355, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 358, 359, 359, 360, 360, 362, + 361, 363, 363, 363, 364, 364, 365, 365, 366, 366, + 367, 367, 367, 367, 368, 368, 369, 370, 371, 371, + 372, 372, 372, 372, 372, 373, 373, 373, 374, 375, + 376, 376, 377, 377, 378, 378, 379, 379, 379, 380, + 380, 380, 381, 382, 383, 383, 384, 384, 385, 385, + 386, 386, 387, 387, 388, 389, 389, 389, 389, 389, + 389, 390, 391, 391, 391, 391, 391, 392, 392, 393, + 393, 394, 395, 396, 396, 396, 396, 397, 397, 398, + 399, 400, 400, 400, 400, 400, 401, 401, 402, 402, + 403, 404, 405, 405, 405, 405, 405, 406, 407, 407, + 408, 408, 409, 409, 410, 410, 410, 410, 411, 411, + 412, 412, 413, 414, 414, 414, 414, 414, 414, 415, + 415, 416, 417, 417, 418, 418, 419, 419, 420, 420, + 420, 421, 421, 421, 422, 422, 422, 423, 423, 423, + 424, 424, 424, 424, 424, 424, 424, 424, 425, 425, + 426, 426, 426, 427, 427, 428, 428, 428, 429, 429, + 430, 430, 431, 431, 431, 432, 432, 432, 433, 433, + 433, 434, 434, 434, 435, 436, 436, 437, 437, 437, + 437, 438, 438, 438, 438, 439, 439, 440, 440, 440, + 441, 441, 441, 442, 442, 443, 443, 443, 443, 443, + 444, 444, 445, 445, 446, 446, 447, 447, 447, 447, + 448, 448, 448, 448, 448, 448, 449, 449, 450, 450, + 450, 450, 450, 450, 450, 450, 450, 451, 451, 452, + 452, 452, 452, 452, 453, 454, 454, 455, 455, 455, + 455, 455, 455, 455, 455, 456, 456, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 458, 457, + 459, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, + 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 461, 461, 461, 462, 462, 462, 463, 463, + 464, 464, 464, 465, 465, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 467, 467, + 468, 468, 469, 469, 470, 470, 470, 471, 471, 472, + 472, 473, 473, 474, 474, 475, 475, 475, 476, 476, + 477, 478, 478, 479, 479, 479, 480, 480, 481, 481, + 481, 482, 482, 482, 483, 483, 483, 484, 484, 485, + 485, 485, 485, 486, 486, 487, 487, 488, 489, 490, + 491, 492, 493, 494, 495, 496, 497, 497, 497, 497, + 497, 497, 497, 498, 499, 500, 501, 502, 502, 502, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 505, 505 }; static const short yyr2[] = { 0, @@ -1107,81 +1112,81 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 3, 6, 5, 2, 2, 7, 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, - 0, 7, 3, 1, 0, 1, 1, 3, 3, 1, - 0, 2, 1, 2, 0, 3, 1, 4, 2, 2, - 2, 1, 2, 5, 3, 1, 1, 2, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 2, 3, 6, - 3, 3, 4, 3, 2, 2, 1, 1, 4, 1, - 4, 1, 1, 3, 1, 4, 4, 5, 10, 3, - 1, 1, 1, 1, 2, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 3, 6, 3, 3, 4, - 3, 3, 4, 3, 3, 2, 2, 2, 2, 3, - 2, 4, 3, 3, 4, 4, 5, 6, 5, 6, - 3, 1, 1, 2, 2, 0, 2, 1, 0, 3, - 3, 2, 1, 2, 2, 4, 0, 6, 3, 0, - 3, 1, 1, 4, 2, 0, 2, 1, 2, 2, - 2, 2, 1, 1, 1, 2, 1, 2, 9, 1, - 0, 4, 14, 1, 1, 1, 3, 5, 1, 1, - 1, 3, 1, 0, 1, 1, 1, 3, 0, 1, - 1, 1, 1, 5, 3, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, - 1, 1, 1, 1, 2, 3, 3, 4, 4, 1, - 1, 1, 1, 0, 1, 2, 1, 1, 1, 0, - 2, 2, 0, 7, 2, 1, 1, 1, 3, 1, - 1, 1, 1, 1, 1, 2, 1, 3, 0, 6, - 11, 1, 0, 2, 0, 1, 1, 3, 1, 6, - 3, 2, 2, 0, 1, 2, 0, 4, 3, 11, - 2, 0, 3, 2, 1, 3, 2, 1, 0, 3, - 1, 1, 1, 1, 4, 1, 1, 4, 6, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 9, 1, 0, 1, 0, 0, 13, 1, - 1, 3, 1, 1, 3, 2, 3, 1, 1, 1, - 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 0, 5, 2, 6, 3, - 3, 0, 3, 0, 1, 1, 0, 1, 1, 0, - 3, 4, 3, 5, 1, 0, 1, 0, 3, 0, - 1, 3, 3, 1, 1, 1, 1, 1, 1, 4, - 4, 2, 1, 7, 4, 3, 0, 3, 1, 2, - 4, 3, 8, 7, 6, 1, 0, 6, 7, 1, - 1, 1, 2, 0, 2, 0, 2, 2, 2, 3, - 3, 1, 3, 4, 3, 8, 3, 0, 1, 0, - 1, 0, 1, 3, 1, 0, 3, 0, 1, 3, - 2, 2, 2, 2, 1, 1, 0, 1, 0, 1, - 1, 3, 3, 0, 2, 0, 2, 4, 0, 8, - 2, 0, 3, 4, 1, 3, 2, 1, 2, 2, - 2, 2, 1, 1, 1, 0, 1, 0, 4, 4, - 0, 1, 3, 1, 3, 1, 2, 0, 1, 2, - 3, 4, 0, 3, 4, 0, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, - 2, 1, 1, 3, 0, 5, 3, 0, 5, 3, - 0, 4, 1, 4, 2, 1, 3, 2, 1, 0, - 3, 0, 2, 0, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 3, 0, 1, 3, 3, 3, - 3, 3, 3, 3, 0, 1, 1, 7, 8, 8, - 7, 7, 3, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, + 0, 8, 1, 0, 3, 1, 0, 1, 1, 3, + 3, 1, 0, 2, 1, 2, 0, 3, 1, 4, + 2, 2, 2, 1, 2, 5, 3, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 3, 6, 3, 3, 3, 4, 2, 2, 4, 3, - 4, 1, 1, 4, 1, 4, 1, 1, 4, 4, - 4, 4, 5, 5, 5, 4, 2, 3, 2, 4, - 3, 4, 3, 4, 5, 6, 0, 6, 0, 7, - 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 3, 3, 2, 1, 2, 1, - 1, 2, 3, 3, 3, 3, 2, 2, 2, 3, - 6, 3, 3, 2, 2, 3, 4, 1, 1, 4, - 1, 4, 1, 1, 4, 4, 5, 5, 5, 4, - 4, 6, 0, 1, 3, 3, 3, 0, 1, 1, - 1, 3, 0, 2, 1, 2, 3, 3, 3, 3, - 2, 3, 6, 3, 3, 2, 2, 1, 3, 4, - 4, 4, 5, 5, 5, 4, 3, 0, 2, 0, - 2, 0, 3, 2, 1, 1, 1, 1, 3, 1, - 1, 1, 3, 5, 6, 4, 2, 1, 4, 2, - 0, 2, 1, 0, 3, 3, 1, 3, 3, 3, - 1, 1, 4, 2, 3, 3, 1, 3, 1, 3, - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, + 3, 6, 3, 3, 4, 3, 2, 2, 1, 1, + 4, 1, 4, 1, 1, 3, 1, 4, 4, 5, + 10, 3, 1, 1, 1, 1, 2, 3, 3, 3, + 3, 3, 3, 3, 2, 2, 2, 3, 6, 3, + 3, 4, 3, 3, 4, 3, 3, 2, 2, 2, + 2, 3, 2, 4, 3, 3, 4, 4, 5, 6, + 5, 6, 3, 1, 1, 2, 2, 0, 2, 1, + 0, 3, 3, 2, 1, 2, 2, 4, 0, 7, + 3, 0, 3, 1, 1, 4, 2, 0, 2, 1, + 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, + 9, 1, 0, 4, 14, 1, 1, 1, 3, 5, + 1, 1, 1, 3, 1, 0, 1, 1, 1, 3, + 0, 1, 1, 1, 1, 5, 3, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, + 1, 3, 1, 1, 1, 1, 2, 3, 3, 4, + 4, 1, 1, 1, 1, 0, 1, 2, 1, 1, + 1, 0, 2, 2, 0, 7, 2, 1, 1, 1, + 3, 1, 1, 1, 1, 1, 1, 2, 1, 3, + 0, 6, 11, 1, 0, 2, 0, 1, 1, 3, + 1, 6, 3, 2, 2, 0, 1, 2, 0, 4, + 3, 11, 2, 0, 3, 2, 1, 3, 2, 1, + 0, 3, 1, 1, 1, 1, 4, 1, 1, 4, + 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 9, 1, 0, 1, 0, 0, + 13, 1, 1, 3, 1, 1, 3, 2, 3, 1, + 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 1, 0, 5, 2, + 6, 3, 3, 0, 3, 0, 1, 1, 0, 1, + 1, 0, 3, 4, 3, 5, 1, 0, 1, 0, + 3, 0, 1, 3, 3, 1, 1, 1, 1, 1, + 1, 4, 4, 2, 1, 7, 4, 3, 0, 3, + 1, 2, 4, 3, 8, 7, 6, 1, 0, 6, + 7, 1, 1, 1, 2, 0, 2, 0, 2, 2, + 2, 3, 3, 1, 3, 4, 3, 8, 4, 0, + 1, 0, 1, 0, 1, 3, 1, 0, 3, 0, + 1, 3, 2, 2, 2, 2, 1, 1, 0, 1, + 0, 1, 1, 3, 3, 0, 2, 0, 2, 4, + 0, 8, 2, 0, 3, 4, 1, 3, 2, 1, + 2, 2, 2, 2, 1, 1, 1, 0, 1, 0, + 4, 4, 0, 1, 3, 1, 3, 1, 2, 0, + 1, 2, 3, 4, 0, 3, 4, 0, 2, 1, + 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 1, 2, 1, 1, 3, 0, 5, 3, 0, + 5, 3, 0, 4, 1, 4, 2, 1, 3, 2, + 1, 0, 3, 0, 2, 0, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 3, 0, 1, 3, + 3, 3, 3, 3, 3, 3, 0, 1, 1, 7, + 8, 8, 7, 7, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 3, 6, 3, 3, 3, 4, 2, 2, + 4, 3, 4, 1, 1, 4, 1, 4, 1, 1, + 4, 4, 4, 4, 5, 5, 5, 4, 2, 3, + 2, 4, 3, 4, 3, 4, 5, 6, 0, 6, + 0, 7, 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 3, 3, 2, 1, + 2, 1, 1, 2, 3, 3, 3, 3, 2, 2, + 2, 3, 6, 3, 3, 2, 2, 3, 4, 1, + 1, 4, 1, 4, 1, 1, 4, 4, 5, 5, + 5, 4, 4, 6, 0, 1, 3, 3, 3, 0, + 1, 1, 1, 3, 0, 2, 1, 2, 3, 3, + 3, 3, 2, 3, 6, 3, 3, 2, 2, 1, + 3, 4, 4, 4, 5, 5, 5, 4, 3, 0, + 2, 0, 2, 0, 3, 2, 1, 1, 1, 1, + 3, 1, 1, 1, 3, 5, 6, 4, 2, 1, + 4, 2, 0, 2, 1, 0, 3, 3, 1, 3, + 3, 3, 1, 1, 4, 2, 3, 3, 1, 3, + 1, 3, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1192,221 +1197,223 @@ static const short yyr2[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1 }; static const short yydefact[] = { 0, - 0, 406, 823, 406, 241, 0, 0, 0, 406, 0, - 294, 0, 0, 0, 406, 486, 0, 0, 406, 0, - 97, 426, 0, 0, 0, 480, 294, 0, 0, 0, - 0, 426, 0, 1, 2, 14, 6, 20, 45, 46, + 0, 408, 825, 408, 104, 0, 0, 0, 408, 0, + 296, 0, 0, 0, 408, 488, 0, 0, 408, 0, + 97, 428, 0, 0, 0, 482, 296, 0, 0, 0, + 0, 428, 0, 1, 2, 14, 6, 20, 45, 46, 47, 5, 7, 8, 9, 10, 11, 12, 18, 13, 19, 16, 17, 23, 24, 36, 25, 21, 30, 29, - 34, 31, 33, 32, 35, 38, 438, 26, 27, 39, - 40, 41, 42, 43, 15, 44, 22, 37, 437, 439, - 28, 436, 435, 434, 488, 472, 0, 0, 405, 404, - 400, 851, 852, 591, 863, 592, 872, 875, 876, 879, - 593, 590, 882, 887, 889, 891, 893, 894, 896, 898, - 903, 594, 910, 911, 912, 913, 589, 919, 914, 916, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 864, 865, 866, 867, 868, 869, 870, 871, 873, 874, - 877, 878, 880, 881, 883, 884, 885, 886, 888, 890, - 892, 895, 897, 899, 900, 901, 902, 904, 905, 906, - 907, 908, 909, 915, 917, 918, 849, 850, 89, 822, - 401, 0, 322, 0, 0, 0, 268, 269, 0, 0, - 267, 0, 0, 240, 0, 0, 0, 464, 831, 0, - 0, 0, 354, 0, 351, 0, 0, 0, 352, 0, - 0, 353, 0, 0, 402, 0, 293, 292, 291, 290, - 300, 306, 313, 311, 310, 312, 314, 0, 307, 308, - 0, 0, 403, 485, 483, 0, 420, 910, 0, 0, - 959, 960, 0, 825, 824, 399, 0, 830, 96, 0, - 425, 0, 0, 396, 844, 408, 833, 479, 0, 300, - 395, 910, 0, 79, 910, 0, 76, 398, 397, 428, - 0, 0, 4, 0, 0, 0, 482, 509, 499, 845, - 52, 220, 52, 0, 0, 410, 826, 0, 832, 0, - 226, 0, 271, 270, 274, 368, 366, 367, 362, 363, - 364, 365, 265, 0, 273, 272, 0, 461, 462, 460, - 0, 538, 286, 500, 501, 50, 0, 0, 421, 0, - 360, 0, 361, 0, 287, 350, 834, 339, 297, 298, - 299, 843, 0, 303, 295, 305, 0, 0, 0, 0, - 0, 804, 0, 580, 580, 0, 652, 653, 655, 657, - 571, 863, 0, 0, 841, 565, 605, 0, 580, 0, - 0, 607, 568, 0, 0, 910, 911, 0, 840, 658, - 576, 916, 0, 849, 0, 743, 836, 0, 821, 0, - 0, 0, 0, 0, 543, 550, 553, 552, 548, 573, - 551, 850, 819, 627, 606, 708, 743, 478, 817, 0, - 0, 628, 839, 835, 837, 629, 419, 70, 418, 0, - 0, 0, 0, 0, 0, 99, 433, 538, 452, 303, - 80, 0, 77, 0, 427, 423, 471, 3, 473, 475, - 0, 481, 0, 0, 470, 498, 0, 0, 55, 105, - 0, 55, 0, 245, 244, 0, 412, 0, 0, 378, - 224, 0, 0, 266, 0, 463, 0, 0, 451, 0, - 0, 357, 355, 356, 358, 0, 242, 296, 0, 0, - 288, 0, 309, 0, 0, 0, 440, 443, 0, 484, - 0, 743, 0, 0, 803, 0, 579, 575, 582, 0, - 0, 0, 0, 558, 557, 0, 748, 0, 556, 591, - 592, 593, 589, 597, 588, 580, 578, 707, 0, 0, - 559, 753, 778, 0, 586, 0, 0, 587, 596, 555, - 554, 549, 585, 647, 0, 842, 630, 640, 638, 639, - 0, 0, 0, 606, 838, 0, 547, 0, 0, 0, - 0, 677, 0, 0, 0, 0, 667, 669, 648, 0, - 0, 0, 0, 0, 0, 0, 0, 626, 480, 0, - 512, 0, 0, 0, 74, 75, 67, 73, 0, 72, - 65, 71, 66, 812, 743, 512, 811, 0, 743, 422, - 0, 0, 338, 457, 289, 81, 78, 430, 487, 489, - 497, 474, 507, 377, 377, 377, 377, 82, 0, 53, - 54, 58, 0, 0, 0, 0, 0, 0, 104, 106, - 107, 155, 0, 222, 223, 0, 58, 407, 250, 249, - 251, 0, 246, 0, 414, 562, 863, 560, 563, 344, - 0, 847, 848, 345, 846, 349, 0, 0, 228, 0, - 0, 0, 0, 225, 0, 0, 279, 0, 276, 0, - 0, 537, 502, 264, 0, 0, 369, 302, 301, 0, - 442, 0, 0, 449, 743, 0, 0, 801, 798, 802, - 0, 0, 0, 584, 744, 0, 0, 0, 0, 0, - 750, 751, 749, 0, 0, 0, 0, 0, 0, 0, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 743, 0, 755, 768, 780, 0, 0, - 0, 0, 0, 0, 606, 785, 0, 0, 643, 0, - 0, 546, 0, 0, 924, 926, 927, 929, 930, 932, - 933, 936, 937, 938, 945, 946, 947, 948, 952, 953, - 954, 955, 958, 921, 922, 923, 925, 928, 931, 934, - 935, 939, 940, 941, 942, 943, 944, 949, 950, 951, - 956, 957, 920, 818, 705, 0, 728, 729, 731, 733, - 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, - 0, 743, 0, 710, 711, 0, 673, 0, 668, 671, - 645, 0, 679, 0, 706, 0, 0, 0, 644, 0, - 0, 0, 637, 0, 0, 0, 635, 0, 0, 0, - 636, 0, 0, 0, 631, 0, 0, 0, 632, 0, - 0, 0, 634, 0, 0, 0, 633, 641, 0, 816, - 0, 538, 820, 805, 807, 828, 0, 650, 0, 806, - 896, 69, 814, 0, 538, 0, 0, 98, 92, 91, - 0, 456, 0, 0, 424, 0, 495, 496, 0, 491, - 0, 376, 105, 88, 0, 0, 0, 375, 51, 56, - 57, 62, 0, 0, 0, 0, 0, 0, 217, 0, - 219, 115, 111, 218, 62, 0, 0, 417, 0, 409, - 561, 0, 343, 348, 342, 0, 0, 0, 227, 237, - 229, 230, 231, 232, 0, 0, 0, 0, 275, 325, - 466, 0, 359, 0, 0, 315, 319, 317, 0, 0, - 0, 450, 320, 0, 0, 797, 0, 0, 0, 0, - 574, 0, 0, 796, 654, 656, 0, 570, 659, 660, - 0, 564, 599, 600, 601, 602, 603, 604, 598, 0, - 0, 567, 0, 753, 778, 0, 766, 756, 761, 0, - 661, 0, 767, 0, 0, 0, 0, 0, 754, 0, - 0, 782, 662, 595, 0, 784, 0, 0, 0, 666, - 0, 743, 0, 0, 616, 618, 617, 619, 620, 621, - 622, 623, 0, 613, 0, 541, 546, 572, 0, 0, - 0, 753, 778, 0, 724, 712, 719, 717, 718, 0, - 0, 725, 0, 0, 0, 0, 0, 709, 0, 0, - 672, 670, 674, 0, 0, 646, 0, 0, 0, 0, + 34, 31, 33, 32, 35, 38, 440, 26, 27, 39, + 40, 41, 42, 43, 15, 44, 22, 37, 439, 441, + 28, 438, 437, 436, 490, 474, 0, 0, 407, 406, + 402, 853, 854, 593, 865, 594, 874, 877, 878, 881, + 595, 592, 884, 889, 891, 893, 895, 896, 898, 900, + 905, 596, 912, 913, 914, 915, 591, 921, 916, 918, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + 866, 867, 868, 869, 870, 871, 872, 873, 875, 876, + 879, 880, 882, 883, 885, 886, 887, 888, 890, 892, + 894, 897, 899, 901, 902, 903, 904, 906, 907, 908, + 909, 910, 911, 917, 919, 920, 851, 852, 89, 824, + 403, 103, 324, 0, 0, 0, 270, 271, 0, 0, + 269, 0, 0, 242, 0, 0, 0, 0, 466, 833, + 0, 0, 0, 356, 0, 353, 0, 0, 0, 354, + 0, 0, 355, 0, 0, 404, 0, 295, 294, 293, + 292, 302, 308, 315, 313, 312, 314, 316, 0, 309, + 310, 0, 0, 405, 487, 485, 0, 422, 912, 0, + 0, 961, 962, 0, 827, 826, 401, 0, 832, 96, + 0, 427, 0, 0, 398, 846, 410, 835, 481, 0, + 302, 397, 912, 0, 79, 912, 0, 76, 400, 399, + 430, 0, 0, 4, 0, 0, 0, 484, 511, 501, + 847, 52, 52, 0, 0, 412, 828, 0, 834, 0, + 228, 0, 0, 273, 272, 276, 370, 368, 369, 364, + 365, 366, 367, 267, 0, 275, 274, 0, 463, 464, + 462, 0, 540, 288, 502, 503, 50, 0, 0, 423, + 0, 362, 0, 363, 0, 289, 352, 836, 341, 299, + 300, 301, 845, 0, 305, 297, 307, 0, 0, 0, + 0, 0, 806, 0, 582, 582, 0, 654, 655, 657, + 659, 573, 865, 0, 0, 843, 567, 607, 0, 582, + 0, 0, 609, 570, 0, 0, 912, 913, 0, 842, + 660, 578, 918, 0, 851, 0, 745, 838, 0, 823, + 0, 0, 0, 0, 0, 545, 552, 555, 554, 550, + 575, 553, 852, 821, 629, 608, 710, 745, 480, 819, + 0, 0, 630, 841, 837, 839, 631, 421, 70, 420, + 0, 0, 0, 0, 0, 0, 99, 435, 540, 454, + 305, 80, 0, 77, 0, 429, 425, 473, 3, 475, + 477, 0, 483, 0, 0, 472, 500, 0, 0, 55, + 55, 0, 247, 246, 0, 414, 0, 0, 380, 226, + 222, 0, 0, 268, 0, 465, 0, 0, 453, 0, + 0, 359, 357, 358, 360, 0, 244, 298, 0, 0, + 290, 0, 311, 0, 0, 0, 442, 445, 0, 486, + 0, 745, 0, 0, 805, 0, 581, 577, 584, 0, + 0, 0, 0, 560, 559, 0, 750, 0, 558, 593, + 594, 595, 591, 599, 590, 582, 580, 709, 0, 0, + 561, 755, 780, 0, 588, 0, 0, 589, 598, 557, + 556, 551, 587, 649, 0, 844, 632, 642, 640, 641, + 0, 0, 0, 608, 840, 0, 549, 0, 0, 0, + 0, 679, 0, 0, 0, 0, 669, 671, 650, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 104, 0, + 514, 0, 0, 0, 74, 75, 67, 73, 0, 72, + 65, 71, 66, 814, 745, 514, 813, 0, 745, 424, + 0, 0, 340, 459, 291, 81, 78, 432, 489, 491, + 499, 476, 509, 379, 379, 379, 379, 82, 0, 53, + 54, 58, 58, 409, 252, 251, 253, 0, 248, 0, + 416, 564, 865, 562, 565, 346, 0, 849, 850, 347, + 848, 351, 0, 0, 230, 0, 0, 0, 0, 227, + 107, 0, 0, 0, 281, 0, 278, 0, 0, 539, + 504, 266, 0, 0, 371, 304, 303, 0, 444, 0, + 0, 451, 745, 0, 0, 803, 800, 804, 0, 0, + 0, 586, 746, 0, 0, 0, 0, 0, 752, 753, + 751, 0, 0, 0, 0, 0, 0, 0, 579, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 745, 0, 757, 770, 782, 0, 0, 0, 0, + 0, 0, 608, 787, 0, 0, 645, 0, 0, 548, + 0, 0, 926, 928, 929, 931, 932, 934, 935, 938, + 939, 940, 947, 948, 949, 950, 954, 955, 956, 957, + 960, 923, 924, 925, 927, 930, 933, 936, 937, 941, + 942, 943, 944, 945, 946, 951, 952, 953, 958, 959, + 922, 820, 707, 0, 730, 731, 733, 735, 0, 0, + 0, 736, 0, 0, 0, 0, 0, 0, 0, 745, + 0, 712, 713, 0, 675, 0, 670, 673, 647, 0, + 681, 0, 708, 0, 0, 0, 646, 0, 0, 0, + 639, 0, 0, 0, 637, 0, 0, 0, 638, 0, + 0, 0, 633, 0, 0, 0, 634, 0, 0, 0, + 636, 0, 0, 0, 635, 643, 482, 818, 0, 540, + 822, 807, 809, 830, 0, 652, 0, 808, 898, 69, + 816, 0, 540, 0, 0, 98, 92, 91, 0, 458, + 0, 0, 426, 0, 497, 498, 0, 493, 0, 0, + 378, 0, 0, 0, 107, 88, 0, 0, 0, 377, + 51, 56, 57, 62, 62, 0, 0, 419, 0, 411, + 563, 0, 345, 350, 344, 0, 0, 0, 229, 239, + 231, 232, 233, 234, 0, 0, 106, 108, 109, 157, + 0, 224, 225, 0, 0, 0, 0, 0, 277, 327, + 468, 0, 361, 0, 0, 317, 321, 319, 0, 0, + 0, 452, 322, 0, 0, 799, 0, 0, 0, 0, + 576, 0, 0, 798, 656, 658, 0, 572, 661, 662, + 0, 566, 601, 602, 603, 604, 605, 606, 600, 0, + 0, 569, 0, 755, 780, 0, 768, 758, 763, 0, + 663, 0, 769, 0, 0, 0, 0, 0, 756, 0, + 0, 784, 664, 597, 0, 786, 0, 0, 0, 668, + 0, 745, 0, 0, 618, 620, 619, 621, 622, 623, + 624, 625, 0, 615, 0, 543, 548, 574, 0, 0, + 0, 755, 780, 0, 726, 714, 721, 719, 720, 0, + 0, 727, 0, 0, 0, 0, 0, 711, 0, 0, + 674, 672, 676, 0, 0, 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 477, 0, 511, 515, 518, 539, 504, 0, 649, 651, - 68, 810, 458, 815, 0, 94, 95, 101, 93, 455, - 0, 0, 431, 490, 492, 493, 494, 508, 0, 0, - 83, 0, 85, 0, 374, 0, 64, 0, 0, 163, - 0, 0, 0, 0, 0, 0, 0, 0, 162, 839, - 164, 154, 0, 0, 0, 103, 0, 102, 221, 223, - 0, 109, 0, 0, 0, 0, 0, 0, 122, 108, - 110, 113, 117, 64, 0, 247, 416, 411, 415, 420, - 346, 0, 0, 347, 391, 392, 389, 390, 0, 238, - 0, 0, 235, 363, 283, 233, 234, 280, 282, 284, - 281, 278, 277, 0, 0, 0, 459, 371, 372, 370, - 316, 0, 304, 441, 448, 0, 445, 0, 800, 794, - 0, 581, 583, 746, 745, 0, 747, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 764, 752, 765, 757, - 758, 760, 759, 762, 769, 0, 779, 0, 777, 663, - 664, 665, 783, 0, 741, 0, 0, 625, 624, 0, - 0, 546, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 722, 675, 723, 713, 714, 716, 715, - 720, 726, 0, 786, 0, 787, 788, 0, 0, 0, - 0, 681, 0, 0, 688, 0, 0, 686, 0, 0, - 687, 0, 0, 682, 0, 0, 683, 0, 0, 685, - 0, 0, 684, 526, 0, 0, 0, 517, 540, 0, - 506, 809, 808, 813, 0, 90, 454, 0, 0, 429, - 84, 0, 0, 0, 0, 0, 49, 0, 186, 187, - 165, 175, 173, 174, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 191, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 156, 0, 0, 0, 157, 0, 114, - 0, 0, 0, 147, 148, 150, 152, 119, 153, 0, - 0, 0, 0, 0, 0, 120, 0, 127, 121, 123, - 447, 112, 48, 254, 0, 0, 413, 341, 0, 0, - 0, 285, 236, 827, 324, 0, 0, 0, 465, 0, - 0, 799, 642, 569, 795, 566, 0, 771, 772, 0, - 0, 0, 776, 770, 781, 743, 0, 0, 0, 0, - 615, 0, 544, 546, 0, 730, 732, 735, 736, 0, - 0, 0, 740, 727, 678, 0, 676, 790, 0, 791, - 792, 697, 689, 704, 696, 702, 694, 703, 695, 698, - 690, 699, 691, 701, 693, 700, 692, 528, 524, 528, - 526, 523, 528, 525, 0, 513, 0, 516, 0, 0, - 476, 0, 453, 432, 87, 0, 373, 61, 60, 0, - 0, 178, 184, 0, 203, 0, 194, 0, 190, 193, - 182, 0, 0, 0, 185, 181, 170, 171, 172, 166, - 167, 169, 168, 176, 179, 0, 161, 0, 158, 0, - 0, 116, 0, 0, 0, 145, 128, 138, 136, 137, - 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 253, 0, 0, 248, 0, 538, 388, - 239, 0, 326, 327, 329, 334, 0, 828, 467, 0, - 468, 318, 0, 0, 773, 774, 775, 742, 608, 0, - 611, 612, 0, 545, 0, 737, 738, 739, 789, 680, - 0, 527, 520, 521, 519, 522, 0, 514, 503, 505, - 100, 86, 0, 63, 0, 0, 0, 202, 196, 192, - 195, 0, 0, 183, 0, 180, 0, 216, 118, 0, - 0, 0, 141, 144, 133, 134, 135, 129, 130, 132, - 131, 139, 142, 0, 126, 0, 0, 209, 255, 256, - 252, 0, 0, 0, 0, 342, 0, 0, 0, 337, - 0, 469, 444, 763, 609, 610, 721, 793, 531, 59, - 0, 199, 0, 197, 0, 0, 160, 447, 0, 149, - 151, 0, 143, 446, 204, 205, 0, 124, 208, 0, - 340, 394, 387, 321, 328, 333, 332, 0, 829, 331, - 335, 0, 0, 0, 0, 177, 201, 200, 198, 206, - 0, 125, 0, 0, 207, 259, 393, 0, 336, 334, - 0, 0, 510, 209, 140, 213, 0, 0, 210, 211, - 263, 260, 261, 0, 257, 262, 380, 0, 379, 381, - 337, 0, 0, 532, 536, 534, 159, 212, 214, 215, - 0, 243, 0, 383, 384, 330, 529, 0, 530, 0, - 258, 382, 0, 386, 533, 535, 385, 0, 0, 0 + 0, 0, 513, 517, 520, 541, 506, 0, 651, 653, + 68, 812, 460, 817, 0, 94, 95, 101, 93, 457, + 0, 0, 433, 492, 494, 495, 496, 510, 0, 0, + 0, 0, 0, 0, 83, 0, 85, 0, 376, 0, + 64, 64, 0, 249, 418, 413, 417, 422, 348, 0, + 0, 349, 393, 394, 391, 392, 0, 240, 0, 0, + 219, 0, 221, 117, 113, 220, 0, 0, 237, 365, + 285, 235, 236, 282, 284, 286, 283, 280, 279, 0, + 0, 0, 461, 373, 374, 372, 318, 0, 306, 443, + 450, 0, 447, 0, 802, 796, 0, 583, 585, 748, + 747, 0, 749, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 766, 754, 767, 759, 760, 762, 761, 764, + 771, 0, 781, 0, 779, 665, 666, 667, 785, 0, + 743, 0, 0, 627, 626, 0, 0, 548, 0, 544, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 724, + 677, 725, 715, 716, 718, 717, 722, 728, 0, 788, + 0, 789, 790, 841, 0, 0, 0, 0, 683, 0, + 0, 690, 0, 0, 688, 0, 0, 689, 0, 0, + 684, 0, 0, 685, 0, 0, 687, 0, 0, 686, + 479, 528, 0, 0, 0, 519, 542, 0, 508, 811, + 810, 815, 0, 90, 456, 0, 0, 431, 0, 0, + 165, 0, 0, 0, 0, 0, 0, 0, 0, 164, + 166, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 49, 48, 256, 0, 0, 415, 343, 0, 0, 156, + 105, 0, 102, 223, 225, 0, 111, 0, 0, 0, + 0, 0, 0, 124, 110, 112, 115, 119, 0, 287, + 238, 829, 326, 0, 0, 0, 467, 0, 0, 801, + 644, 571, 797, 568, 0, 773, 774, 0, 0, 0, + 778, 772, 783, 745, 0, 0, 0, 0, 617, 0, + 546, 548, 0, 732, 734, 737, 738, 0, 0, 0, + 742, 729, 680, 0, 678, 792, 0, 793, 794, 699, + 691, 706, 698, 704, 696, 705, 697, 700, 692, 701, + 693, 703, 695, 702, 694, 530, 526, 530, 528, 525, + 530, 527, 0, 515, 0, 518, 0, 0, 478, 0, + 455, 434, 0, 188, 189, 167, 177, 175, 176, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 193, 190, + 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, + 0, 0, 159, 87, 0, 375, 61, 60, 0, 255, + 0, 0, 250, 0, 540, 390, 0, 116, 0, 0, + 0, 149, 150, 152, 154, 121, 155, 0, 0, 0, + 0, 0, 0, 122, 0, 129, 123, 125, 449, 114, + 241, 0, 328, 329, 331, 336, 0, 830, 469, 0, + 470, 320, 0, 0, 775, 776, 777, 744, 610, 0, + 613, 614, 0, 547, 0, 739, 740, 741, 791, 682, + 0, 529, 522, 523, 521, 524, 0, 516, 505, 507, + 100, 0, 180, 186, 0, 205, 0, 196, 0, 192, + 195, 184, 0, 0, 0, 187, 183, 172, 173, 174, + 168, 169, 171, 170, 178, 181, 0, 163, 0, 160, + 86, 0, 63, 257, 258, 254, 0, 0, 0, 0, + 0, 0, 118, 0, 0, 0, 147, 130, 140, 138, + 139, 0, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 208, 344, 0, 0, 0, 339, 0, + 471, 446, 765, 611, 612, 723, 795, 533, 0, 0, + 0, 204, 198, 194, 197, 0, 0, 185, 0, 182, + 0, 59, 0, 342, 396, 389, 218, 120, 0, 0, + 0, 143, 146, 135, 136, 137, 131, 132, 134, 133, + 141, 144, 0, 128, 0, 0, 211, 323, 330, 335, + 334, 0, 831, 333, 337, 0, 0, 0, 0, 0, + 201, 0, 199, 0, 0, 162, 449, 261, 395, 0, + 0, 151, 153, 0, 145, 448, 206, 207, 0, 126, + 210, 338, 336, 0, 0, 512, 179, 203, 202, 200, + 208, 265, 262, 263, 0, 259, 264, 382, 0, 381, + 383, 0, 127, 0, 0, 209, 339, 0, 0, 534, + 538, 536, 211, 0, 245, 0, 385, 386, 142, 215, + 0, 0, 212, 213, 332, 531, 0, 532, 0, 161, + 260, 384, 0, 388, 214, 216, 217, 535, 537, 387, + 0, 0, 0 }; -static const short yydefgoto[] = { 1688, - 34, 35, 36, 37, 38, 429, 592, 862, 1428, 1077, - 1277, 39, 561, 557, 40, 41, 42, 588, 43, 44, - 841, 1058, 240, 572, 1266, 45, 598, 599, 600, 1110, - 1111, 1102, 1112, 1113, 1564, 1326, 601, 602, 1456, 1087, - 1537, 1538, 1568, 1608, 1609, 1649, 1098, 46, 431, 603, - 604, 47, 441, 634, 1135, 1136, 1137, 48, 185, 49, - 50, 436, 612, 613, 1335, 1485, 1571, 1654, 1655, 51, - 52, 293, 186, 637, 444, 638, 639, 1138, 53, 54, - 211, 324, 461, 55, 218, 219, 220, 907, 1153, 56, - 57, 187, 1145, 1492, 1493, 1494, 1495, 1580, 1620, 58, - 59, 60, 1123, 439, 621, 885, 886, 61, 204, 62, - 453, 63, 64, 1139, 295, 646, 65, 1074, 855, 66, - 627, 1659, 1673, 1674, 1489, 1129, 1638, 67, 68, 69, - 70, 91, 71, 72, 73, 615, 880, 1118, 398, 74, - 75, 76, 242, 416, 845, 1062, 77, 78, 79, 467, - 1483, 653, 654, 80, 81, 843, 82, 83, 301, 1147, - 1349, 1501, 84, 85, 86, 551, 249, 423, 226, 268, - 579, 580, 850, 427, 303, 304, 1261, 1421, 425, 822, - 1043, 1044, 1415, 1523, 1625, 1663, 1664, 449, 1045, 527, - 986, 374, 375, 376, 377, 378, 622, 489, 501, 484, - 379, 380, 478, 664, 921, 381, 382, 505, 495, 665, - 384, 522, 523, 983, 1201, 385, 776, 1015, 771, 516, - 706, 674, 675, 692, 693, 699, 962, 1189, 707, 1225, - 1226, 1389, 1390, 386, 658, 659, 917, 471, 387, 824, - 566, 567, 388, 389, 169, 473, 276, 1345, 825, 1621, - 237, 305, 391, 246, 318, 392, 393, 394, 395, 271, - 624, 396, 754, 235 +static const short yydefgoto[] = { 1691, + 34, 35, 36, 37, 38, 430, 592, 854, 1407, 1071, + 1261, 39, 561, 557, 40, 41, 42, 588, 43, 44, + 829, 1048, 241, 572, 1234, 45, 185, 876, 877, 878, + 1285, 1286, 1277, 1287, 1288, 1593, 1434, 879, 880, 1507, + 1248, 1561, 1562, 1597, 1630, 1631, 1673, 1273, 46, 622, + 881, 882, 47, 440, 620, 1101, 1102, 1103, 48, 186, + 49, 50, 435, 598, 599, 1264, 1411, 1516, 1645, 1646, + 51, 52, 294, 187, 625, 444, 626, 627, 1104, 53, + 54, 212, 325, 461, 55, 219, 220, 221, 897, 1119, + 56, 57, 188, 1111, 1442, 1443, 1444, 1445, 1549, 1604, + 58, 59, 60, 1081, 438, 607, 865, 866, 61, 205, + 62, 453, 63, 64, 1105, 296, 634, 65, 1068, 847, + 66, 613, 1650, 1666, 1667, 1415, 1087, 1620, 67, 68, + 69, 70, 91, 71, 72, 73, 601, 860, 1076, 399, + 74, 75, 76, 243, 417, 833, 1052, 77, 78, 79, + 467, 1544, 641, 642, 80, 81, 831, 82, 83, 302, + 1113, 1297, 1451, 84, 85, 86, 551, 250, 424, 227, + 269, 579, 580, 838, 428, 304, 305, 1229, 1369, 426, + 810, 1033, 1034, 1363, 1473, 1609, 1659, 1660, 449, 1035, + 527, 976, 375, 376, 377, 378, 379, 608, 489, 501, + 484, 380, 381, 478, 652, 911, 382, 383, 505, 495, + 653, 385, 522, 523, 973, 1167, 386, 764, 1005, 759, + 516, 694, 662, 663, 680, 681, 687, 952, 1155, 695, + 1191, 1192, 1337, 1338, 387, 646, 647, 907, 471, 388, + 812, 566, 567, 389, 390, 169, 473, 276, 1293, 813, + 1605, 238, 306, 392, 247, 319, 393, 394, 395, 396, + 272, 610, 397, 742, 236 }; -static const short yypact[] = { 10945, - 250, 319, 15155, 319, 1386, 15155, 165, 1990, 319, 70, - 83, 169, 163, 169, 319, 272, 13779, 13951, 319, 15155, - 134, 92, 190, 13951, 188, 293, 83, 13951, 14295, 14467, - 11974, 92, -53, 10945, 184,-32768,-32768,-32768,-32768,-32768, +static const short yypact[] = { 1771, + 179, 229, 15170, 229, 1730, 15170, 62, 909, 229, -116, + 73, 90, 57, 90, 229, 102, 13786, 13959, 229, 15170, + -42, -50, 41, 13959, 2, 126, 73, 13959, 14305, 14478, + 11937, -50, -41, 1771, 34,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 353,-32768, 13951, 224,-32768,-32768, +-32768,-32768,-32768,-32768, 453,-32768, 13959, 137,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, @@ -1415,1332 +1422,1329 @@ static const short yypact[] = { 10945, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 13951,-32768, 224, 15155, 15155,-32768,-32768, 15155, 15155, --32768, 15155, 13951,-32768, 283, 11630, 368, 34,-32768, 13951, - 15155, 224,-32768, 15155,-32768, 15155, 15155, 15155,-32768, 979, - 416,-32768, 15155, 15155,-32768, 340,-32768,-32768,-32768,-32768, - 30, 453,-32768,-32768,-32768,-32768,-32768, 471, 346,-32768, - 13951, 496,-32768,-32768, 508, 5438, -7, 472, 556, -6, --32768,-32768, 519,-32768,-32768,-32768, 558,-32768,-32768, 13951, --32768, 81, 15155,-32768,-32768,-32768,-32768,-32768, 13951, 30, --32768, 511, 589,-32768, 531, 607,-32768,-32768,-32768, 535, - -24, 467,-32768, -53, -53, 667, 695, 651, 490,-32768, - 579, 483, 579, 714, 315, 585,-32768, 501,-32768, 725, --32768, 696,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 503,-32768,-32768, 15155, 657,-32768,-32768, - 736, 642,-32768, 548,-32768,-32768, 708, 12146,-32768, 501, --32768, 569,-32768, 188,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 598, 446,-32768,-32768, 15155, 402, 2, 15155, - 15155, 12834, 586, 684, 684, 587,-32768, 590, 592,-32768, - 593, 733, 595, 599,-32768, 600, 251, 806, 684, 8385, - 601,-32768, 602, 603, 606, 77, -74, 609,-32768,-32768, --32768, 200, 2562, 222, 8385, 611,-32768, 8385,-32768, 8385, - 8385, 8385, 7710, 188, 616,-32768,-32768,-32768,-32768, 614, --32768, 228, 846,-32768, 11060,-32768, 611, 5,-32768, 625, - 621,-32768, 627,-32768,-32768, 204,-32768,-32768,-32768, 7, - 785, 8, 8, 11802, 13951, 726,-32768, 642, 807, 446, --32768, 792,-32768, 794,-32768, 13951,-32768,-32768,-32768,-32768, - 8385,-32768, -53, 741,-32768,-32768, 38, 683, 137, 13607, - 867, 137, -53,-32768,-32768, 298, 710, 4561, 692,-32768, - 520, 188, 11458,-32768, 797,-32768, 837, 8385,-32768, 15155, - 13951,-32768,-32768,-32768,-32768, 14639,-32768,-32768, 15155, 15155, --32768, 774,-32768, 766, 669, 10742,-32768,-32768, 852,-32768, - 771, 611, 678, 627, 681, 8385,-32768,-32768, 892, 7710, - 598, 598, 598,-32768,-32768, 799, 16, 598,-32768, 796, - 800, 801, 803,-32768,-32768, 684,-32768, 1438, 8385, 598, --32768, 9705, 7710, 798,-32768, 4759, 733,-32768, 781,-32768, --32768,-32768,-32768, 502, 8385,-32768, 688, 688, 688, 688, - 690, 693, 698, 1160,-32768, 28,-32768, 598, 13204, 8385, - 8605,-32768, 434, 8385, 67, 8385,-32768,-32768, 7939, 5667, - 5896, 6125, 6354, 6583, 6812, 7041, 15694,-32768, 293, 5438, - 870, 12318, 3444, 15155,-32768,-32768,-32768,-32768, 15327,-32768, --32768,-32768,-32768,-32768, 611, -17,-32768, 700, 459,-32768, - 747, 198,-32768, 723,-32768,-32768,-32768, 702, 706,-32768, - 3102,-32768, 851, 40, 919, 919, 919,-32768, 224,-32768, --32768, 247, 709, 15155, 873, 876, 722, 59,-32768,-32768, --32768,-32768, 186,-32768, 15621, 799, 247,-32768,-32768,-32768, --32768, 868, 864, 742, 804,-32768, 871,-32768,-32768,-32768, - 242,-32768,-32768,-32768,-32768, 764, 878, -15,-32768, -15, - -15, -15, -15,-32768, 808, 748, 753, 285,-32768, 13951, - -53, 11060,-32768,-32768, 739, 743, 744,-32768,-32768, 14123, --32768, 5438, 331,-32768, 611, 14123, 8385, 79,-32768,-32768, - 15155, 3219, 869, 959,-32768, -82, 746, 749, 361, 750, --32768,-32768,-32768, 758, 948, 768, 359, 21, 894, 928, --32768, 1734, 375, 773, 783, 811, 812, 9705, 9705, 9705, - 9705, 825, 445, 611, 828,-32768, 204, -8, 826, 895, - 7264, 7710, 7264, 7264, 10792, -55, 830, 3118,-32768, 1037, - 8385, 778, 839, 833,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 137, 15170, 15170,-32768,-32768, 15170, 15170, +-32768, 15170, 13959,-32768, 135, 105, 11591, 110, 198,-32768, + 13959, 15170, 137,-32768, 15170,-32768, 15170, 15170, 15170,-32768, + 497, 226,-32768, 15170, 15170,-32768, 143,-32768,-32768,-32768, +-32768, 31, 201,-32768,-32768,-32768,-32768,-32768, 267, 131, +-32768, 13959, 300,-32768,-32768, 315, 5348, 18, 233, 355, + -36,-32768,-32768, 320,-32768,-32768,-32768, 356,-32768,-32768, + 13959,-32768, 5, 15170,-32768,-32768,-32768,-32768,-32768, 13959, + 31,-32768, 321, 396,-32768, 332, 413,-32768,-32768,-32768, + 305, -8, 258,-32768, -41, -41, 482, 511, 475, 309, +-32768, 414, 414, 537, 240, 417,-32768, 327,-32768, 562, +-32768, 13959, 502,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 343,-32768,-32768, 15170, 472,-32768, +-32768, 553, 449,-32768, 368,-32768,-32768, 513, 12110,-32768, + 327,-32768, 371,-32768, 2,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 395, 103,-32768,-32768, 15170, 59, 26, + 15170, 15170, 12836, 405, 514, 514, 434,-32768, 445, 447, +-32768, 450, 525, 451, 456,-32768, 463, 337, 641, 514, + 8308, 464,-32768, 494, 498, 500, -121, 29, 504,-32768, +-32768,-32768, -119, 348, 92, 8308, 431,-32768, 8308,-32768, + 8308, 8308, 8308, 7630, 2, 483,-32768,-32768,-32768,-32768, + 505,-32768, 145, 674,-32768, 10961,-32768, 431, -16,-32768, + 524, 518,-32768, 539,-32768,-32768, -71,-32768,-32768,-32768, + 14, 659, 21, 21, 11764, 13959, 629,-32768, 449, 713, + 103,-32768, 700,-32768, 722,-32768, 13959,-32768,-32768,-32768, +-32768, 8308,-32768, -41, 682,-32768,-32768, 33, 626, 72, + 72, -41,-32768,-32768, 238, 642, 4467, 631,-32768, 619, + 592, 2, 11418,-32768, 740,-32768, 780, 8308,-32768, 15170, + 13959,-32768,-32768,-32768,-32768, 14651,-32768,-32768, 15170, 15170, +-32768, 710,-32768, 703, 601, 10676,-32768,-32768, 784,-32768, + 704, 431, 615, 539, 617, 8308,-32768,-32768, 829, 7630, + 395, 395, 395,-32768,-32768, 736, 616, 395,-32768, 729, + 731, 732, 733,-32768,-32768, 514,-32768, 2742, 8308, 395, +-32768, 9634, 7630, 743,-32768, 4666, 525,-32768, 720,-32768, +-32768,-32768,-32768, 538, 8308,-32768, 632, 632, 632, 632, + 623, 630, 633, 2302,-32768, -114,-32768, 395, 13208, 8308, + 8529,-32768, 520, 8308, 66, 8308,-32768,-32768, 7860, 5578, + 5808, 6038, 6268, 6498, 6728, 6958, 15696,-32768, 752, 5348, + 817, 12283, 3344, 15170,-32768,-32768,-32768,-32768, 15343,-32768, +-32768,-32768,-32768,-32768, 431, -1,-32768, 643, 197,-32768, + 684, 25,-32768, 660,-32768,-32768,-32768, 639, 644,-32768, + 2930,-32768, 787, 38, 855, 855, 855,-32768, 137,-32768, +-32768, 88, 88,-32768,-32768,-32768,-32768, 793, 792, 668, + 730,-32768, 794,-32768,-32768,-32768, 96,-32768,-32768,-32768, +-32768, 691, 803, 84,-32768, 84, 84, 84, 84,-32768, + 13613, 888, 739, 678, 679, 284,-32768, 13959, -41, 10961, +-32768,-32768, 672, 673, 676,-32768,-32768, 14132,-32768, 5348, + 288,-32768, 431, 14132, 8308, 87,-32768,-32768, 15170, 10715, + 798, 887,-32768, -31, 677, 680, 296, 687,-32768,-32768, +-32768, 688, 859, 690, 39, 43, 804, 840,-32768, 2650, + 322, 685, 708, 709, 721, 9634, 9634, 9634, 9634, 724, + 218, 431, 727,-32768, -71, 13, 735, 816, 7182, 7630, + 7182, 7182, 10888, -59, 742, 3082,-32768, 370, 8308, 714, + 726, 755,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1438, 838,-32768, 849, 855,-32768, - 856, 857, 858,-32768, 8605, 8605, 8605, 8605, 8605, 8385, - 32, 611, 860,-32768, 204, 861,-32768, 231,-32768,-32768, - 382, 8605,-32768, 8385, 441, 863, 872, 7487, 502, 874, - 882, 7487, 533, 883, 884, 7487, 1008, 886, 887, 7487, - 1008, 890, 893, 7487, 90, 897, 899, 7487, 90, 900, - 901, 7487, 688, 902, 903, 7487, 688,-32768, 13951,-32768, - 10570, 642,-32768, 814,-32768,-32768, 836,-32768, -33, 814, - 15155,-32768,-32768, 12834, 642, 12490, 819,-32768,-32768,-32768, - 259, 875, 844, 15155,-32768, 8385,-32768,-32768, 309,-32768, - 15155,-32768, 13607,-32768, 15155, 15155, 15155, 15155,-32768,-32768, --32768, 1044, 10145, 48, 904, 915, 15155, 13607, 937, 15155, --32768, 1026, 60,-32768, 1044, 13951, 298, 11, 911,-32768, --32768, 13409,-32768,-32768, 1013, 13409, 279, 598,-32768,-32768, --32768,-32768,-32768,-32768, 11630, 11253, 11253, 11458,-32768, 1021, - 1101, 15155,-32768, 14811, 15155,-32768, 1023,-32768, 386, 15155, - -71,-32768,-32768, 10962, 7710,-32768, 1118, 15694, 15155, 15155, --32768, 8385, 7710,-32768,-32768,-32768, 598,-32768,-32768,-32768, - 8385,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 8385, - 598,-32768, 9705, 9705, 7710, 4987, 526, 931, 931, 572, --32768, 9705, 9925, 9705, 9705, 9705, 9705, 15694,-32768, 3672, - 7710, 1113,-32768,-32768, 932, -55, 933, 936, 7710,-32768, - 8385, 611, 935, 1116,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 24, 2719, 174,-32768, 778,-32768, 8605, 598, - 598, 9705, 7710, 5215, 578, 940, 940, 940, 940, 417, - 8605, 8825, 8605, 8605, 8605, 8605, 15694,-32768, 3895, 15509, --32768,-32768,-32768, 64, 943, 382, 799, 799, 946, 799, - 799, 953, 799, 799, 954, 799, 799, 955, 799, 799, - 956, 799, 799, 960, 799, 799, 969, 799, 799, 970, --32768, 13951, 950, 1168, 14983, 983, 1151, 12662,-32768,-32768, --32768,-32768,-32768,-32768, 7710,-32768,-32768, 1079,-32768, 999, - 1000, 398,-32768,-32768,-32768,-32768,-32768, 980, 410, 15621, --32768, 35,-32768, 1091,-32768, 1161, 1010, 982, 10145,-32768, - 10145, 10145, 10145, 10145, 10145, 10145, 809, 986,-32768,-32768, - 989,-32768, 15155, 15155, 460,-32768, 990,-32768,-32768,-32768, - 1156,-32768, 1001, 15155, 9045, 1146, 1167, 15155,-32768,-32768, - 60,-32768,-32768, 1010, 1186, 1145,-32768,-32768,-32768, -7, --32768, 503, 1232,-32768,-32768,-32768,-32768,-32768, 1120,-32768, - 1071, 15155,-32768, 464,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1033, 1012, 1,-32768,-32768,-32768,-32768, --32768, 1192,-32768,-32768,-32768, 1014,-32768, 7710,-32768,-32768, - 1017,-32768,-32768, 11060,-32768, 1027, 11060, 834, 1030, 154, - 1031, 1032, 7264, 7264, 7264, 1035,-32768, 789, 526, 266, - 266, 931, 931,-32768,-32768, 65, -55, 7710,-32768,-32768, --32768,-32768, -55, 10979,-32768, 799, 1020,-32768,-32768, 8162, - 1039, 778, 1043,-32768, 172, 1040, 1041, 1042, 1046, 7264, - 7264, 7264, 1047,-32768, 802, 578, 326, 326, 940, 940, --32768,-32768, 71,-32768, 1048, 1045,-32768, 8605, 15509, 1050, - 1052,-32768, 1053, 1063,-32768, 1065, 1066,-32768, 1069, 1072, --32768, 1073, 1074,-32768, 1075, 1076,-32768, 1077, 1078,-32768, - 1086, 1088,-32768, 452, 13951, 1238, 13204,-32768,-32768, 1312, - 1268,-32768,-32768,-32768, 1169,-32768,-32768, 1122, 15155,-32768, --32768, 1291, 1293, 15155, 224, 1131,-32768, 10145, 1667, 506, - 1109, 1109, 1109, 1109, 1635, 10145, 15535, 1110, 455, 10145, - 328, 10145,-32768,-32768, 10365, 10145, 10145, 10145, 10145, 10145, - 10145, 10145, 15694,-32768, 4341, 466, 474,-32768, 15155,-32768, - 10145, 55, 1114,-32768, 1115, 1117,-32768,-32768,-32768, 9265, - 9265, 9265, 9265, 9265, 9265, 891, 1121,-32768,-32768,-32768, - 1123,-32768,-32768, 1184, 1311, 298,-32768,-32768, 188, 13951, - 188,-32768,-32768,-32768,-32768, 15155, 1270, 1273,-32768, 1271, - 5438,-32768,-32768,-32768,-32768,-32768, 15694,-32768,-32768, 1129, - 1134, 1136,-32768,-32768, -55, 611, 1137, 799, 1139, 1141, - 11060, 799,-32768, 778, 15694,-32768,-32768,-32768,-32768, 1150, - 1152, 1153,-32768,-32768,-32768, 15535, 802,-32768, 1154, 1158, +-32768,-32768, 2742, 737,-32768, 757, 759,-32768, 761, 763, + 765,-32768, 8529, 8529, 8529, 8529, 8529, 8308, 60, 431, + 767,-32768, -71, 768,-32768, 369,-32768,-32768, 1057, 8529, +-32768, 8308, 11002, 769, 775, 7406, 538, 776, 779, 7406, + 560, 788, 796, 7406, 1078, 800, 802, 7406, 1078, 805, + 807, 7406, 159, 808, 812, 7406, 159, 813, 822, 7406, + 632, 827, 828, 7406, 632,-32768, 126,-32768, 10503, 449, +-32768, 738,-32768,-32768, 837,-32768, -28, 738, 15170,-32768, +-32768, 12836, 449, 12456, 756,-32768,-32768,-32768, 308, 818, + 820, 15170,-32768, 8308,-32768,-32768, 278,-32768, 15170, 830, +-32768, 969, 995, 841, 13613,-32768, 15170, 15170, 15170, 15170, +-32768,-32768,-32768, 1013, 1013, 13959, 238, 23, 866,-32768, +-32768, 13414,-32768,-32768, 937, 13414, 244, 395,-32768,-32768, +-32768,-32768,-32768,-32768, 15170, 380,-32768,-32768,-32768,-32768, + 408,-32768, 15639, 736, 11591, 11212, 11212, 11418,-32768, 956, + 1039, 15170,-32768, 14824, 15170,-32768, 953,-32768, 427, 15170, + -48,-32768,-32768, 10904, 7630,-32768, 1050, 15696, 15170, 15170, +-32768, 8308, 7630,-32768,-32768,-32768, 395,-32768,-32768,-32768, + 8308,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 8308, + 395,-32768, 9634, 9634, 7630, 4895, 795, 861, 861, 741, +-32768, 9634, 9855, 9634, 9634, 9634, 9634, 15696,-32768, 3574, + 7630, 1045,-32768,-32768, 862, -59, 864, 865, 7630,-32768, + 8308, 431, 869, 1049,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 45, 2857, 24,-32768, 714,-32768, 8529, 395, + 395, 9634, 7630, 5124, 836, 882, 882, 882, 882, 1036, + 8529, 8750, 8529, 8529, 8529, 8529, 15696,-32768, 3798, 15526, +-32768,-32768,-32768, 65, 891, 1057, 736, 736, 896, 736, + 736, 897, 736, 736, 898, 736, 736, 899, 736, 736, + 902, 736, 736, 904, 736, 736, 905, 736, 736, 906, + 13959, 13959, 890, 1101, 14997, 919, 1089, 12629,-32768,-32768, +-32768,-32768,-32768,-32768, 7630,-32768,-32768, 1015,-32768, 935, + 936, 441,-32768,-32768,-32768,-32768,-32768, 915, 10076, 920, + 921, 15170, 442, 15639,-32768, 22,-32768, 1032,-32768, 1102, + 950, 950, 1109, 1073,-32768,-32768,-32768, 18,-32768, 343, + 1160,-32768,-32768,-32768,-32768,-32768, 1055,-32768, 50, 13613, + 1009, 15170,-32768, 1081, 446,-32768, 1010, 15170,-32768, 259, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 973, + 946, 128,-32768,-32768,-32768,-32768,-32768, 1133,-32768,-32768, +-32768, 957,-32768, 7630,-32768,-32768, 955,-32768,-32768, 10961, +-32768, 966, 10961, 1120, 967, 121, 968, 972, 7182, 7182, + 7182, 974,-32768, 856, 795, 254, 254, 861, 861,-32768, +-32768, 82, -59, 7630,-32768,-32768,-32768,-32768, -59, 10920, +-32768, 736, 958,-32768,-32768, 8084, 979, 714, 983,-32768, + 138, 975, 980, 982, 985, 7182, 7182, 7182, 987,-32768, + 889, 836, 384, 384, 882, 882,-32768,-32768, 83,-32768, + 988, 991,-32768,-32768, 8529, 15526, 990, 993,-32768, 994, + 996,-32768, 997, 999,-32768, 1006, 1012,-32768, 1017, 1018, +-32768, 1030, 1031,-32768, 1034, 1040,-32768, 1042, 1048,-32768, +-32768, 941, 13959, 1159, 13208,-32768,-32768, 1233, 1194,-32768, +-32768,-32768, 1110,-32768,-32768, 1063, 15170,-32768, 1051, 10076, +-32768, 10076, 10076, 10076, 10076, 10076, 10076, 1424, 1052,-32768, + 1054, 15170, 15170, 461,-32768, 1249, 1257, 15170, 137, 1087, +-32768,-32768, 1135, 1251, 238,-32768,-32768, 2, 13959,-32768, +-32768, 1062,-32768,-32768,-32768, 1236,-32768, 1072, 15170, 8971, + 1223, 1245, 15170,-32768,-32768, 446,-32768,-32768, 2,-32768, +-32768,-32768,-32768, 15170, 1226, 1230,-32768, 1231, 5348,-32768, +-32768,-32768,-32768,-32768, 15696,-32768,-32768, 1082, 1085, 1086, +-32768,-32768, -59, 431, 1090, 736, 1091, 1093, 10961, 736, +-32768, 714, 15696,-32768,-32768,-32768,-32768, 1097, 1099, 1111, +-32768,-32768,-32768, 15552, 889,-32768, 1112, 1115,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 1275,-32768, 1275, - 452,-32768, 1275,-32768, 1318,-32768, 13951,-32768, 7710, 8385, --32768, 188,-32768,-32768,-32768, 9265,-32768, 1164,-32768, 1188, - 11020,-32768, 1667, 1393,-32768, 15535,-32768, 407,-32768,-32768, - 731, 15535, 1170, 10145, 1690, 506, 1205, 1864, 1864, 339, - 339, 1109, 1109,-32768,-32768, 475, 11077, 1296,-32768, 1171, - 2052,-32768, 9265, 598, 598, 827, 1175, 1175, 1175, 1175, - 551, 9485, 9265, 9265, 9265, 9265, 9265, 9265, 9265, 15694, - 4118, 15155, 1326,-32768, -95, 1306,-32768, 1339, 642, 1181, --32768, 1177, 1180,-32768,-32768, -5, 1182, 989,-32768, 15155, --32768,-32768, 479, 1187,-32768,-32768,-32768,-32768,-32768, 1196, --32768,-32768, 1197,-32768, 1198,-32768,-32768,-32768,-32768,-32768, - 15535,-32768,-32768,-32768,-32768,-32768, 13951,-32768, -55, 11060, --32768, 891, 224,-32768, 15694, 15535, 498,-32768,-32768,-32768, --32768, 1410, 15535, 731, 10145,-32768, 15155,-32768,-32768, 150, - 1199, 1200,-32768, 827, 891, 934, 934, 377, 377, 1175, - 1175,-32768,-32768, 544, 891, 549, 50, 1327,-32768,-32768, --32768, 15155, 188, 1261, 15155, 1013, 15155, 15694, 15694, -69, - 15155, 1203,-32768,-32768,-32768,-32768,-32768,-32768, 203,-32768, - 1204,-32768, 15535,-32768, 15535, 554, 11077, 1123, 15694,-32768, --32768, 9265,-32768,-32768,-32768,-32768, 66,-32768, 1327, 1206, --32768, 1252,-32768,-32768,-32768,-32768,-32768, 1230,-32768,-32768, --32768, 573, 1213, 1217, 1219,-32768,-32768,-32768,-32768, 1326, - 1220, 891, 149, 149,-32768, 413,-32768, 297,-32768, -5, - 8385, 13006,-32768, 1327,-32768,-32768, 1451, 36,-32768,-32768, --32768,-32768,-32768, 576,-32768,-32768,-32768, 81,-32768,-32768, - -69, 2362, 583,-32768,-32768, 1227,-32768,-32768,-32768,-32768, - 413,-32768, 1229, 81, 1231,-32768,-32768, 13006,-32768, 15155, --32768,-32768, 1234,-32768,-32768,-32768,-32768, 1465, 1466,-32768 +-32768,-32768,-32768,-32768,-32768, 1255,-32768, 1255, 941,-32768, + 1255,-32768, 1283,-32768, 13959,-32768, 7630, 8308,-32768, 2, +-32768,-32768, 10076, 12668, 783, 1119, 1119, 1119, 1119, 1616, + 10076, 15552, 1122, 533, 10076, 89, 10076,-32768,-32768, 10297, + 10076, 10076, 10076, 10076, 10076, 10076, 10076, 15696,-32768, 4246, + 479, 489,-32768,-32768, 9192,-32768, 1124,-32768, 1141,-32768, + -89, 1259,-32768, 1292, 449, 1134, 15170,-32768, 10076, 311, + 1128,-32768, 1130, 1131,-32768,-32768,-32768, 9192, 9192, 9192, + 9192, 9192, 9192, 976, 1137,-32768,-32768,-32768, 1138,-32768, +-32768, 1132, 1142,-32768,-32768, -10, 1143, 1054,-32768, 15170, +-32768,-32768, 492, 1144,-32768,-32768,-32768,-32768,-32768, 1146, +-32768,-32768, 1157,-32768, 1161,-32768,-32768,-32768,-32768,-32768, + 15552,-32768,-32768,-32768,-32768,-32768, 13959,-32768, -59, 10961, +-32768, 10945,-32768, 12668, 1364,-32768, 15552,-32768, 423,-32768, +-32768, 1493, 15552, 1163, 10076, 11018, 783, 728, 1789, 1789, + 388, 388, 1119, 1119,-32768,-32768, 523, 10977, 1265,-32768, + 976, 137,-32768,-32768,-32768,-32768, 15170, 2, 1212, 15170, + 1164, 2027,-32768, 9192, 395, 395, 895, 1162, 1162, 1162, + 1162, 951, 9413, 9192, 9192, 9192, 9192, 9192, 9192, 9192, + 15696, 4022, 15170, 1320, 937, 15170, 15696, 15696, -73, 15170, + 1167,-32768,-32768,-32768,-32768,-32768,-32768, 1, 15696, 15552, + 532,-32768,-32768,-32768,-32768, 1397, 15552, 1493, 10076,-32768, + 15170,-32768, 1168,-32768, 1234,-32768,-32768,-32768, 117, 1169, + 1171,-32768, 895, 976, 1229, 1229, 406, 406, 1162, 1162, +-32768,-32768, 542, 976, 554, 55, 1318,-32768,-32768,-32768, +-32768, 1197,-32768,-32768,-32768, 564, 1175, 1177, 1178, 1180, +-32768, 15552,-32768, 15552, 565, 10977, 1138, 412,-32768, 499, + 15696,-32768,-32768, 9192,-32768,-32768,-32768,-32768, 67,-32768, + 1318,-32768, -10, 8308, 13009,-32768,-32768,-32768,-32768,-32768, + 1320,-32768,-32768,-32768, 570,-32768,-32768,-32768, 5,-32768, +-32768, 1181, 976, 69, 69,-32768, -73, 2073, 578,-32768, +-32768, 1188, 1318, 412,-32768, 1187, 5, 1192,-32768,-32768, + 1427, 49,-32768,-32768,-32768,-32768, 13009,-32768, 15170,-32768, +-32768,-32768, 1202,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1435, 1436,-32768 }; static const short yypgoto[] = {-32768, --32768, 1434,-32768,-32768,-32768, 1207, 1049, 877,-32768, 610, - 363,-32768, 1084,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 629, 620, 637,-32768, --32768,-32768, 384, 181,-32768, -330,-32768, -562,-32768, -1026, - -47, -1253, -132, -145, -108, -131,-32768,-32768,-32768,-32768, - 632,-32768,-32768,-32768,-32768,-32768, 115,-32768,-32768,-32768, --32768,-32768,-32768, -859,-32768,-32768,-32768,-32768, -166,-32768, --32768,-32768,-32768, -181, 387,-32768, 612, 615,-32768,-32768, - 1481, 1263, 1107,-32768, 1497,-32768, 1191, 879,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, -57, -115, -134,-32768, --32768,-32768, -48, 1222,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1329, -188,-32768,-32768,-32768, 0,-32768, +-32768, 1404,-32768,-32768,-32768, 1170, 1020, 847,-32768, 586, + 372,-32768, 1044,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 910, 613, 373, 614, +-32768,-32768,-32768, 174, 42,-32768, -829,-32768, -573,-32768, + -737, -101, -1360, -171, -192, -159, -180,-32768,-32768,-32768, +-32768, 381,-32768,-32768,-32768,-32768,-32768, 208,-32768,-32768, +-32768,-32768,-32768,-32768, -838,-32768,-32768,-32768,-32768, -188, +-32768,-32768,-32768,-32768, -182, 397,-32768, 590, 593,-32768, +-32768, 1452, 1232, 1070,-32768, 1468,-32768, 1156, 843,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, -58, -144, -167, +-32768,-32768,-32768, -51, 1184,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 1295, -194,-32768,-32768,-32768, 53, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 641,-32768,-32768,-32768,-32768,-32768,-32768, 418,-32768, --32768,-32768, 1501,-32768,-32768, 685,-32768, -241,-32768,-32768, - -61, -851, 630,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, -318, -14, 1135,-32768, 992,-32768,-32768,-32768, --32768, 697,-32768,-32768, -199, -42,-32768,-32768,-32768, 981, --32768, -1188, 135, -1258,-32768,-32768, -130, -401, -1029,-32768, - -958, -512, 1189,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -414, -215,-32768,-32768,-32768, 1159,-32768,-32768, -220, --32768, 349,-32768,-32768,-32768, 1862,-32768,-32768, -655, -349, - -449,-32768,-32768, -870, -600, -853,-32768,-32768, -633,-32768, --32768,-32768,-32768,-32768,-32768, 896,-32768,-32768, 680, 997, --32768, 721, -644, 1009,-32768, 143, 1361,-32768, -1038, -56, - -160, 31, 1019,-32768,-32768, 1947, 1681, -12, -16, -172, - -382, -3, 304,-32768 +-32768,-32768, 385,-32768,-32768,-32768,-32768,-32768,-32768, 420, +-32768,-32768,-32768, 1470,-32768,-32768, 665,-32768, -225,-32768, +-32768, -109, -1039, 609,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, -322, 9, 723,-32768, 706,-32768,-32768, +-32768,-32768, 692,-32768,-32768, -202, -40,-32768,-32768,-32768, + 952,-32768, -1167, 157, -920,-32768,-32768, -155, -400, -1016, +-32768, -953, -511, 1165,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, -402, -264,-32768,-32768,-32768, 1136,-32768,-32768, + -214,-32768, 358,-32768,-32768,-32768, 2060,-32768,-32768, -724, + -382, -439,-32768,-32768, -836, -629, -834,-32768,-32768, -609, +-32768,-32768,-32768,-32768,-32768,-32768, 879,-32768,-32768, -9, + 984,-32768, 734, -628, 978,-32768, 140, 1346,-32768, -1028, + -56, -153, 28, 1518,-32768,-32768, 1790, 669, -76, -21, + -173, -394, -3, 323,-32768 }; -#define YYLAST 15908 +#define YYLAST 15911 static const short yytable[] = { 170, - 407, 273, 189, 315, 294, 383, 573, 909, 247, 1263, - 468, 313, 1254, 230, 234, 1095, 238, 1116, 261, 306, - 234, 854, 264, 623, 234, 254, 257, 234, 1204, 1198, - 666, 397, 1199, 1434, 818, 319, 188, 548, 821, 1001, - 464, 265, 584, 16, 585, 555, 560, 961, 1578, 1117, - 922, 94, 1279, 698, 1280, 1281, 1282, 1283, 1284, 1285, - 593, 16, 1156, 1618, 852, 504, 1416, 965, 593, 967, - 968, 1228, 549, 1171, 1669, 1103, 96, 922, 1272, 782, - 1103, 586, 408, 234, 556, 207, 1104, 947, 948, 949, - 950, 1172, 873, 1105, 595, 101, 102, 298, 1105, 922, - 936, 1569, 595, 829, 267, 1633, 1605, 1347, 1570, 995, - 996, 997, 998, 999, 608, 320, 16, 402, 6, 479, - 7, 1208, 660, 915, 922, 1670, 1014, 462, 783, 112, - 469, 1348, 321, 497, 937, 465, 445, 671, 672, 1209, - -596, 596, 1106, 784, 1619, 13, 299, 1106, 1606, 596, - 1273, 1524, 521, 923, 1526, 924, 1107, 117, -596, 1599, - 233, 1107, 1108, 1357, 1646, 33, 244, 1108, 234, 597, - 251, 189, 189, 259, 212, 277, 279, 597, 189, 234, - 923, 1375, 296, 33, 1109, 300, 234, 189, 1542, 1109, - 189, 208, 189, 277, 279, 16, 1634, 922, 325, 189, - 189, 322, 923, 922, 1050, 274, 275, 245, 213, 888, - 399, 18, 280, 417, 403, 833, 657, 234, 834, 837, - 190, 245, 245, 1579, 307, 245, 308, 923, 1528, 269, - 221, 587, 209, 214, 316, 1647, 234, 325, 466, 238, - 550, 1306, 1307, 1373, 322, 234, 322, 1002, 210, 419, - 420, 1431, 966, 839, 323, 1003, 1004, 1005, 1006, 1433, - 1200, 712, 206, 1441, 1648, 1445, 1007, 28, 1446, 1447, - 1448, 1449, 1450, 1451, 1452, 1453, 853, 224, 1457, 1002, - 681, 1011, 1592, 215, 1461, 239, 490, 1003, 1004, 1005, - 1006, -587, 590, 238, 868, 1623, 869, 457, 1007, 216, - 923, 1092, 1364, 241, 189, 912, 923, 1496, 1384, -587, - 458, 491, 1176, 225, 272, 545, 546, 33, 1125, 591, - 1012, 840, 901, 189, 547, 281, 189, 470, 475, 383, - 492, 102, 302, 1205, 6, 1624, 7, 609, 454, 1627, - 1442, 1628, 1170, 1126, 959, 1215, 1216, 1217, 1218, 1219, - 1220, 1178, 1179, 1180, 1181, 1182, 1183, 525, 1013, 243, - 1213, 13, 610, 329, 112, 1472, 217, 87, 390, 953, - 1473, 1474, 1475, 1476, 1477, 1478, 1479, 954, 955, 956, - 957, 88, 406, 558, 1480, 562, 562, 1002, 958, 1443, - 322, 409, 493, 1127, 531, 1003, 1004, 1005, 1006, 264, - 569, 234, 245, 860, 1444, 1161, 1007, 1202, 582, 1128, - 248, 16, 234, 263, -555, 1514, 859, 1544, 265, 933, - 1047, 870, 1008, 871, 530, 635, 605, 18, 611, 531, - 861, 383, -555, 1053, 625, -825, -554, 270, 934, 296, - -832, 213, -585, 532, 89, 1184, 189, 234, 530, 266, - 533, 261, 189, 531, -554, 189, 189, 1539,-32768, 90, - -585, 434, 655, 1056, 1057, 435, 214, 623, 667, 668, - 669, 623, 935, 245, 282, 676, 1487, 882, 532, 883, - 643, 267, 1657, 28, 777, 533, 647, 683, 314, 648, - 649, 956, 957, 534, 1221, 698, 1540, 1589, 697, 1121, - 958, 459, 532, 1124, 535, 1437, 952, 460, 1408, 533, - 1186, 1187, 536, 713, 1409, 714, 215, 534, 1597, 1193, - 898, 778, 899, 779, 1065, 753, 1410, 775, 535, 1658, - 1066, 1067, 216, 33, 1541, 1411, 1613, 297, 1496, 1360, - 1361, 1362, 1438, 698, 1439, 531, 568, 570, 826, 1412, - 826, 1005, 1006, 317, 537, 832, 326, 873, 578, 1223, - 1007, 780, 1413, 327, 1301, 1302, 910, 521, 911, 538, - 533, 521, 1387, 1303, 1289, 521, 1380, 1381, 1382, 521, - 1414, 328, 1440, 521, 856, 857, 858, 521, 330, 537, - 189, 521, 1157, 644, 532, 521, 927, 539, 928, 217, - 331, 533, 1478, 1479, 538, 543, 544, 545, 546, 534, - 941, 1480, 942, 537, 400, 890, 547, 890, 890, 890, - 890, 550, 1195, 1154, 864, 401, 1651, 245, 538, 1652, - 1566, 1653, 539, 1269, 404, 1270, 234, 540, 541, 542, - 543, 544, 545, 546, 171, 868, 908, 1271, 1582, 205, - 405, 547, 908, 411, 1214, 223, 539, 826, 412, 236, - 953, 540, 541, 542, 543, 544, 545, 546, 954, 955, - 956, 957, 628, 413, 537, 547, 414, 629, 1293, 958, - 322, 421, 1343, 415, 697, 697, 697, 697, 630, 538, - -825, 515, 390, 1294, 1159, 910, 418, 1308, 631, 632, - 422, 910, 1165, 1458, 424, 537, 1503, 313, 313, 910, - 1545, 1459, 1546, 1131, 550, 426, 1583,-32768, 428, 430, - 538,-32768, 633, 433, 437, 543, 544, 545, 546, 1299, - 1300, 1301, 1302, 1593, 440, 1594, 547, 438, 1365, 443, - 1303,-32768, 889, 1287, 891, 892, 893, 894, 539, 954, - 955, 956, 957, 540, 541, 542, 543, 544, 545, 546, - 958, 775, 775, 775, 775, 775, 1472, 547, 442, 446, - 447, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 775, 1602, - 448, 1603, 900, 450, 910, 1480, 1604, 953, 1553, 1593, - 1454, 1629, 1288,-32768, 390, 954, 955, 956, 957, 1289, - 451, 1003, 1004, 1005, 1006, 456, 958,-32768, 450, 1177, - 1640, 1671, 1007, 1672, 322, 234, 1286, 234, 1678, 477, - 1679, 1287, 476, 480, 1059, 496, 481, 1051, 482, 483, - 569, 486, 826, 485, 1264, 487, 488, 499, 500, 502, - 189, 530, 503, 515, 1504, 506, 531, 189, 526, 1070, - 528, 1070, 1072, 1073, 189, 529, 552, 553, 554, 1091, - 559, 1119, 1515, 655, 1070, 571, 1100, 576, 574, 577, - 1288, 583, 234, 589, 1063, 1130, 606, 1289, 625, 1140, - 1140, 1063, 625, 890, 890, 1290, 614, 626, 1075, 640, - 641, 296, 1141, 1141, 296, 532, 1291, 650, 189, 651, - 189, 1151, 533, 1293, 1292, 652, 655, 656, 657, 661, - 534, 663, -825, 16, 1166, 1162, 1163, 700, 1294, 677, - 504, 535, 547, 678, 679, 821, 680, 709, 1169, 536, - 710, 836, 1148, 711, 1150, 838, 842, 1352, 844, 697, - 697, 846, 851, 852, 865, 863, 1295, 866, 697, 697, - 697, 697, 697, 697, 1299, 1300, 1301, 1302, 867, 877, - 876, 1041, 878, 1046, 884, 1303, 879, 1562, 896, 1529, - 887, 881, 1203, 897, 902, 895, 568, 1206, 1207, 904, - 903, 1293, 920, 925, 919, 775, 926, 929, 697, 1466, - 1467, 1468, 1469, 1470, 1471, 930, 1294, 775, 775, 775, - 775, 775, 775, 931, 953, 932, 537, 938, 939, 943, - 985, 472, 954, 955, 956, 957, 1508, 1002, 1115, 944, - 531, 538, 1591, 958, 1295, 1003, 1004, 1005, 1006, 1296, - 1297, 1298, 1299, 1300, 1301, 1302, 1007, 964, 234, 1055, - 1061, 1258,-32768, 1303, 826, 1048, 1304, 945, 946, 539, - 1476, 1477, 1478, 1479, 540, 541, 542, 543, 544, 545, - 546, 1480, 951, 963, 960, 1616, 1617, 970, 547, 532, - 988, 1355, 987, 1049, 989, 1091, 533, 1091, 1091, 1091, - 1091, 1091, 1091, 565, 534, 990, 1631, 1574, 1060, 655, - 655, 991, 992, 993, 994, 1532, 1009, 1010, 973, 1017, - 189, 279, 1429, 399, 1331, 1076, 1472, 1097, 1018, 1460, - 1020, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1021, 1023, - 1024, 1130, 1026, 1027, 974, 1480, 1029, 1101, 1342, 1030, - 383, 1120, 1550, 1032, 1312, 1033, 1035, 1036, 1038, 1039, - 1093, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1472, - 1565, 1094, 1122, 1144, 1146,-32768,-32768, 1476, 1477, 1478, - 1479, 168, 1152, 1160, 168, 958, 1188, 530, 1480, 1190, - 1191, 1196, 531, 1192, 1007, 168, 168, 1197, 168, 1229, - 537, 694, 168, 1232, 1046, 1255, 168, 168, 168, 168, - 1235, 1238, 1241, 1244, 311, 538, 1256, 1247, 278, 286, - 287, 288, 289, 290, 291, 292, 1250, 1253, 1259, 1260, - 772, 1265, 1267, 1268, 1274, 1269, 310, 1287, 1278, 1275, - 1276, 532, 1305, 539, 775, -832, 1309, 1310, 533,-32768, --32768, 543, 544, 545, 546, 1329, 534, 1311, 1330, 1334, - 1336, 1339, 547, 1340, 1341, 168, 1344, 535, 1346, 1350, - 1351, 234, 975, 753, 1353, 536, 1368, 976, 977, 978, - 979, 980, 981, 982, 1354, 189, 1288, 1356, 1358, 1359, - 189, 1632, 1363, 1289, 1091, 1372, 1374, 1376, 1377, 1378, - 1386, 1290, 1091, 1379, 1383, 1385, 1091, 1392, 1091, 1393, - 1394, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1091, 1424, - 1395, 1091, 1396, 1397, 1427, 189, 1398, 1091, 1417, 1399, - 1400, 1401, 1402, 1403, 1404, 1405, 279, 279, 279, 279, - 279, 279, 1488, 1406, 1491, 1407, 1419, 1420, 1422, 1425, - 168, 1426, 537, 168, 168, 1423, 234, 168, 168, 1430, - 168, 168, 1498, 1303, 168, 1484, 1436, 538, 168, 168, - 1463, 1464, 168, 1465, 168, 168, 168, 1481, 1486, 1482, - 1590, 168, 168, 1499, 1500, 1502, 1505, 694, 694, 694, - 694, 1506, 1522, 1507, 1509, 539, 1511, 1293, 1512, 168, - 540, 541, 542, 543, 544, 545, 546, 1516, 1527, 1517, - 1518, 1520, 1294, 1521, 547, -615, 1660, 1046, 168, 1533, - 1536, 168, 1534, 1547, 1567, 1531, 1543, 168, 1548, 1480, - 1572, 1573, 1575, 234, 1576, 1577, 1675, 1595, 1581, 1607, - 1295, 1612, 279, 1637, 1584, 1296, 1297, 1298, 1299, 1300, - 1301, 1302, 1683, 1585, 1586, 1587, 1600, 1601, 910, 1303, - 1091, 1626, 1636, 1619, 772, 772, 772, 772, 772, 1641, - 531, 1551, 1552, 1642, 1668, 168, 1643, 1645, 1680, 279, - 1684, 772, 1682, 1687, 1689, 1690, 168, 262, 279, 279, - 279, 279, 279, 279, 279, 279, 1333, 279, 655, 432, - 607, 1069, 1490, 875, 1114, 168, 563, 1096, 168, 168, - 168, 1071, 1462, 390, 1332, 1596, 655, 1644, 1667, 532, - 1635, 1099, 1650, 172, 1681, 494, 533, 250, 1338, 1143, - 222, 1142, 410, 565, 534, 173, 575, 174, 463, 1615, - 695, 513, 175, 234, 1661, 535, 1676, 1614, 312, 176, - 177, 455, 260, 178, 913, 1068, 1630, 1337, 1622, 1155, - 819, 1091, 1064, 1598, 179, 1525, 835, 1685, 1370, 773, - 830, 512, 180, 916, 1052, -323, 1611, 309, 820, 1046, - 1418, 1639, 168, 168, 0, 0, 0, 0, 189, 0, - 0, 826, 0, 826, 168, 181, 0, 189, 0, 0, - 0, 0, 0, 182, 183, 0, 0, 0, 168, 0, - 0, 0, 184, 0, 0, 0, 168, 0, 279, 0, - 0, 168, 1610, 0, 0, 0, 0, 0, 168, 168, - 537, 0, 0, 0, 168, 0, 0, 168, 168, 1656, - 670, 0, 694, 694, 168, 538, 0, 0, 0, 1665, - 0, 694, 694, 694, 694, 694, 694, 0, 1666, 0, - 0, 0, 1286, 0, 0, 673, 0, 1287, 0, 0, - 0, 0, 0, 539, 1656, 0, 0, 0, 540, 541, - 542, 543, 544, 545, 546, 1665, 0, 0, 772, 1046, - 0, 694, 547, 0, 1666, 0, 1686, 0, 0, 1287, - 772, 772, 772, 772, 772, 772, 0, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 1288, 1286, 0, 0, - 0, 0, 1287, 1289, 0, 513, 695, 695, 695, 695, - 168, 1290, 168, 0, 0, 0, 0, 168, 0, 0, - 0, 0, 1291, 0, 0, 0, 0, 0, 1288, 0, - 1292, 0, 0, 0, 0, 1289, 0, 0, 0, 0, - 874, 530, 0, 1290, 0, 0, 531, 0, 0, 0, - 0, 1288, 168, 0, 1291, 0, 0, 0, 1289, 0, - 0, 0, 0, 513, 0, 0, 1290, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1291, 0, 0, - 0, 0, 0, 773, 773, 773, 773, 773, 0, 0, - 0, 0, 0, 0, 0, 532, 0, 0, 168, 0, - 773, 0, 533, 0, 0, 0, 0, 1293, 168, 0, - 534, 0, 0, 0, 168, 0, 0, 0, 0, 168, - 0, 535, 1294, 0, 0, 0, 0, 0, 0, 536, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1293, + 273, 316, 190, 248, 295, 548, 314, 468, 573, 1231, + 846, 899, 384, 231, 235, 1222, 239, 408, 1074, 307, + 235, 1485, 1254, 1170, 235, 255, 258, 235, 985, 986, + 987, 988, 989, 189, 609, 806, 320, 584, 265, 585, + 654, 262, 6, 1547, 7, 1004, 937, 938, 939, 940, + 1164, 549, 555, 1165, 809, 1364, 398, 266, 840, 560, + 1602, 1075, 841, 686, 464, 1256, 16, 991, 951, 13, + 840, 479, 1195, 16, 912, 208, 586, 207, 770, 955, + 827, 957, 958, 235, 1670, 497, 1122, 1686, 403, 648, + 409, 556, 842, 1607, -589, 213, -557, 1137, 214, 923, + 1138, 1493, 912, 323, 842, 912, 1654, 225, 1514, 594, + 240, 1627, -589, 817, -557, 1515, 321, 191, 924, 16, + 700, 268, 926, 215, 222, 462, 1621, 771, 469, 214, + 1305, 905, 1566, 322, 1608, 326, 18, 1257, 1687, 843, + 16, 1603, 772, 226, 445, 1174, 912, 1323, 1175, 828, + 1494, 843, 925, 1628, 215, 1671, 927, 234, 459, 521, + 465, -827, 242, 245, 460, 1495, -834, 252, 844, 504, + 260, 190, 190, 216, 326, 277, 279, 913, 190, 235, + 844, 209, 821, 297, 1672, 404, 825, 235, 190, 33, + 217, 190, 28, 190, 277, 279, 33, 1478, 1655, 1611, + 190, 190, 274, 275, 216, 913, 400, 914, 913, 280, + 1040, 244, 1401, 1402, 1321, 912, 912, 246, 235, 1548, + 550, 217, 308, 210, 309, 645, 270, 587, 590, 246, + 418, 669, 317, 246, 1295, 822, 246, 235, 246, 211, + 239, 323, 33, 249, -598, 852, 235, 458, 323, 913, + 956, 1638, 282, 1639, 1171, 591, 324, 218, 1168, 1296, + 902, 299, -598, 466, 264, 1446, 1181, 1182, 1183, 1184, + 1185, 1186, 853, 420, 421, 845, 992, 595, 235, 942, + 298, 992, 1166, 1083, 993, 994, 995, 996, 218, 993, + 994, 995, 996, 457, 239, 997, 87, 283, 315, 949, + 997, 323, 596, 1136, 327, 190, 891, -556, 1084, 868, + 300, 88, 1144, 1145, 1146, 1147, 1148, 1149, 913, 913, + 1312, 1332, 281, 472, 190, -556, 1142, 190, 470, 475, + 303, 1278, 862, 1533, 863, 384, 454, 943, 1534, 1535, + 1536, 1537, 1538, 1539, 1540, 944, 945, 946, 947, 1280, + 301, 271, 1541, 525, 992, 89, 948, 318, 1085, 328, + -587, 330, 993, 994, 995, 996, 391, 329, 1464, 597, + 90, 1095, 490, 997, 1179, 1086, 401, 998, -587, 558, + 407, 562, 562, 94, 342, 545, 546, 433, 171, 410, + 507, 434, 331, 206, 547, 565, 1127, 491, 1281, 224, + 347, 569, 235, 237, 655, 656, 657, 332, 96, 1037, + 1551, 664, 1282, 235, 348, 851, 492, 102, 1283, 1001, + 623, 441, 1043, 671, 402, 384, 1413, 101, 102, -827, + 515, 963, 582, 611, 943, 405, 1150, 1474, 354, 297, + 1476, 1284, 944, 945, 946, 947, 190, 235, 406, 701, + 112, 702, 190, 948, 416, 190, 190, 964, 1002, 609, + 1558, 112, 643, 609, 412, 413, 1278, 1079, 508, 509, + 1335, 1082, 1279, 1563, 262, 414, 323, 631, 1291, 493, + 946, 947, 415, 635, 1280, 1187, 636, 637, 419, 948, + 117, 1576, 682, 510, 1055, 686, 422, 1003, 685, 265, + 1056, 1057, 1374, 1595, 1375, 1376, 1377, 1378, 1379, 1380, + 1152, 1153, 1564, 1046, 1047, 1270, 423, 1446, 266, 1159, + 888, 760, 889, 246, 900, 741, 901, 763, 425, 1308, + 1309, 1310, 917, 1281, 918, 427, 6, 870, 7, 870, + 870, 870, 870, 686, 568, 570, 432, 1282, 814, 267, + 814, 1565, 1095, 1283, 429, 820, 578, 436, 931, 1189, + 932, 521, 511, 13, 437, 521, 1328, 1329, 1330, 521, + 765, 439, 531, 521, 442, 1511, 1284, 521, 1123, 1161, + 443, 521, 268, 1488, 446, 521, 965, 447, 448, 521, + 632, 966, 967, 968, 969, 970, 971, 972, 1527, 1528, + 1529, 1530, 1531, 1532, 450, 451, 533, 766, 456, 767, + 995, 996, 323, 16, 1396, 1397, 1090, 883, 1091, 997, + 1489, 532, 1490, 1398, 235, 485, 1642, 246, 533, 1643, + 18, 1644, 1539, 1540, 898, 1482, 534, 848, 849, 850, + 898, 1541, 476, 1484, 1092, 814, 1093, 1492, 768, 1496, + 477, 94, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, + 496, 1491, 1508, 550, 515, 1120, 682, 682, 682, 682, + 1453, 480, 685, 685, 685, 685, 96, 1237, 1090, 1238, + 1255, 1522, 481, 529, 482, 1648, 28, 483, 486, 391, + 1125, 314, 314, 487, 1579, 101, 102, 900, 1131, 1403, + 488, 499, 1097, 1583, 1584, 1585, 1586, 1587, 1588, 1589, + 1590, 537, 1594, 312, 1313, 900, 526, 1509, 287, 288, + 289, 290, 291, 292, 293, 900, 538, 1510, 550, 112, + 1552, 500, 1649, 537, 559, 502, 33, 503, 659, 660, + 1382, 506, 528, 760, 760, 760, 760, 760, 538, 763, + 763, 763, 763, 763,-32768, 553, 552, 1568, 117, 1569, + 760, 1570, 543, 544, 545, 546, 763, 890, 1612, 571, + 1613, 554, 614, 547, 574, 576, 539, 615, 1624, 391, + 1625, 540, 541, 542, 543, 544, 545, 546, 616, 1383, + 900, 1088, 1626, 1454, 1653, 547, 1384, 577, 617, 618, + 450, 1612, 1633, 1640, 1385, 235, 1664, 1049, 1665, 870, + 870, 1465, 565, 583, 1677, 1041, 1678, 589, 569, 600, + 814, 869, 619, 871, 872, 873, 874, 612, 190, 621, + 1232, 1616, 628, 629, 638, 190, 1077, 639, 640, 644, + 1132, 1064, 645, 1064, 1066, 1067, 190, 649, 651, -827, + 16, 1384, 235, 665, 1135, 666, 667, 668, 611, 1053, + 504, 697, 611, 688, 1106, 1106, 1053, 547, 698, 699, + 172, 190, 809, 826, 830, 824, 832, 1069, 839, 841, + 834, 297, 1107, 1107, 297, 856, 1505, 857, 190, 858, + 190, 1117, 864, 859, 861, 867, 643, 884, 1169, 886, + 887, 1388, 1089, 1172, 1173, 1128, 1129, 885, 892, 1300, + 910, 893, 894, 909, 921, 915, 1389, 928, 916, 1114, + 929, 1116, 933, 682, 682, 919, 920, 1479, 922, 685, + 685, 1458, 682, 682, 682, 682, 682, 682, 685, 685, + 685, 685, 685, 685, 1390, 934, 935, 975, 1036, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1388, 943, 936, 954, + 977, 568, 941, 1398, 950, 944, 945, 946, 947, 760, + 1038, 1389, 682, 953, 979, 763, 948, 1045, 685, 1143, + 960, 760, 760, 760, 760, 760, 760, 763, 763, 763, + 763, 763, 763, 978, 980, 1073, 981, 1356, 982,-32768, + 983, 474, 984, 1357, 999, 1000, 1007, 1394, 1395, 1396, + 1397,-32768, 1008, 1010, 1519, 1358, 1011, 1051, 1398, 944, + 945, 946, 947, 1088, 1359, 1013, 192, 235, 235, 1591, + 948, 1226, 1050, 1014, 814, 1600, 1601, 1016, 1360, 1017, + 1060, 193, 1019, 530, 1020, 1022, 194, 1610, 531, 1023, + 1025, 1361,-32768, 195, 196, 1251, 400, 197, 643, 1026, + 993, 994, 995, 996, 1028, 1029, 1061, 1059, 198, 531, + 1362, 997, 943, 474, 1070, 1039, 199, 1080, 1062, 200, + 944, 945, 946, 947, 384, 1408, 1064, 1078, 1275, 1110, + 531, 948, 1112, 1118, 1290, 1126, 948, 532, 1154, 201, + 1156, 202, 1157, 1158, 533, 992, 1162, 203, 204, 1652, + 1163,-32768, 534, 993, 994, 995, 996, 997, 532, 1537, + 1538, 1539, 1540, 535, 997, 533, 1223, 530, 1196, 1224, + 1541, 536, 531,-32768, 1199, 1202, 1205, 1208, 168, 532, + 1211, 168, 1214, 1217, 1220, 1227, 533, 1228, 1233, 1235, + 1236, 1237, 168, 168, 534, 168, 1258, 1252, 1253, 168, + 1259, 1260, 1263, 168, 168, 168, 168, 1533, 1265, 1268, + 1221, 1036, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1269, + 1272, 532, 1276, 1294, 1289, 760, 1541, 1292, 533, 1582, + 1298, 763, 1533, 1301, 1299, 1316, 534, 1534, 1535, 1536, + 1537, 1538, 1539, 1540, 1302, 1304, 1306, 535, 658, 537, + 1307, 1541, 1311, 1324, 1521, 536, 1320, 1322, 1325, 235, + 1326, 741, 168, 1327, 538, 1331, 1333, 1334, 1340, 1365, + 537, 1341, 1342, 190, 1343, 1344, 1251, 1345, 1251, 1251, + 1251, 1251, 1251, 1251, 1346, 538, 1414, 1367, 643, 643, + 1347, 537, 539, 1368, 190, 1348, 1349, 540, 541, 542, + 543, 544, 545, 546, 1372, 235, 538, 1441, 1350, 1351, + 1370, 547, 1352, 539, 1180, 190, 279, 1371, 1353, 1439, + 1354, 543, 544, 545, 546, 1406, 1355, 1404, 1373, 1400, + 1448, -834, 547, 537, 539, 1405, 1409, 1410, 1412, 1417, +-32768,-32768, 543, 544, 545, 546, 1420, 1418, 538, 1419, + 168, 168, 1437, 547, 168, 168, 1438, 168, 168, 1449, + 1455, 1450, 168, 1456, 1457, 1452, 168, 168, 1459, 1461, + 168, 1462, 168, 168, 168, 1466, 539, 1467, 1572, 168, + 168, 540, 541, 542, 543, 544, 545, 546, 1481, 1468, + 1470, 1471, 1472, 1477, 1398, 547, 1513, 168, 1303, 1487, + 1512, 235, 1036, 1517, 1518, 1524, 1520, 1525, 1526, 1251, + 1545, 1560, 1571, 1575, 1542, 1543, 168, 1251, 1546, 168, + 1550, 1251, 1553, 1251, 1554, 168, 1251, 1251, 1251, 1251, + 1251, 1251, 1251, 1251, 1651, 1555, 1251, 1541, 1596, 1556, + 1567, 279, 1577, 900, 1614, 1618, 1619, 1622, 1416, 1623, + 1629, 1603, 1634, 190, 1635, 1251, 1636, 168, 1637, 1669, + 1679, 1682, 1684, 1668, 279, 279, 279, 279, 279, 279, + 1685, 1381, 1690, 168, 1692, 1693, 1382, 263, 391, 855, + 1072, 1683, 431, 1262, 168, 1533, 643, 563, 1580, 1581, + 593,-32768,-32768, 1537, 1538, 1539, 1540, 1063, 807, 1440, + 1065, 1523, 1271, 168, 1541, 1615, 168, 168, 168, 1663, + 1680, 1656, 1274, 235, 1674, 1681, 1267, 1109, 251, 1108, + 575, 223, 411, 494, 463, 1383, 903, 1599, 1657, 1675, + 474, 1251, 1384, 1598, 455, 313, 1574, 1266, 1009, 513, + 1385, 261, 1012, 1058, 1036, 1382, 1015, 1641, 1121, 1606, + 1018, 1386, 1031, 190, 1021, 1475, 814, 823, 1024, 1387, + 279, 1688, 1027, 1318, 906, 1054, 1030, 808, 512, 279, + 279, 279, 279, 279, 279, 279, 279, 818, 279, 643, + 168, 168, 814, 310, 1573, 1632, 190, 1366, 0, 0, + 0, 0, 168, 0, 1383, 1042, 0, 0, 1661, 0, + 0, 1384, 0, 0, 0, 1251, 0, 1617, 0,-32768, + 0, 0, 168, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 0, 168, 168, 0, 0, 0, + 0, 168, 0, 0, 168, 168, 1647, 1388, 0, 0, + 1661, 168, 0, 0, 0, 0, 1096, 0, 0, 0, + 0, 0, 1389, 0, 0, 0, 1036, 0, 0, 0, + 279, 0, 661, 1381, 0, 0, 0, 0, 1382, 0, + 0, 1662, 0, 0, 0, 0, 0, 0, 0, 0, + 1390, 0, 1647, 0, 0, 1391, 1392, 1393, 1394, 1395, + 1396, 1397, 0, 0, 0, 0, 0, 0, 0, 1398, + 0, 0, 1399, 0, 168, 0, 1388, 0, 1194, 0, + 0, 0, 0, 1662, 0, 1689, 0, 1383, 0, 0, + 0, 1389, 513, 0, 1384, 0, 0, 168, 0, 168, + 0, 0, 1385, 0, 168, 0, 0, 278, 0, 0, + 0, 0, 0, 1386, 0, 0, 0, 0, 0, 1390, + 0, 1387, 0, 0, 0, 0, 311, 1394, 1395, 1396, + 1397, 0, 1190, 0, 0, 0, 0, 1194, 1398, 1197, + 1198, 0, 1200, 1201, 0, 1203, 1204, 0, 1206, 1207, + 0, 1209, 1210, 0, 1212, 1213, 0, 1215, 1216, 0, + 1218, 1219, 0, 0, 0, 0, 168, 0, 0, 0, + 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 168, 0, 0, 0, 1, 0, 168, + 0, 0, 2, 0, 168, 0, 0, 0, 0, 1388, + 0, 0, 3, 0, 0, 0, 4, 0, 5, 0, + 0, 1382, 0, 0, 1389, 0, 0, 0, 6, 0, + 7, 0, 0, 0, 8, 0, 9, 0, 10, 0, + 0, 0, 11, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 1390, 0, 0, 13, 0, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 0, 0, 0, 0, 172, 0, + 1383, 1398, 0, 0, 1483, 0, 0, 1384, 0, 0, + 173, 0, 174, 0, 1194, 1385, 0, 175, 0, 0, + 0, 0, 0, 0, 176, 177, 0, 0, 178, 0, + 14, 0, 15, 0, 1315, 16, 17, 0, 1317, 179, + 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, + -325, 0, 18, 0, 0, 0, 0, 0, 1194, 0, + 1194, 1194, 1194, 1194, 1194, 1194, 0, 19, 1336, 0, + 181, 0, -243, 0, 0, 20, 21, 0, 182, 183, + 0, 0, 0, 0, 0, 22, 23, 184, 0, 0, + 0, 0, 0, 0, 168, 0, 24, 25, 1194, 26, + 0, 0, 27, 0, 168, 0, 0, 168, 28, 168, + 0, 0, 1388, 0, 0, 0, 29, 168, 0, 0, + 0, 0, 0, 30, 168, 0, 0, 1389, 0, 31, + 168, 32, 168, 168, 168, 168, 0, 0, 0, 0, + 0, 168, 0, 0, 0, 0, 0, 168, 0, 0, + 0, 168, 1194, 0, 0, 1390, 0, 0, 33, 0, + 168,-32768,-32768, 1394, 1395, 1396, 1397, 0, 513, 683, + 168, 168, 168, 168, 1398, 0, 0, 168, 0, 168, + 168, 0, 0, 0, 1381, 168, 0, 0, 1460, 1382, + 0, 1194, 1463, 513, 168, 168, 0, 0, 761, 1194, + 1194, 0, 0, 1194, 0, 1194, 0, 0, 1194, 1194, + 1194, 1194, 1194, 1194, 1194, 1194, 0, 0, 1194, 0, + 0, 0, 0, 1194, 0, 0, 0, 0, 0, 0, + 530, 0, 0, 513, 0, 531, 0, 1194, 1383, 0, + 0, 0, 0, 0, 0, 1384, 1194, 1194, 1194, 1194, + 1194, 1194, 0, 1385, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1386, 0, 0, 0, 0, 0, + 0, 0, 1387, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 513, 0, 532, 513, 0, 0, 0, 1194, + 0, 533, 0, 0, 0, 0, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 1194, 0, 0, 0, 0, + 535, 1194, 0, 1194, 0, 0, 168, 168, 536, 0, + 168, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1295, 0, 0, 0, 1294, 1296, 1297, 1298, 1299, 1300, - 1301, 1302, 1293, 0, 0, 0, 0, 0, 0, 1303, - 0, 0, 1432, 0, 0, 0, 1287, 1294, 0, 0, - 0, 1088, 1295, 0, 0, 0, 0, 1296, 1297, 1298, - 1299, 1300, 1301, 1302, 0, 0, 0, 0, 0, 0, - 0, 1303, 0, 0, 0, 1295, 537, 772, 0, 0, - 1296, 1297, 1298, 1299, 1300, 1301, 1302, 0, 0, 0, - 0, 538, 1019, 0, 1303, 1288, 1022, 0, 0, 0, - 1025, 0, 1289, 0, 1028, 0, 0, 0, 1031, 0, - 1290, 0, 1034, 0, 0, 0, 1037, 0, 0, 539, - 1040, 0, 0, 0, 540, 541, 542, 543, 544, 545, - 546, 695, 695, 0, 0, 0, 0, 0, 547, 940, - 695, 695, 695, 695, 695, 695, 0, 168, 0, 168, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, - 0, 0, 168, 0, 168, 0, 0, 0, 0, 0, - 0, 0, 168, 0, 0, 0, 0, 773, 0, 168, - 695, 168, 474, 168, 168, 168, 168, 0, 0, 773, - 773, 773, 773, 773, 773, 168, 168, 0, 168, 0, - 0, 0, 0, 0, 168, 0, 1293, 0, 0, 0, - 168, 0, 0, 0, 168, 0, 0, 0, 0, 0, - 0, 1294, 0, 168, 168, 168, 168, 0, 0, 1286, - 168, 0, 168, 168, 1287, 0, 0, 0, 168, 0, - 0, 0, 0, 0, 0, 0, 513, 168, 168, 1295, - 0, 0, 0, 0, 474,-32768,-32768, 1299, 1300, 1301, - 1302, 0, 0, 0, 0, 0, 0, 1088, 1303, 1088, - 1088, 1088, 1088, 1088, 1088, 0, 0, 191, 0, 0, - 0, 0, 0, 1288, 0, 0, 513, 0, 0, 0, - 1289, 192, 0, 1327, 0, 0, 193, 0, 1290, 0, - 0, 0, 0, 194, 195, 0, 0, 196, 0, 1291, - 0, 0, 0, 0, 1224, 0, 0, 1292, 197, 0, - 0, 1230, 1231, 0, 1233, 1234, 198, 1236, 1237, 199, - 1239, 1240, 0, 1242, 1243, 513, 1245, 1246, 513, 1248, - 1249, 0, 1251, 1252, 0, 0, 0, 0, 0, 200, - 0, 201, 0, 0, 0, 0, 0, 202, 203, 0, + 0, 0, 1194, 683, 683, 683, 683, 168, 0, 513, + 1388, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 0, + 1194, 0, 0, 0, 0, 1389, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 0, 168, 1194, 0, + 0, 0, 0, 168, 0, 1194, 0, 1194, 0, 0, + 0, 0, 0, 1390, 0, 0, 537, 0, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 0, 0, 0, 0, 0, + 0, 538, 1398, 0, 0, 1578, 0, 0, 0, 0, + 761, 761, 761, 761, 761, 0, 0, 0, 0, 0, + 1194, 0, 1194, 0, 0, 0, 0, 761, 0, 539, + 0, 684, 1194, 0, 540, 541, 542, 543, 544, 545, + 546, 0, 0, 0, 0, 0, 0, 0, 547, 530, + 0, 1676, 0, 0, 531, 0, 0, 0, 0, 0, + 762, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 168, 0, 0, 168, 0, 0, 168, 0, 0, 0, - 0, 498, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1293, 0, 514, 0, 513, 517, - 0, 518, 519, 520, 524, 0, 0, 0, 0, 1294, - 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, - 0, 168, 168, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 168, 0, 0, 0, 168, 1295, 0, 0, - 0, 0, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 0, - 0, 0, 581, 0, 0, 0, 1303, 0, 0, 1549, - 168, 0, 0, 0, 0, 0, 1088, 0, 0, 0, - 0, 0, 0, 0, 1088, 0, 0, 0, 1088, 642, - 1088, 0, 0, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 0, 0, 1088, 0, 0, 0, 0, 0, 1088, - 1367, 0, 0, 0, 1369, 0, 0, 662, 1327, 1327, - 1327, 1327, 1327, 1327, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 682, 0, 0, 1388, 1497, 0, 0, 705, 0, 530, - 0, 0, 0, 0, 531, 0, 708, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 513, 0, 0, - 0, 755, 0, 0, 0, 781, 0, 785, 0, 0, - 789, 793, 797, 801, 805, 809, 813, 817, 0, 0, - 0, 0, 0, 168, 0, 168, 0, 0, 0, 0, - 0, 0, 0, 532, 0, 0, 0, 168, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, + 168, 0, 0, 532, 0, 0, 0, 0, 0, 0, 533, 0, 168, 0, 0, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 1327, 513, 0, 0, 696, 535, - 0, 0, 0, 0, 0, 0, 0, 536, 0, 0, - 0, 513, 1088, 0, 0, 0, 0, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, - 0, 1327, 0, 0, 0, 0, 0, 0, 0, 0, - 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 168, 1327, - 0, 0, 1510, 0, 168, 0, 1513, 0, 0, 0, - 0, 0, 0, 0, 474, 513, 0, 0, 914, 0, + 0, 0, 0, 0, 0, 0, 0, 168, 168, 535, + 0, 0, 0, 168, 0, 0, 0, 536, 0, 0, + 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, + 498, 0, 0, 0, 168, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 0, 514, 0, 0, 517, 168, + 518, 519, 520, 524, 0, 0, 0, 0, 0, 0, + 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 683, 683, 0, 0, 0, 0, 0, 0, 513, 683, + 683, 683, 683, 683, 683, 684, 684, 684, 684, 513, + 0, 0, 0, 0, 0, 537, 0, 0, 0, 0, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 538, 0, 0, 0, 0, 0, 761, 0, 0, 683, + 168, 0, 0, 0, 0, 0, 0, 630, 761, 761, + 761, 761, 761, 761, 0, 0, 0, 513, 539, 0, + 0, 0, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 0, 0, 513, 0, 650, 0, 547, -617, 0, + 0, 0, 762, 762, 762, 762, 762, 0, 0, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 670, 762, + 0, 0, 0, 0, 0, 693, 0, 0, 0, 0, + 0, 0, 0, 0, 696, 0, 1249, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 0, 0, 0, 743, + 0, 0, 0, 769, 0, 773, 0, 0, 777, 781, + 785, 789, 793, 797, 801, 805, 513, 0, 0, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 513, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 513, 537, 0, 0, 0, 0, 0, - 0, 0, 0, 1090, 513, 0, 0, 0, 0, 538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 705, 1088, 705, 705, 0, 0, 0, 0, - 0, 0, 984, 0, 0, 168, 0, 539, 0, 0, - 0, 0, 540, 541, 542, 543, 544, 545, 546, 0, - 0, 0, 0, 0, 513, 0, 547, 94, 341, 1677, - 513, 0, 0, 0, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 346, 0, 0, 0, 0, 0, - 1327, 0, 96, 0, 0, 0, 0, 0, 347, 0, - 0, 1000, 0, 0, 696, 696, 696, 696, 513, 0, - 168, 101, 102, 0, 0, 1016, 0, 0, 0, 524, - 0, 0, 353, 524, 0, 0, 0, 524, 168, 0, + 0, 0, 168, 0, 0, 168, 0, 530, 0, 0, + 0, 0, 531, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 513, 0, 168, 0, + 0, 168, 513, 513, 0, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 513, 513, 0, 0, 0, 0, + 0, 0, 513, 0, 904, 0, 168, 0, 0, 0, + 0, 532, 761, 0, 0, 0, 0, 0, 533, 0, + 0, 0, 684, 684, 0, 0, 534, 0, 0, 0, + 0, 684, 684, 684, 684, 684, 684, 535, 0, 0, + 0, 0, 0, 0, 0, 536, 0, 513, 693, 513, + 693, 693, 0, 0, 531, 0, 513, 1249, 974, 1249, + 1249, 1249, 1249, 1249, 1249, 0, 0, 0, 762, 0, + 168, 684, 0, 0, 0, 0, 0, 0, 0, 0, + 762, 762, 762, 762, 762, 762, 0, 0, 0, 1193, + 0, 0, 0, 0, 0, 0, 0, 1435, 0, 0, + 0, 0, 0, 532, 0, 0, 0, 0, 0, 0, + 533, 1447, 168, 0, 168, 0, 0, 990, 534, 0, + 0, 0, 0, 537, 0, 0, 0, 0, 0, 535, + 0, 1006, 0, 0, 0, 524, 0, 0, 538, 524, + 0, 0, 0, 524, 0, 0, 0, 524, 1250, 0, 0, 524, 0, 0, 0, 524, 0, 0, 0, 524, - 0, 0, 0, 524, 0, 112, 0, 524, 0, 513, - 0, 508, 509, 0, 0, 168, 0, 0, 0, 0, - 1090, 0, 0, 513, 513, 0, 0, 0, 0, 0, - 0, 513, 0, 117, 0, 168, 510, 581, 0, 0, - 0, 774, 774, 774, 774, 774, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 530, 0, 774, 0, - 168, 531, 0, 168, 0, 168, 513, 513, 0, 168, + 0, 0, 0, 524, 530, 0, 539, 0, 0, 531, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 0, + 0, 0, 0, 0, 0, 547, 930, 0, 0, 0, + 1249, 0, 0, 581, 0, 0, 0, 0, 1249, 0, + 0, 0, 1249, 0, 1249, 0, 0, 1249, 1249, 1249, + 1249, 1249, 1249, 1249, 1249, 537, 0, 1249, 532, 0, + 0, 0, 1435, 0, 0, 533, 0, 0, 0, 0, + 538, 0, 0, 534, 0, 0, 1249, 530, 0, 0, + 835, 0, 531, 0, 535, 1435, 1435, 1435, 1435, 1435, + 1435, 0, 536, 0, 0, 0, 0, 0, 539, 0, + 0, 0, 0, 540, 541, 542, 543, 544, 545, 546, + 836, 1130, 0, 0, 0, 0, 0, 547, 0, 0, + 1133, 0, 0, 0, 762, 1339, 0, 0, 0, 1134, + 0, 532, 0, 0, 0, 693, 0, 0, 533, 0, + 0, 0, 0, 0, 0, 0, 534, 0, 0, 0, + 0, 0, 1249, 0, 0, 0, 0, 535, 0, 0, + 1160, 0, 0, 0, 0, 536, 0, 0, 0, 1250, + 537, 1250, 1250, 1250, 1250, 1250, 1250, 0, 0, 0, + 0, 1435, 0, 693, 0, 538, 0, 0, 0, 0, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 0, 1435, + 0, 0, 0, 837, 0, 0, 0, 0, 0, 1436, + 0, 0, 0, 539, 0, 0, 0, 0, 540, 541, + 542, 543, 544, 545, 546, 0, 1249, 0, 0, 530, + 0, 0, 547, -616, 531, 0, 0, 0, 0, 0, + 0, 0, 0, 537, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 538, 0, + 0, 0, 0, 1469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 513, 0, 513, 0, 0, 0, 513, 0, 1090, - 0, 1090, 1090, 1090, 1090, 1090, 1090, 0, 0, 0, - 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, - 532, 0, 0, 1164, 0, 1090, 0, 533, 0, 0, - 0, 0, 1167, 0, 0, 534, 0, 0, 0, 0, - 168, 1168, 0, 0, 0, 0, 535, 705, 0, 1089, - 0, 0, 0, 0, 536, 0, 0, 0, 0, 0, + 0, 1435, 0, 532, 0, 0, 539, 0, 0, 0, + 533, 540, 541, 542, 543, 544, 545, 546, 534, 0, + 0, 0, 1250, 0, 0, 547, 0, 0, 0, 535, + 1250, 1486, 0, 0, 1250, 0, 1250, 536, 0, 1250, + 1250, 1250, 1250, 1250, 1250, 1250, 1250, 0, 0, 1250, + 0, 0, 0, 0, 1436, 0, 0, 0, 693, 693, + 693, 0, 0, 0, 0, 0, 0, 0, 1250, 0, + 0, 0, 0, 0, 0, 0, 0, 1436, 1436, 1436, + 1436, 1436, 1436, 0, 0, 1319, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 693, 693, 693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1194, 0, 0, 0, 168, 0, 168, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 705, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 696, - 696, 537, 0, 0, 0, 0, 0, 0, 696, 696, - 696, 696, 696, 696, 0, 0, 538, 0, 0, 1090, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 539, 774, 0, 0, 696, 540, - 541, 542, 543, 544, 545, 546, 0, 774, 774, 774, - 774, 774, 774, 547, -614, 0, 1227, 0, 1090, 0, - 0, 0, 0, 0, 0, 0, 1090, 1090, 0, 0, - 1090, 0, 1090, 0, 0, 1090, 1090, 1090, 1090, 1090, - 1090, 1090, 1090, 0, 0, 1090, 0, 0, 0, 0, - 0, 1090, 0, 0, 0, 0, 0, 0, 0, 0, - 1090, 1090, 1090, 1090, 1090, 1090, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1089, 0, 1089, 1089, 1089, - 1089, 1089, 1089, 0, 705, 705, 705, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1328, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1371, 0, 0, 0, 0, 1090, 0, 0, 0, - 0, 705, 705, 705, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1090, 0, 0, 530, - 0, 0, 847, 0, 531, 0, 1090, 0, 0, 0, - 0, 0, 1090, 0, 1090, 530, 0, 0, 0, 0, - 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 848, 1090, 0, 0, 0, 0, 0, 0, - 0, 0, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, - 0, 1090, 0, 532, 0, 0, 0, 0, 0, 0, - 533, 0, 0, 0, 774, 1391, 0, 0, 534, 532, - 0, 0, 0, 0, 0, 0, 533, 0, 0, 535, - 0, 0, 0, 0, 534, 0, 0, 536, 0, 0, - 0, 1090, 0, 0, 0, 535, 0, 0, 0, 0, - 0, 0, 0, 536, 0, 0, 1090, 0, 0, 0, - 0, 0, 0, 1090, 1089, 1090, 530, 0, 918, 0, - 0, 531, 1089, 1435, 849, 0, 1089, 0, 1089, 0, - 0, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 0, - 0, 1089, 0, 0, 0, 0, 0, 1089, 0, 0, - 0, 0, 0, 0, 0, 0, 1328, 1328, 1328, 1328, - 1328, 1328, 0, 1090, 537, 1090, 0, 0, 0, 0, - 532, 1530, 1090, 0, 0, 0, 0, 533, 0, 538, - 537, 0, 0, 0, 0, 534, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 538, 535, 0, 0, 0, - 0, 0, 0, 0, 536, 0, 0, 539, 0, 0, - 0, 0, 540, 541, 542, 543, 544, 545, 546, 0, - 0, 0, 1519, 539, 0, 0, 547, 0, 540, 541, - 542, 543, 544, 545, 546, 0, 971, 0, 0, 0, - 0, 972, 547, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1328, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1435, 0, 0, 0, 0, 0, 1435, 0, - 1089, 537, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 538, 0, 0, 1328, - 0, 0, 0, 0, 0, 0, 0, 0, 1328, 1328, - 1328, 1328, 1328, 1328, 1328, 1328, 0, 1328, 0, 0, - 0, 0, 0, 0, 539, 0, 0, 0, 0, 540, - 541, 542, 543, 544, 545, 546, 92, 93, 0, 0, - 0, 0, 0, 547, 0, 0, 0, 0, 0, 0, - 332, 333, 334, 335, 0, 0, 336, 1588, 0, 0, - 0, 0, 0, 231, 337, 338, 339, 340, 0, 94, - 341, 0, 1435, 0, 0, 0, 342, 0, 0, 1435, - 0, 1089, 343, 344, 345, 0, 346, 0, 0, 0, - 0, 0, 1662, 0, 96, 0, 0, 97, 0, 0, - 347, 0, 0, 0, 0, 98, 99, 0, 0, 0, - 0, 0, 100, 101, 102, 0, 348, 0, 349, 103, - 0, 350, 351, 352, 353, 104, 0, 105, 106, 1435, - 0, 1435, 0, 354, 0, 0, 107, 108, 1328, 0, + 0, 0, 0, 0, 0, 537, 0, 0, 0, 0, + 1557, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 538, 0, 0, 0, 0, 0, 1486, 0, 0, 0, + 0, 0, 1486, 0, 1250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 539, 0, + 0, 0, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 961, 0, 1436, 0, 0, 962, 547, 0, 0, + 0, 0, 1436, 1436, 1436, 1436, 1436, 1436, 1436, 1436, + 0, 1436, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 93, 0, 1486, + 0, 0, 0, 0, 0, 0, 1486, 0, 1250, 0, + 333, 334, 335, 336, 0, 0, 337, 0, 0, 0, + 0, 0, 0, 232, 338, 339, 340, 341, 0, 94, + 342, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 344, 345, 346, 0, 347, 0, 0, 0, + 0, 1486, 0, 1486, 96, 0, 0, 97, 0, 0, + 348, 0, 0, 1436, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 1480, 350, 103, + 0, 351, 352, 353, 354, 104, 0, 105, 106, 0, + 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, - 355, 0, 0, 356, 357, 115, 116, 0, 0, 0, - 358, 359, 0, 0, 0, 360, 0, 0, 361, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 362, 0, - 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, - 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, - 142, 0, 143, 144, 0, 232, 145, 146, 0, 147, - 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, - 156, 157, 158, 159, 363, 0, 160, 161, 162, 163, - 164, 0, 0, 0, 165, 0, 166, 364, 245, 365, - 322, 366, 367, 0, 0, 0, 0, 0, 368, 827, - 0, 370, 371, 372, 92, 93, 0, 0, 0, 0, - 373, 828, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 0, 0, 336, 0, 0, 0, 0, 0, - 0, 231, 337, 338, 339, 340, 0, 94, 341, 0, - 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, - 343, 344, 345, 0, 346, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 97, 0, 0, 347, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 348, 0, 349, 103, 0, 350, - 351, 352, 353, 104, 0, 105, 106, 0, 0, 0, - 0, 354, 0, 0, 107, 108, 0, 0, 109, 0, - 110, 0, 0, 0, 111, 112, 0, 0, 355, 0, - 0, 356, 357, 115, 116, 0, 0, 0, 358, 359, - 0, 0, 0, 360, 0, 0, 361, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 362, 0, 121, 122, - 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, - 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, - 143, 144, 0, 232, 145, 146, 0, 147, 0, 148, - 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 363, 0, 160, 161, 162, 163, 164, 0, - 0, 0, 165, 0, 166, 364, 245, 365, 322, 366, - 367, 0, 0, 0, 0, 0, 368, 92, 93, 370, - 371, 372, 0, 0, 0, 0, 0, 0, 373, 1185, - 0, 332, 333, 334, 335, 0, 0, 336, 0, 0, - 0, 0, 0, 0, 231, 337, 338, 339, 340, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 343, 344, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 350, 351, 352, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 354, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 355, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 358, 359, 0, 0, 0, 360, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, + 356, 0, 0, 0, 357, 358, 115, 116, 0, 0, + 0, 359, 360, 0, 0, 0, 361, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, + 0, 142, 0, 143, 144, 0, 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 365, 322, 366, 367, 0, 0, 0, 0, 0, 368, - 92, 93, 370, 371, 372, 0, 0, 0, 0, 0, - 0, 373, 1222, 0, 0, 1313, 334, 335, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1314, 1315, - 1316, 1317, 0, 94, 341, 0, 0, 0, 0, 0, - 342, 0, 0, 0, 0, 0, 0, 0, 345, 0, - 346, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 97, 0, 0, 347, 0, 0, 0, 0, 98, + 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 365, 246, + 366, 323, 367, 368, 0, 0, 0, 0, 0, 369, + 815, 0, 371, 372, 373, 0, 92, 93, 0, 0, + 0, 374, 816, 0, 0, 0, 0, 0, 0, 0, + 333, 334, 335, 336, 0, 0, 337, 0, 0, 0, + 0, 0, 0, 232, 338, 339, 340, 341, 0, 94, + 342, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 344, 345, 346, 0, 347, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 0, 350, 103, + 0, 351, 352, 353, 354, 104, 0, 105, 106, 0, + 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, + 356, 0, 0, 1658, 357, 358, 115, 116, 0, 0, + 0, 359, 360, 0, 0, 0, 361, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 363, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 0, 142, 0, 143, 144, 0, 233, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 365, 246, + 366, 323, 367, 368, 0, 0, 0, 0, 0, 369, + 92, 93, 371, 372, 373, 0, 0, 0, 0, 0, + 0, 374, 1151, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, - 348, 0, 349, 103, 0, 0, 0, 0, 353, 104, - 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, + 349, 0, 350, 103, 0, 351, 352, 353, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, - 111, 112, 0, 0, 0, 0, 0, 356, 357, 115, - 116, 0, 0, 0, 0, 359, 0, 0, 0, 1319, - 0, 0, 361, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 362, 0, 121, 122, 0, 123, 124, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 92, 93, 371, 372, 373, 0, + 0, 0, 0, 0, 0, 374, 1188, 0, 0, 1421, + 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1422, 1423, 1424, 1425, 0, 94, 342, 0, + 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, + 0, 0, 346, 0, 347, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 97, 0, 0, 348, 0, + 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 100, 101, 102, 0, 349, 0, 350, 103, 0, 0, + 0, 0, 354, 104, 0, 105, 106, 0, 0, 0, + 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, + 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, + 0, 0, 357, 358, 115, 116, 0, 0, 0, 0, + 360, 0, 0, 0, 1427, 0, 0, 362, 0, 0, + 0, 0, 0, 0, 117, 118, 119, 363, 0, 121, + 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, + 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, + 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, + 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, + 157, 158, 159, 364, 0, 160, 161, 162, 163, 164, + 0, 0, 0, 165, 0, 166, 365, 246, 1428, 323, + 367, 368, 0, 0, 0, 0, 0, 1429, 92, 93, + 1430, 1431, 1432, 0, 0, 0, 0, 0, 0, 1433, + 1592, 0, 0, 1239, 335, 336, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 94, 342, 0, 0, 0, 0, 0, 343, 0, + 0, 0, 0, 0, 0, 0, 346, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, + 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 0, 349, 0, + 350, 103, 0, 1240, 0, 1241, 354, 104, 0, 105, + 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 357, 358, 115, 116, + 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, + 0, 362, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, + 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, + 365, 246, 1242, 323, 367, 368, 0, 0, 0, 92, + 93, 1243, 0, 0, 1244, 1245, 1246, 0, 0, 0, + 0, 0, 0, 1247, 1506, 335, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 602, 0, 0, 0, 0, 0, 603, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 604, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, + 0, 0, 0, 0, 0, 100, 101, 102, 0, 349, + 0, 350, 103, 0, 0, 0, 0, 605, 104, 0, + 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, + 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, + 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 362, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, - 153, 154, 0, 155, 156, 157, 158, 159, 363, 0, - 160, 161, 162, 163, 164, 0, 0, 0, 165, 0, - 166, 364, 245, 1320, 322, 366, 367, 0, 0, 0, - 0, 0, 1321, 92, 93, 1322, 1323, 1324, 0, 0, - 0, 0, 0, 0, 1325, 1563, 0, 0, 1078, 334, - 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 341, 0, 0, - 0, 0, 0, 342, 0, 0, 0, 0, 0, 0, - 0, 345, 0, 346, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 97, 0, 0, 347, 0, 0, - 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, - 101, 102, 0, 348, 0, 349, 103, 0, 1079, 0, - 1080, 353, 104, 0, 105, 106, 0, 0, 0, 0, - 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, - 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, - 356, 357, 115, 116, 0, 0, 0, 0, 359, 0, - 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, - 0, 0, 117, 118, 119, 362, 0, 121, 122, 0, - 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, - 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, - 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, - 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, - 159, 363, 0, 160, 161, 162, 163, 164, 0, 0, - 0, 165, 0, 166, 364, 245, 1081, 322, 366, 367, - 0, 0, 0, 92, 93, 1082, 0, 0, 1083, 1084, - 1085, 0, 0, 0, 0, 0, 0, 1086, 1455, 334, - 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 94, 616, 0, 0, - 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 618, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, - 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, - 101, 102, 0, 348, 0, 349, 103, 0, 0, 0, - 0, 619, 104, 0, 105, 106, 0, 0, 0, 0, - 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, - 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 361, 0, 0, 0, 0, - 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, - 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, - 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, - 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, - 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, - 159, 92, 93, 160, 161, 162, 163, 164, 0, 0, - 0, 165, 701, 166, 167, 332, 333, 334, 335, 0, - 0, 336, 0, 0, 0, 0, 0, 0, 231, 337, - 338, 339, 340, 0, 94, 341, 0, 0, 620, 0, - 0, 342, 0, 0, 0, 0, 0, 343, 344, 345, - 0, 346, 0, 0, 702, 0, 0, 0, 0, 96, - 0, 0, 97, 0, 0, 347, 0, 0, 0, 0, - 98, 99, 703, 0, 0, 0, 0, 100, 101, 102, - 0, 348, 0, 349, 103, 0, 350, 351, 352, 353, - 104, 0, 105, 106, 0, 0, 0, 0, 354, 0, - 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, - 0, 111, 112, 0, 0, 355, 0, 0, 356, 357, - 115, 116, 0, 704, 0, 358, 359, 0, 0, 0, - 360, 0, 0, 361, 0, 0, 0, 0, 0, 0, - 117, 118, 119, 362, 0, 121, 122, 0, 123, 124, + 153, 154, 0, 155, 156, 157, 158, 159, 92, 93, + 160, 161, 162, 163, 164, 0, 0, 0, 165, 689, + 166, 167, 333, 334, 335, 336, 0, 0, 337, 0, + 0, 0, 0, 0, 0, 232, 338, 339, 340, 341, + 0, 94, 342, 0, 0, 606, 0, 0, 343, 0, + 0, 0, 0, 0, 344, 345, 346, 0, 347, 0, + 0, 690, 0, 0, 0, 0, 96, 0, 0, 97, + 0, 0, 348, 0, 0, 0, 0, 98, 99, 691, + 0, 0, 0, 0, 100, 101, 102, 0, 349, 0, + 350, 103, 0, 351, 352, 353, 354, 104, 0, 105, + 106, 0, 0, 0, 0, 355, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 0, 0, 356, 0, 0, 0, 357, 358, 115, 116, + 0, 692, 0, 359, 360, 0, 0, 0, 361, 0, + 0, 362, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 0, 142, 0, 143, 144, 0, 233, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, + 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, + 365, 246, 366, 323, 367, 368, 0, 0, 0, 0, + 0, 369, 0, 0, 371, 372, 373, 92, 93, 0, + 0, 0, 0, 374, 0, 0, 0, 0, 1139, 0, + 0, 333, 334, 335, 336, 0, 0, 337, 0, 0, + 0, 0, 0, 0, 232, 338, 339, 340, 341, 0, + 94, 342, 0, 0, 0, 0, 0, 343, 0, 0, + 0, 0, 0, 344, 345, 346, 0, 347, 0, 0, + 690, 0, 0, 0, 0, 96, 0, 0, 97, 0, + 0, 348, 0, 0, 0, 0, 98, 99, 1140, 0, + 0, 0, 0, 100, 101, 102, 0, 349, 0, 350, + 103, 0, 351, 352, 353, 354, 104, 0, 105, 106, + 0, 0, 0, 0, 355, 0, 0, 107, 108, 0, + 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, + 0, 356, 0, 0, 0, 357, 358, 115, 116, 0, + 1141, 0, 359, 360, 0, 0, 0, 361, 0, 0, + 362, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, + 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 0, 142, 0, 143, 144, 0, 233, 145, 146, + 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, + 0, 155, 156, 157, 158, 159, 364, 0, 160, 161, + 162, 163, 164, 0, 0, 0, 165, 0, 166, 365, + 246, 366, 323, 367, 368, 0, 0, 0, 0, 0, + 369, 0, 0, 371, 372, 373, 92, 93, 0, 0, + 0, 0, 374, 0, 0, 0, 0, 1176, 0, 0, + 333, 334, 335, 336, 0, 0, 337, 0, 0, 0, + 0, 0, 0, 232, 338, 339, 340, 341, 0, 94, + 342, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 344, 345, 346, 0, 347, 0, 0, 690, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 348, 0, 0, 0, 0, 98, 99, 1177, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 0, 350, 103, + 0, 351, 352, 353, 354, 104, 0, 105, 106, 0, + 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, + 356, 0, 0, 0, 357, 358, 115, 116, 0, 1178, + 0, 359, 360, 0, 0, 0, 361, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 363, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 0, 142, 0, 143, 144, 0, 233, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 365, 246, + 366, 323, 367, 368, 0, 0, 0, 0, 0, 369, + 92, 93, 371, 372, 373, 0, 0, 0, 0, 0, + 0, 374, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 353, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, - 232, 145, 146, 0, 147, 0, 148, 149, 150, 151, - 152, 153, 154, 0, 155, 156, 157, 158, 159, 363, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, - 0, 166, 364, 245, 365, 322, 366, 367, 0, 0, - 0, 0, 0, 368, 0, 0, 370, 371, 372, 92, - 93, 0, 0, 0, 0, 373, 0, 0, 0, 0, - 1173, 0, 0, 332, 333, 334, 335, 0, 0, 336, - 0, 0, 0, 0, 0, 0, 231, 337, 338, 339, - 340, 0, 94, 341, 0, 0, 0, 0, 0, 342, - 0, 0, 0, 0, 0, 343, 344, 345, 0, 346, - 0, 0, 702, 0, 0, 0, 0, 96, 0, 0, - 97, 0, 0, 347, 0, 0, 0, 0, 98, 99, - 1174, 0, 0, 0, 0, 100, 101, 102, 0, 348, - 0, 349, 103, 0, 350, 351, 352, 353, 104, 0, - 105, 106, 0, 0, 0, 0, 354, 0, 0, 107, - 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, - 112, 0, 0, 355, 0, 0, 356, 357, 115, 116, - 0, 1175, 0, 358, 359, 0, 0, 0, 360, 0, - 0, 361, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 362, 0, 121, 122, 0, 123, 124, 0, 125, - 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 0, 0, 142, 0, 143, 144, 0, 232, 145, - 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, - 154, 0, 155, 156, 157, 158, 159, 363, 0, 160, - 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, - 364, 245, 365, 322, 366, 367, 0, 0, 0, 0, - 0, 368, 0, 0, 370, 371, 372, 92, 93, 0, - 0, 0, 0, 373, 0, 0, 0, 0, 1210, 0, - 0, 332, 333, 334, 335, 0, 0, 336, 0, 0, - 0, 0, 0, 0, 231, 337, 338, 339, 340, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 343, 344, 345, 0, 346, 0, 0, - 702, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 1211, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 350, 351, 352, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 354, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 355, 0, 0, 356, 357, 115, 116, 0, 1212, - 0, 358, 359, 0, 0, 0, 360, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 365, 322, 366, 367, 0, 0, 0, 0, 0, 368, - 92, 93, 370, 371, 372, 0, 0, 0, 0, 0, - 0, 373, 0, 0, 332, 333, 334, 335, 0, 0, - 336, 0, 0, 0, 0, 0, 0, 231, 337, 338, - 339, 340, 0, 94, 341, 0, 0, 0, 0, 0, - 342, 0, 0, 0, 0, 0, 343, 344, 345, 0, - 346, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 97, 0, 0, 347, 0, 0, 0, 0, 98, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 370, 0, 371, 372, 373, 0, + 92, 93, 0, 778, 0, 374, 779, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, - 348, 0, 349, 103, 0, 350, 351, 352, 353, 104, - 0, 105, 106, 0, 0, 0, 0, 354, 0, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, - 111, 112, 0, 0, 355, 0, 0, 356, 357, 115, - 116, 0, 0, 0, 358, 359, 0, 0, 0, 360, - 0, 0, 361, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 362, 0, 121, 122, 0, 123, 124, 0, - 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, - 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 0, 0, 142, 0, 143, 144, 0, 232, - 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, - 153, 154, 0, 155, 156, 157, 158, 159, 363, 0, - 160, 161, 162, 163, 164, 0, 0, 0, 165, 0, - 166, 364, 245, 365, 322, 366, 367, 0, 0, 0, - 0, 0, 368, 369, 0, 370, 371, 372, 0, 92, - 93, 0, 790, 0, 373, 791, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 0, 0, 336, - 0, 0, 0, 0, 0, 0, 231, 337, 338, 339, - 340, 0, 94, 341, 0, 0, 0, 0, 0, 342, - 0, 0, 0, 0, 0, 343, 344, 345, 0, 346, - 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 97, 0, 0, 347, 0, 0, 0, 0, 98, 99, - 0, 0, 0, 0, 0, 100, 101, 102, 0, 348, - 0, 349, 103, 0, 350, 351, 0, 353, 104, 0, - 105, 106, 0, 0, 0, 0, 354, 0, 0, 107, - 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, - 112, 0, 0, 355, 0, 0, 356, 357, 115, 116, - 0, 0, 0, 358, 359, 0, 0, 0, 360, 0, - 0, 361, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 362, 0, 121, 122, 0, 123, 124, 0, 125, - 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 0, 0, 142, 0, 143, 144, 0, 232, 145, - 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, - 154, 0, 155, 156, 157, 158, 159, 363, 0, 160, - 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, - 364, 245, 365, 322, 366, 367, 0, 0, 0, 0, - 0, 368, 0, 0, 370, 371, 372, 0, 92, 93, - 0, 794, 0, 792, 795, 0, 0, 0, 0, 0, - 0, 0, 332, 333, 334, 335, 0, 0, 336, 0, - 0, 0, 0, 0, 0, 231, 337, 338, 339, 340, - 0, 94, 341, 0, 0, 0, 0, 0, 342, 0, - 0, 0, 0, 0, 343, 344, 345, 0, 346, 0, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, - 0, 0, 347, 0, 0, 0, 0, 98, 99, 0, - 0, 0, 0, 0, 100, 101, 102, 0, 348, 0, - 349, 103, 0, 350, 351, 0, 353, 104, 0, 105, - 106, 0, 0, 0, 0, 354, 0, 0, 107, 108, - 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, - 0, 0, 355, 0, 0, 356, 357, 115, 116, 0, - 0, 0, 358, 359, 0, 0, 0, 360, 0, 0, - 361, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 362, 0, 121, 122, 0, 123, 124, 0, 125, 0, - 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 0, 0, 142, 0, 143, 144, 0, 232, 145, 146, - 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, - 0, 155, 156, 157, 158, 159, 363, 0, 160, 161, - 162, 163, 164, 0, 0, 0, 165, 0, 166, 364, - 245, 365, 322, 366, 367, 0, 0, 0, 0, 0, - 368, 0, 0, 370, 371, 372, 0, 92, 93, 0, - 798, 0, 796, 799, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 0, 0, 336, 0, 0, - 0, 0, 0, 0, 231, 337, 338, 339, 340, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 343, 344, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 350, 351, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 354, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 355, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 358, 359, 0, 0, 0, 360, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 365, 322, 366, 367, 0, 0, 0, 0, 0, 368, - 0, 0, 370, 371, 372, 0, 92, 93, 0, 802, - 0, 800, 803, 0, 0, 0, 0, 0, 0, 0, - 332, 333, 334, 335, 0, 0, 336, 0, 0, 0, - 0, 0, 0, 231, 337, 338, 339, 340, 0, 94, - 341, 0, 0, 0, 0, 0, 342, 0, 0, 0, - 0, 0, 343, 344, 345, 0, 346, 0, 0, 0, - 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, - 347, 0, 0, 0, 0, 98, 99, 0, 0, 0, - 0, 0, 100, 101, 102, 0, 348, 0, 349, 103, - 0, 350, 351, 0, 353, 104, 0, 105, 106, 0, - 0, 0, 0, 354, 0, 0, 107, 108, 0, 0, - 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, - 355, 0, 0, 356, 357, 115, 116, 0, 0, 0, - 358, 359, 0, 0, 0, 360, 0, 0, 361, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 362, 0, - 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, - 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, - 142, 0, 143, 144, 0, 232, 145, 146, 0, 147, - 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, - 156, 157, 158, 159, 363, 0, 160, 161, 162, 163, - 164, 0, 0, 0, 165, 0, 166, 364, 245, 365, - 322, 366, 367, 0, 0, 0, 0, 0, 368, 0, - 0, 370, 371, 372, 0, 92, 93, 0, 806, 0, - 804, 807, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 0, 0, 336, 0, 0, 0, 0, - 0, 0, 231, 337, 338, 339, 340, 0, 94, 341, - 0, 0, 0, 0, 0, 342, 0, 0, 0, 0, - 0, 343, 344, 345, 0, 346, 0, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 97, 0, 0, 347, - 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, - 0, 100, 101, 102, 0, 348, 0, 349, 103, 0, - 350, 351, 0, 353, 104, 0, 105, 106, 0, 0, - 0, 0, 354, 0, 0, 107, 108, 0, 0, 109, - 0, 110, 0, 0, 0, 111, 112, 0, 0, 355, - 0, 0, 356, 357, 115, 116, 0, 0, 0, 358, - 359, 0, 0, 0, 360, 0, 0, 361, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 362, 0, 121, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 782, 0, 780, 783, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 786, 0, 784, 787, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 790, 0, 788, 791, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 794, 0, 792, 795, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 798, 0, 796, 799, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 0, 0, 371, 372, 373, 0, + 92, 93, 0, 802, 0, 800, 803, 0, 0, 0, + 0, 0, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, + 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 0, 0, 369, 92, 93, 371, 372, 373, 0, + 0, 0, 0, 0, 0, 804, 0, 0, 333, 334, + 335, 336, 0, 0, 337, 0, 0, 0, 0, 0, + 0, 232, 338, 339, 340, 341, 0, 94, 342, 0, + 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, + 344, 345, 346, 0, 347, 0, 0, 690, 0, 0, + 0, 0, 96, 0, 0, 97, 0, 0, 348, 0, + 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 100, 101, 102, 0, 349, 0, 350, 103, 0, 351, + 352, 353, 354, 104, 0, 105, 106, 0, 0, 0, + 0, 355, 0, 0, 107, 108, 0, 0, 109, 0, + 110, 0, 0, 0, 111, 112, 0, 0, 356, 0, + 0, 0, 357, 358, 115, 116, 0, 0, 0, 359, + 360, 0, 0, 0, 361, 0, 0, 362, 0, 0, + 0, 0, 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, - 0, 143, 144, 0, 232, 145, 146, 0, 147, 0, + 0, 143, 144, 0, 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, - 157, 158, 159, 363, 0, 160, 161, 162, 163, 164, - 0, 0, 0, 165, 0, 166, 364, 245, 365, 322, - 366, 367, 0, 0, 0, 0, 0, 368, 0, 0, - 370, 371, 372, 0, 92, 93, 0, 810, 0, 808, - 811, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 0, 0, 336, 0, 0, 0, 0, 0, - 0, 231, 337, 338, 339, 340, 0, 94, 341, 0, - 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, - 343, 344, 345, 0, 346, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 97, 0, 0, 347, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 348, 0, 349, 103, 0, 350, - 351, 0, 353, 104, 0, 105, 106, 0, 0, 0, - 0, 354, 0, 0, 107, 108, 0, 0, 109, 0, - 110, 0, 0, 0, 111, 112, 0, 0, 355, 0, - 0, 356, 357, 115, 116, 0, 0, 0, 358, 359, - 0, 0, 0, 360, 0, 0, 361, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 362, 0, 121, 122, - 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, - 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, - 143, 144, 0, 232, 145, 146, 0, 147, 0, 148, - 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 363, 0, 160, 161, 162, 163, 164, 0, - 0, 0, 165, 0, 166, 364, 245, 365, 322, 366, - 367, 0, 0, 0, 0, 0, 368, 0, 0, 370, - 371, 372, 0, 92, 93, 0, 814, 0, 812, 815, - 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, - 335, 0, 0, 336, 0, 0, 0, 0, 0, 0, - 231, 337, 338, 339, 340, 0, 94, 341, 0, 0, - 0, 0, 0, 342, 0, 0, 0, 0, 0, 343, - 344, 345, 0, 346, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 97, 0, 0, 347, 0, 0, - 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, - 101, 102, 0, 348, 0, 349, 103, 0, 350, 351, - 0, 353, 104, 0, 105, 106, 0, 0, 0, 0, - 354, 0, 0, 107, 108, 0, 0, 109, 0, 110, - 0, 0, 0, 111, 112, 0, 0, 355, 0, 0, - 356, 357, 115, 116, 0, 0, 0, 358, 359, 0, - 0, 0, 360, 0, 0, 361, 0, 0, 0, 0, - 0, 0, 117, 118, 119, 362, 0, 121, 122, 0, + 157, 158, 159, 364, 0, 160, 161, 162, 163, 164, + 0, 0, 0, 165, 0, 166, 365, 246, 366, 323, + 367, 368, 0, 0, 0, 0, 0, 369, 92, 93, + 371, 372, 373, 0, 0, 0, 0, 0, 0, 374, + 0, 0, 333, 334, 335, 336, 0, 0, 337, 0, + 0, 0, 0, 0, 0, 232, 338, 339, 340, 341, + 0, 94, 342, 0, 0, 0, 0, 0, 343, 0, + 0, 0, 0, 0, 344, 345, 346, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, + 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 0, 349, 0, + 350, 103, 0, 351, 352, 353, 354, 104, 0, 105, + 106, 0, 0, 0, 0, 355, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 16, 0, 356, 0, 0, 0, 357, 358, 115, 116, + 0, 0, 0, 359, 360, 0, 0, 0, 361, 0, + 0, 362, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 0, 142, 0, 143, 144, 0, 233, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, + 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, + 365, 246, 366, 323, 367, 368, 0, 0, 0, 0, + 0, 369, 92, 93, 371, 372, 373, 0, 0, 0, + 0, 0, 0, 374, 0, 0, 333, 334, 335, 336, + 0, 0, 337, 0, 0, 0, 0, 0, 0, 232, + 338, 339, 340, 341, 0, 94, 342, 0, 0, 0, + 0, 0, 343, 0, 0, 0, 0, 0, 344, 345, + 346, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 97, 0, 0, 348, 0, 0, 0, + 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, + 102, 0, 349, 0, 350, 103, 0, 351, 352, 353, + 354, 104, 0, 105, 106, 0, 0, 0, 0, 355, + 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, + 0, 0, 111, 112, 0, 0, 356, 0, 0, 0, + 357, 358, 115, 116, 0, 0, 0, 359, 360, 0, + 0, 0, 361, 0, 0, 362, 0, 0, 0, 0, + 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, - 144, 0, 232, 145, 146, 0, 147, 0, 148, 149, + 144, 0, 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, - 159, 363, 0, 160, 161, 162, 163, 164, 0, 0, - 0, 165, 0, 166, 364, 245, 365, 322, 366, 367, - 0, 0, 0, 0, 0, 368, 92, 93, 370, 371, - 372, 0, 0, 0, 0, 0, 0, 816, 0, 0, - 332, 333, 334, 335, 0, 0, 336, 0, 0, 0, - 0, 0, 0, 231, 337, 338, 339, 340, 0, 94, - 341, 0, 0, 0, 0, 0, 342, 0, 0, 0, - 0, 0, 343, 344, 345, 0, 346, 0, 0, 702, - 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, - 347, 0, 0, 0, 0, 98, 99, 0, 0, 0, - 0, 0, 100, 101, 102, 0, 348, 0, 349, 103, - 0, 350, 351, 352, 353, 104, 0, 105, 106, 0, - 0, 0, 0, 354, 0, 0, 107, 108, 0, 0, - 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, - 355, 0, 0, 356, 357, 115, 116, 0, 0, 0, - 358, 359, 0, 0, 0, 360, 0, 0, 361, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 362, 0, - 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, - 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, - 142, 0, 143, 144, 0, 232, 145, 146, 0, 147, - 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, - 156, 157, 158, 159, 363, 0, 160, 161, 162, 163, - 164, 0, 0, 0, 165, 0, 166, 364, 245, 365, - 322, 366, 367, 0, 0, 0, 0, 0, 368, 92, - 93, 370, 371, 372, 0, 0, 0, 0, 0, 0, - 373, 0, 0, 332, 333, 334, 335, 0, 0, 336, - 0, 0, 0, 0, 0, 0, 231, 337, 338, 339, - 340, 0, 94, 341, 0, 0, 0, 0, 0, 342, - 0, 0, 0, 0, 0, 343, 344, 345, 0, 346, - 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 97, 0, 0, 347, 0, 0, 0, 0, 98, 99, - 0, 0, 0, 0, 0, 100, 101, 102, 0, 348, - 0, 349, 103, 0, 350, 351, 352, 353, 104, 0, - 105, 106, 0, 0, 0, 0, 354, 0, 0, 107, - 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, - 112, 16, 0, 355, 0, 0, 356, 357, 115, 116, - 0, 0, 0, 358, 359, 0, 0, 0, 360, 0, - 0, 361, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 362, 0, 121, 122, 0, 123, 124, 0, 125, - 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 0, 0, 142, 0, 143, 144, 0, 232, 145, - 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, - 154, 0, 155, 156, 157, 158, 159, 363, 0, 160, - 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, - 364, 245, 365, 322, 366, 367, 0, 0, 0, 0, - 0, 368, 92, 93, 370, 371, 372, 0, 0, 0, - 0, 0, 0, 373, 0, 0, 332, 333, 334, 335, - 0, 0, 336, 0, 0, 0, 0, 0, 0, 231, - 337, 338, 339, 340, 0, 94, 341, 0, 0, 0, - 0, 0, 342, 0, 0, 0, 0, 0, 343, 344, - 345, 0, 346, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 97, 0, 0, 347, 0, 0, 0, + 159, 364, 0, 160, 161, 162, 163, 164, 0, 0, + 0, 165, 0, 166, 365, 246, 366, 323, 367, 368, + 0, 0, 0, 0, 0, 369, 0, 0, 371, 372, + 373, 0, 92, 93, 0, 774, 0, 374, 775, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 335, 336, + 0, 0, 337, 0, 0, 0, 0, 0, 0, 232, + 338, 339, 340, 341, 0, 94, 342, 0, 0, 0, + 0, 0, 343, 0, 0, 0, 0, 0, 344, 345, + 346, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, - 102, 0, 348, 0, 349, 103, 0, 350, 351, 352, - 353, 104, 0, 105, 106, 0, 0, 0, 0, 354, + 102, 0, 349, 0, 350, 103, 0, 0, 352, 0, + 354, 104, 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, - 0, 0, 111, 112, 0, 0, 355, 0, 0, 356, - 357, 115, 116, 0, 0, 0, 358, 359, 0, 0, - 0, 360, 0, 0, 361, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 362, 0, 121, 122, 0, 123, - 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, - 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, - 0, 232, 145, 146, 0, 147, 0, 148, 149, 150, - 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, - 363, 0, 160, 161, 162, 163, 164, 0, 0, 0, - 165, 0, 166, 364, 245, 365, 322, 366, 367, 0, - 0, 0, 0, 0, 368, 0, 0, 370, 371, 372, - 0, 92, 93, 0, 786, 0, 373, 787, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, - 0, 336, 0, 0, 0, 0, 0, 0, 231, 337, - 338, 339, 340, 0, 94, 341, 0, 0, 0, 0, - 0, 342, 0, 0, 0, 0, 0, 343, 344, 345, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 97, 0, 0, 347, 0, 0, 0, 0, - 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, - 0, 348, 0, 349, 103, 0, 0, 351, 0, 353, - 104, 0, 105, 106, 0, 0, 0, 0, 354, 0, - 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, - 0, 111, 112, 0, 0, 355, 0, 0, 356, 357, - 115, 116, 0, 0, 0, 358, 359, 0, 0, 0, - 360, 0, 0, 361, 0, 0, 0, 0, 0, 0, - 117, 118, 119, 362, 0, 121, 122, 0, 123, 124, + 0, 0, 111, 112, 0, 0, 356, 0, 0, 0, + 357, 358, 115, 116, 0, 0, 0, 359, 360, 0, + 0, 0, 361, 0, 0, 362, 0, 0, 0, 0, + 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, + 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, + 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, + 144, 0, 233, 145, 146, 0, 147, 0, 148, 149, + 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, + 159, 364, 0, 160, 161, 162, 163, 164, 0, 0, + 0, 165, 0, 166, 365, 246,-32768, 323, 367, 368, + 0, 0, 0, 0, 0, 369, 92, 93, 371, 372, + 373, 0, 0, 0, 0, 0, 0, 776, 0, 0, + 333, 334, 335, 336, 0, 0, 337, 0, 0, 0, + 0, 0, 0, 232, 338, 339, 340, 341, 0, 94, + 342, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 344, 345, 346, 0, 347, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 0, 350, 103, + 0, 351, 352, 0, 354, 104, 0, 105, 106, 0, + 0, 0, 0, 355, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 16, 0, + 356, 0, 0, 0, 357, 358, 115, 116, 0, 0, + 0, 359, 360, 0, 0, 0, 361, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 363, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 0, 142, 0, 143, 144, 0, 233, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 365, 246, + 366, 323, 367, 368, 0, 0, 0, 0, 0, 369, + 92, 93, 371, 372, 373, 0, 0, 0, 0, 0, + 0, 374, 0, 0, 333, 334, 335, 336, 0, 0, + 337, 0, 0, 0, 0, 0, 0, 232, 338, 339, + 340, 341, 0, 94, 342, 0, 0, 0, 0, 0, + 343, 0, 0, 0, 0, 0, 344, 345, 346, 0, + 347, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 348, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 349, 0, 350, 103, 0, 351, 352, 0, 354, 104, + 0, 105, 106, 0, 0, 0, 0, 355, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 356, 0, 0, 0, 357, 358, + 115, 116, 0, 0, 0, 359, 360, 0, 0, 0, + 361, 0, 0, 362, 0, 0, 0, 0, 0, 0, + 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, - 232, 145, 146, 0, 147, 0, 148, 149, 150, 151, - 152, 153, 154, 0, 155, 156, 157, 158, 159, 363, + 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, 163, 164, 0, 0, 0, 165, - 0, 166, 364, 245,-32768, 322, 366, 367, 0, 0, - 0, 0, 0, 368, 92, 93, 370, 371, 372, 0, - 0, 0, 0, 0, 0, 788, 0, 0, 332, 333, - 334, 335, 0, 0, 336, 0, 0, 0, 0, 0, - 0, 231, 337, 338, 339, 340, 0, 94, 341, 0, - 0, 0, 0, 0, 342, 0, 0, 0, 0, 0, - 343, 344, 345, 0, 346, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 97, 0, 0, 347, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 348, 0, 349, 103, 0, 350, - 351, 0, 353, 104, 0, 105, 106, 0, 0, 0, - 0, 354, 0, 0, 107, 108, 0, 0, 109, 0, - 110, 0, 0, 0, 111, 112, 16, 0, 355, 0, - 0, 356, 357, 115, 116, 0, 0, 0, 358, 359, - 0, 0, 0, 360, 0, 0, 361, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 362, 0, 121, 122, - 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, - 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, - 143, 144, 0, 232, 145, 146, 0, 147, 0, 148, - 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 363, 0, 160, 161, 162, 163, 164, 0, - 0, 0, 165, 0, 166, 364, 245, 365, 322, 366, - 367, 0, 0, 0, 0, 0, 368, 92, 93, 370, - 371, 372, 0, 0, 0, 0, 0, 0, 373, 0, - 0, 332, 333, 334, 335, 0, 0, 336, 0, 0, - 0, 0, 0, 0, 231, 337, 338, 339, 340, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 343, 344, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 350, 351, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 354, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 355, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 358, 359, 0, 0, 0, 360, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 365, 322, 366, 367, 0, 0, 0, 92, 93, 368, - 0, 0, 370, 371, 372, 0, 0, 0, 0, 0, - 0, 373, 756, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 757, 758, 759, 760, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 761, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 762, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 763, 359, 0, 0, 0, 764, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 765, 322, 366, 367, 0, 0, 0, 92, 93, 766, - 0, 0, 767, 768, 769, 0, 0, 0, 0, 0, - 0, 770, 756, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 757, 758, 759, 760, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 761, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 762, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 763, 359, 0, 0, 0, 764, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, --32768, 322, 366, 367, 0, 0, 0, 92, 93, 766, - 0, 0, 767, 768, 769, 0, 0, 0, 0, 0, - 0, 770, 1313, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1314, 1315, 1316, 1317, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 1318, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 0, 359, 0, 0, 0, 1319, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 1320, 322, 366, 367, 0, 0, 0, 92, 93, 1321, - 0, 0, 1322, 1323, 1324, 0, 0, 0, 0, 0, - 0, 1325, 1313, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1314, 1315, 1316, 1317, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 0, 359, 0, 0, 0, 1319, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 1320, 322, 366, 367, 0, 0, 0, 92, 93, 1321, - 0, 0, 1322, 1323, 1324, 0, 0, 0, 0, 0, - 0, 1325, 1313, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1314, 1315, 1316, 1317, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 0, 359, 0, 0, 0, 1319, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, --32768, 322, 366, 367, 0, 0, 0, 92, 93, 1321, - 0, 0, 1322, 1323, 1324, 0, 0, 0, 0, 0, - 0, 1325, 684, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 685, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 686, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 687, 359, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 688, 322, 366, 367, 0, 0, 0, 92, 93, 689, - 0, 0, 690, 0, 0, 0, 0, 0, 0, 0, - 0, 691, 684, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 0, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 685, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 686, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 687, 359, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 232, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, --32768, 322, 366, 367, 0, 0, 0, 92, 93, 689, - 0, 0, 690, 0, 0, 0, 0, 0, 0, 0, - 0, 691, 1078, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 1079, 0, 1080, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 0, 359, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 0, 0, 0, 165, 0, 166, 364, 245, - 1081, 322, 366, 367, 0, 0, 0, 92, 93, 1082, - 0, 0, 1083, 1084, 1085, 0, 0, 0, 0, 0, - 0, 1086, 1078, 334, 335, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 94, 341, 0, 0, 0, 0, 0, 342, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 347, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 348, 0, 349, - 103, 0, 0, 0, 1080, 353, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 356, 357, 115, 116, 0, 0, - 0, 0, 359, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 362, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, - 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 363, 0, 160, 161, 162, - 163, 164, 92, 93, 0, 165, 0, 166, 364, 245, --32768, 322, 366, 367, 0, 0, 0, 0, 0, 1082, - 0, 0, 1083, 1084, 1085, 0, 0, 0, 0, 231, - 0, 1086, 0, 0, 0, 94, 0, 0, 0, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, - 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, - 0, 0, 111, 112, 0, 0, 0, 0, 0, 113, - 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, + 0, 166, 365, 246, 366, 323, 367, 368, 0, 0, + 0, 92, 93, 369, 0, 0, 371, 372, 373, 0, + 0, 0, 0, 0, 0, 374, 744, 335, 336, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 232, 745, + 746, 747, 748, 0, 94, 342, 0, 0, 0, 0, + 0, 343, 0, 0, 0, 0, 0, 0, 0, 346, + 0, 347, 0, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 97, 0, 0, 348, 0, 0, 0, 0, + 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, + 0, 349, 0, 350, 103, 0, 0, 0, 0, 354, + 104, 0, 105, 106, 0, 0, 0, 0, 749, 0, + 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, + 0, 111, 112, 0, 0, 750, 0, 0, 0, 357, + 358, 115, 116, 0, 0, 0, 751, 360, 0, 0, + 0, 752, 0, 0, 362, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, - 0, 232, 145, 146, 0, 147, 0, 148, 149, 150, + 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, + 0, 233, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, - 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, - 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, - 0, 0, 96, 0, 531, 97, 1042, 0, 0, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, - 0, 0, 0, 0, 107, 108, 0, 969, 109, 0, - 110, 0, 0, 532, 111, 112, 16, 0, 0, 0, - 533, 113, 114, 115, 116, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 535, - 0, 0, 0, 117, 118, 119, 120, 536, 121, 122, + 364, 0, 160, 161, 162, 163, 164, 0, 0, 0, + 165, 0, 166, 365, 246, 753, 323, 367, 368, 0, + 0, 0, 92, 93, 754, 0, 0, 755, 756, 757, + 0, 0, 0, 0, 0, 0, 758, 744, 335, 336, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, + 745, 746, 747, 748, 0, 94, 342, 0, 0, 0, + 0, 0, 343, 0, 0, 0, 0, 0, 0, 0, + 346, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 97, 0, 0, 348, 0, 0, 0, + 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, + 102, 0, 349, 0, 350, 103, 0, 0, 0, 0, + 354, 104, 0, 105, 106, 0, 0, 0, 0, 749, + 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, + 0, 0, 111, 112, 0, 0, 750, 0, 0, 0, + 357, 358, 115, 116, 0, 0, 0, 751, 360, 0, + 0, 0, 752, 0, 0, 362, 0, 0, 0, 0, + 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, + 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, + 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, + 144, 0, 233, 145, 146, 0, 147, 0, 148, 149, + 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, + 159, 364, 0, 160, 161, 162, 163, 164, 0, 0, + 0, 165, 0, 166, 365, 246,-32768, 323, 367, 368, + 0, 0, 0, 92, 93, 754, 0, 0, 755, 756, + 757, 0, 0, 0, 0, 0, 0, 758, 1421, 335, + 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1422, 1423, 1424, 1425, 0, 94, 342, 0, 0, + 0, 0, 0, 343, 0, 0, 0, 0, 0, 0, + 0, 346, 0, 347, 0, 0, 0, 0, 0, 0, + 0, 96, 0, 0, 97, 0, 0, 348, 0, 0, + 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, + 101, 102, 0, 349, 0, 350, 103, 0, 0, 0, + 1426, 354, 104, 0, 105, 106, 0, 0, 0, 0, + 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, + 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, + 0, 357, 358, 115, 116, 0, 0, 0, 0, 360, + 0, 0, 0, 1427, 0, 0, 362, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 0, 0, 160, 161, 162, 163, 164, 0, - 0, 1, 165, 0, 166, 167, 2, 0, 0, 0, - 0, 0, 0, 0, 537, 0, 3, 0, 0, 530, - 4, 0, 5, 0, 531, 0, 0, 0, 33, 538, - 0, 0, 6, 0, 7, 0, 530, 0, 8, 0, - 9, 531, 10, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 12, 0, 0, 0, 0, 539, 0, 13, - 0, 0, 540, 541, 542, 543, 544, 545, 546, 0, - 0, 0, 0, 532, 0, 0, 547, 1286, 0, 1535, - 533, 0, 1287, 0, 0, 0, 0, 0, 534, 0, - 532, 0, 0, 0, 0, 0, 0, 533, 0, 535, - 0, 0, 0, 0, 14, 534, 15, 536, 0, 16, - 17, 0, 0, 0, 0, 0, 535, 530, 0, 0, - 0, 0, 531, 0, 536, 18, 0, 0, 0, 0, - 1158, 1288, 0, 0, 1286, 0, 0, 0, 1289, 1287, - 19, 0, 0, 0, 0, 0, 1290, 0, 20, 21, - 0, 0, 0, 0, 0, 0, 0, 1291, 22, 23, - 0, 0, 0, 0, 0, 1292, 0, 0, 0, 24, - 25, 532, 26, 0, 0, 27, 0, 0, 533, 0, - 0, 28, 0, 0, 537, 0, 534, 0, 1288, 29, - 0, 0, 0, 0, 0, 1289, 30, 535, 0, 538, - 0, 537, 31, 1290, 32, 536, 0, 0, 0, 0, - 0, 0, 0, 0, 1291, 0, 538, 0, 0, 0, - 0, 0, 1292, 0, 0, 0, 0, 539, 0, 0, - 0, 33, 540, 541, 542, 543, 544, 545, 546, 0, - 0, 0, 1293, 0, 539, 0, 547, 0, 0, 540, - 541, 542, 543, 544, 545, 546, 0, 1294, 0, 0, - 0, 0, 1366, 547, 0, 0, 0, 0, 0, 0, + 158, 159, 364, 0, 160, 161, 162, 163, 164, 0, + 0, 0, 165, 0, 166, 365, 246, 1428, 323, 367, + 368, 0, 0, 0, 92, 93, 1429, 0, 0, 1430, + 1431, 1432, 0, 0, 0, 0, 0, 0, 1433, 1421, + 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1422, 1423, 1424, 1425, 0, 94, 342, 0, + 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, + 0, 0, 346, 0, 347, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 97, 0, 0, 348, 0, + 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 100, 101, 102, 0, 349, 0, 350, 103, 0, 0, + 0, 0, 354, 104, 0, 105, 106, 0, 0, 0, + 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, + 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, + 0, 0, 357, 358, 115, 116, 0, 0, 0, 0, + 360, 0, 0, 0, 1427, 0, 0, 362, 0, 0, + 0, 0, 0, 0, 117, 118, 119, 363, 0, 121, + 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, + 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, + 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, + 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, + 157, 158, 159, 364, 0, 160, 161, 162, 163, 164, + 0, 0, 0, 165, 0, 166, 365, 246, 1428, 323, + 367, 368, 0, 0, 0, 92, 93, 1429, 0, 0, + 1430, 1431, 1432, 0, 0, 0, 0, 0, 0, 1433, + 1421, 335, 336, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1422, 1423, 1424, 1425, 0, 94, 342, + 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, + 0, 0, 0, 346, 0, 347, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 97, 0, 0, 348, + 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, + 0, 100, 101, 102, 0, 349, 0, 350, 103, 0, + 0, 0, 0, 354, 104, 0, 105, 106, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, + 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, + 0, 0, 0, 357, 358, 115, 116, 0, 0, 0, + 0, 360, 0, 0, 0, 1427, 0, 0, 362, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 363, 0, + 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, + 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, + 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, + 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, + 156, 157, 158, 159, 364, 0, 160, 161, 162, 163, + 164, 0, 0, 0, 165, 0, 166, 365, 246,-32768, + 323, 367, 368, 0, 0, 0, 92, 93, 1429, 0, + 0, 1430, 1431, 1432, 0, 0, 0, 0, 0, 0, + 1433, 672, 335, 336, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 232, 0, 0, 0, 0, 0, 94, + 342, 0, 0, 0, 0, 0, 343, 0, 0, 0, + 0, 0, 0, 0, 346, 0, 347, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 348, 0, 0, 0, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 0, 350, 103, + 0, 0, 0, 0, 354, 104, 0, 105, 106, 0, + 0, 0, 0, 673, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, + 674, 0, 0, 0, 357, 358, 115, 116, 0, 0, + 0, 675, 360, 0, 0, 0, 0, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 363, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 0, 142, 0, 143, 144, 0, 233, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 364, 0, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 365, 246, + 676, 323, 367, 368, 0, 0, 0, 92, 93, 677, + 0, 0, 678, 0, 0, 0, 0, 0, 0, 0, + 0, 679, 672, 335, 336, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, + 94, 342, 0, 0, 0, 0, 0, 343, 0, 0, + 0, 0, 0, 0, 0, 346, 0, 347, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, + 0, 348, 0, 0, 0, 0, 98, 99, 0, 0, + 0, 0, 0, 100, 101, 102, 0, 349, 0, 350, + 103, 0, 0, 0, 0, 354, 104, 0, 105, 106, + 0, 0, 0, 0, 673, 0, 0, 107, 108, 0, + 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, + 0, 674, 0, 0, 0, 357, 358, 115, 116, 0, + 0, 0, 675, 360, 0, 0, 0, 0, 0, 0, + 362, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 363, 0, 121, 122, 0, 123, 124, 0, 125, 0, + 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 0, 0, 142, 0, 143, 144, 0, 233, 145, 146, + 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, + 0, 155, 156, 157, 158, 159, 364, 0, 160, 161, + 162, 163, 164, 0, 0, 0, 165, 0, 166, 365, + 246,-32768, 323, 367, 368, 0, 0, 0, 92, 93, + 677, 0, 0, 678, 0, 0, 0, 0, 0, 0, + 0, 0, 679, 1239, 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 537, 0, 0, 1295, 0, 0, 0, 0, - 1296, 1297, 1298, 1299, 1300, 1301, 1302, 538, 0, 1293, - 0, 0, 0, 0, 1303, 92, 93, 0, 0, 0, - 0, 0, 0, 0, 1294, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 539, 0, 0, 0, 0, - 540, 541, 542, 543, 544, 545, 546, 0, 94, 0, - 0, 0, 1295, 0, 547, 95, 0, 1296, 1297, 1298, - 1299, 1300, 1301, 1302, 0, 0, 0, 0, 0, 0, - 0, 1303, 0, 96, 0, 0, 97, 0, 0, 0, + 0, 94, 342, 0, 0, 0, 0, 0, 343, 0, + 0, 0, 0, 0, 0, 0, 346, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, + 0, 0, 348, 0, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 0, 349, 0, + 350, 103, 0, 1240, 0, 1241, 354, 104, 0, 105, + 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 357, 358, 115, 116, + 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, + 0, 362, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 363, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 364, 0, 160, + 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, + 365, 246, 1242, 323, 367, 368, 0, 0, 0, 92, + 93, 1243, 0, 0, 1244, 1245, 1246, 0, 0, 0, + 0, 0, 0, 1247, 1239, 335, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 94, 342, 0, 0, 0, 0, 0, 343, + 0, 0, 0, 0, 0, 0, 0, 346, 0, 347, + 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 97, 0, 0, 348, 0, 0, 0, 0, 98, 99, + 0, 0, 0, 0, 0, 100, 101, 102, 0, 349, + 0, 350, 103, 0, 0, 0, 1241, 354, 104, 0, + 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, + 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, + 112, 0, 0, 0, 0, 0, 0, 357, 358, 115, + 116, 0, 0, 0, 0, 360, 0, 0, 0, 0, + 0, 0, 362, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 363, 0, 121, 122, 0, 123, 124, 0, + 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, + 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 0, 142, 0, 143, 144, 0, 0, + 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, + 153, 154, 0, 155, 156, 157, 158, 159, 364, 0, + 160, 161, 162, 163, 164, 92, 93, 0, 165, 0, + 166, 365, 246,-32768, 323, 367, 368, 0, 0, 0, + 0, 0, 1243, 0, 0, 1244, 1245, 1246, 0, 0, + 0, 0, 232, 0, 1247, 0, 0, 0, 94, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, + 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, + 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, + 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 92, 93, + 142, 0, 143, 144, 0, 233, 145, 146, 0, 147, + 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, + 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, + 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, + 0, 0, 530, 0, 908, 0, 0, 531, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, + 1032, 0, 0, 0, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, + 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, + 106, 0, 0, 0, 0, 0, 532, 0, 107, 108, + 0, 0, 109, 533, 110, 0, 0, 0, 111, 112, + 16, 534, 0, 0, 0, 0, 113, 114, 115, 116, + 0, 0, 535, 0, 0, 0, 0, 0, 0, 0, + 536, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, + 161, 162, 163, 164, 0, 0, 0, 165, 537, 166, + 167, 0, 0, 0, 0, 530, 0, 0, 0, 0, + 531, 0, 0, 538, 0, 0, 0, 0, 0, 0, + 0, 530, 0, 33, 0, 0, 531, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 530, 0, 0, + 0, 539, 531, 0, 0, 0, 540, 541, 542, 543, + 544, 545, 546, 959, 0, 0, 0, 0, 0, 532, + 547, 0, 1381, 0, 1559, 0, 533, 1382, 0, 0, + 0, 0, 0, 0, 534, 532, 0, 0, 530, 0, + 0, 0, 533, 531, 0, 535, 0, 0, 0, 0, + 534, 532, 0, 536, 1381, 0, 0, 0, 533, 1382, + 0, 535, 0, 0, 0, 0, 534, 0, 0, 536, + 0, 0, 0, 0, 0, 0, 1383, 535, 0, 530, + 0, 0, 0, 1384, 531, 536, 0, 0, 0, 0, + 0, 1385, 532, 1124, 0, 1381, 0, 0, 0, 533, + 1382, 0, 1386, 0, 0, 0, 0, 534, 1383, 0, + 1387, 0, 0, 0, 0, 1384, 0, 0, 535, 0, + 0, 0, 0, 1385, 0, 0, 536, 0, 0, 0, + 0, 537, 0, 532, 1386, 0, 0, 0, 0, 0, + 533, 0, 1387, 0, 0, 0, 538, 537, 534, 1383, + 0, 0, 0, 0, 0, 0, 1384, 0, 0, 535, + 0, 0, 538, 537, 1385, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 539, 1386, 0, 0, 538, 540, + 541, 542, 543, 544, 545, 546, 0, 0, 1388, 0, + 539, 0, 0, 547, 0, 540, 541, 542, 543, 544, + 545, 546, 0, 1389, 537, 0, 539, 0, 0, 547, + 0, 540, 541, 542, 543, 544, 545, 546, 0, 538, + 1388, 0, 0, 0, 1314, 547, 0, 0, 0, 0, + 0, 1390, 0, 0, 0, 1389, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 0, 0, 537, 0, 539, 0, 0, + 1398, 0, 540, 541, 542, 543, 544, 545, 546, 0, + 538, 1388, 0, 1390, 0, 0, 547, 0, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 0, 1389, 0, 0, 0, + 0, 0, 1398, 0, 92, 93, 0, 0, 539, 0, + 0, 0, 0, 540, 541, 542, 543, 544, 545, 546, + 0, 0, 0, 0, 1390, 0, 0, 547, 0, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 0, 94, 0, 0, + 0, 0, 0, 1398, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, + 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, + 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, + 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, @@ -2749,139 +2753,36 @@ static const short yytable[] = { 170, 135, 136, 137, 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, - 157, 158, 159, 1132, 0, 160, 161, 162, 163, 164, - 92, 93, 0, 165, 0, 166, 167, 245, 311, 322, - 0, 1133, 0, 286, 287, 288, 289, 1134, 291, 292, + 157, 158, 159, 1098, 0, 160, 161, 162, 163, 164, + 92, 93, 0, 165, 0, 166, 167, 246, 312, 323, + 0, 1099, 0, 287, 288, 289, 290, 1100, 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 94, 0, 0, 636, 0, 0, 0, + 0, 0, 0, 94, 0, 0, 624, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 97, 0, 0, 0, 0, 0, 0, 283, 98, + 0, 97, 0, 0, 0, 0, 0, 0, 284, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 284, 0, 109, 0, 110, 0, 0, 0, - 111, 112, 0, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, - 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, - 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 92, 93, 142, 0, 143, 144, 0, 0, - 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, - 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, - 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, - 166, 167, 95, 285, 0, 0, 0, 0, 286, 287, - 288, 289, 290, 291, 292, 0, 0, 0, 0, 0, - 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 283, 98, 99, 0, 0, 0, 0, 0, 100, 101, - 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 284, 0, 109, 0, 110, 0, - 0, 0, 111, 112, 0, 0, 0, 0, 0, 113, - 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 107, 108, 285, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, - 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, - 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, - 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, - 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, - 0, 231, 160, 161, 162, 163, 164, 94, 0, 0, - 165, 0, 166, 167, 95, 285, 0, 0, 0, 0, - 286, 287, 288, 289, 290, 291, 292, 0, 0, 0, - 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, - 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, - 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, - 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, - 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, - 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 92, 93, 142, 0, - 143, 144, 0, 232, 145, 146, 0, 147, 0, 148, - 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 0, 231, 160, 161, 162, 163, 164, 94, - 0, 0, 165, 0, 166, 167, 95, 0, 0, 366, - 0, 0, 0, 0, 0, 0, 0, 564, 0, 0, - 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, - 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, - 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, - 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, - 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, - 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, - 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, - 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 92, 93, - 142, 0, 143, 144, 0, 232, 145, 146, 0, 147, - 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, - 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, - 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, - 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, - 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, - 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, - 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, - 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, - 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, - 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 92, 93, 142, 0, 143, 144, 0, 0, 145, 146, - 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, - 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, - 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, - 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 452, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, - 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, - 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, - 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, - 111, 112, 0, 0, 0, 0, 0, 113, 114, 115, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, - 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, - 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 92, 93, 142, 0, 143, 144, 0, 0, - 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, - 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, - 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, - 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 823, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, - 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, - 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, - 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, - 0, 0, 111, 112, 0, 0, 0, 0, 0, 113, - 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, - 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, - 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, - 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, - 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, - 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, - 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1054, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, - 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, - 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, - 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, - 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, + 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, + 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, + 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 92, 93, 142, 0, 143, 144, 0, + 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 0, 155, 156, 157, 158, 159, 0, + 0, 160, 161, 162, 163, 164, 94, 0, 0, 165, + 0, 166, 167, 95, 286, 0, 0, 0, 0, 287, + 288, 289, 290, 291, 292, 293, 0, 0, 0, 0, + 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, + 0, 284, 98, 99, 0, 0, 0, 0, 0, 100, + 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, + 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, + 0, 0, 0, 107, 108, 285, 0, 109, 0, 110, + 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, @@ -2890,94 +2791,86 @@ static const short yytable[] = { 170, 136, 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, - 158, 159, 0, 231, 160, 161, 162, 163, 164, 94, - 0, 0, 165, 0, 166, 167, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1262, 0, 0, + 158, 159, 0, 232, 160, 161, 162, 163, 164, 94, + 0, 0, 165, 0, 166, 167, 95, 286, 0, 0, + 0, 0, 287, 288, 289, 290, 291, 292, 293, 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, + 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 92, + 93, 142, 0, 143, 144, 0, 233, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 0, 232, 160, 161, 162, + 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, + 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, + 564, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, + 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, + 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, + 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, + 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, + 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, + 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, + 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 92, 93, 142, 0, 143, 144, 0, 233, + 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, + 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, + 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, + 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, + 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, + 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, + 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, + 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, + 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, + 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, + 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, + 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, + 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, + 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, + 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, + 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, + 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, + 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 92, 93, - 142, 0, 143, 144, 0, 232, 145, 146, 0, 147, + 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, - 0, 366, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 811, 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, - 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, + 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, - 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, - 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 0, 0, 142, 0, 143, 144, 0, 0, 145, 146, - 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, - 0, 155, 156, 157, 158, 159, 92, 93, 160, 161, - 162, 163, 164, 0, 0, 0, 165, 0, 166, 167, - 715, 0, 322, 0, 0, 0, 716, 0, 0, 0, - 717, 0, 718, 719, 0, 0, 0, 0, 0, 94, - 0, 0, 0, 0, 0, 0, 95, 0, 720, 721, - 0, 0, 0, 0, 722, 0, 0, 0, 723, 0, - 0, 0, 724, 0, 96, 0, 0, 97, 0, 0, - 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, - 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, - 0, 0, 725, 0, 0, 104, 0, 105, 106, 0, - 726, 0, 0, 727, 728, 0, 107, 108, 0, 0, - 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, - 0, 729, 730, 113, 114, 115, 116, 0, 0, 731, - 0, 732, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 733, 0, 0, 0, 117, 118, 119, 120, 734, - 121, 122, 735, 123, 124, 736, 125, 737, 738, 126, - 127, 128, 129, 130, 739, 131, 132, 740, 741, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 742, 743, - 142, 744, 143, 144, 745, 746, 145, 146, 747, 147, - 0, 148, 149, 150, 151, 152, 153, 154, 748, 155, - 156, 157, 158, 159, 749, 750, 160, 161, 162, 163, - 164, 92, 93, 751, 165, 752, 166, 167, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 334, 335, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 616, 0, 0, 0, 0, - 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 618, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, - 0, 348, 0, 349, 103, 0, 0, 0, 0, 619, - 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, - 0, 111, 112, 0, 0, 0, 0, 0, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 361, 0, 0, 0, 0, 0, 0, - 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, - 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, - 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 0, 0, 142, 0, 143, 144, 0, - 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, - 152, 153, 154, 0, 155, 156, 157, 158, 159, 92, - 93, 160, 161, 162, 163, 164, 0, 0, 0, 165, - 0, 166, 167, 0, 0, 0, 0, 593, 0, 0, - 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 595, 0, 0, 0, 0, 0, 96, 0, 0, - 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, - 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, - 105, 106, 0, 0, 0, 0, 0, 0, 596, 107, - 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, - 112, 0, 0, 0, 0, 0, 113, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, @@ -2987,47 +2880,163 @@ static const short yytable[] = { 170, 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 1382, 0, 1044, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, + 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 104, 0, 105, 106, 0, 0, 0, 0, 0, 1383, + 0, 107, 108, 0, 0, 109, 1384, 110, 0, 0, + 0, 111, 112, 0, 1385, 0, 0, 0, 0, 113, + 114, 115, 116, 0, 0, 1386, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, + 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, + 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, + 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, + 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, + 0, 0, 160, 161, 162, 163, 164, 0, 92, 93, + 165, 1388, 166, 167, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1230, 1389, 0, 0, 0, + 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, + 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 1390, 0, 0, 0, 0, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 96, 0, 0, 97, + 0, 0, 0, 1398, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, + 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, + 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 92, 93, 142, 0, 143, 144, 0, 233, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, + 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, + 167, 95, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, - 227, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, - 0, 111, 112, 0, 0, 0, 0, 0, 228, 114, - 115, 116, 0, 0, 229, 0, 0, 0, 0, 0, + 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, - 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, - 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 92, 93, 142, 0, 143, 144, 0, - 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, - 152, 153, 154, 0, 155, 156, 157, 158, 159, 0, - 231, 160, 161, 162, 163, 164, 94, 0, 0, 165, - 0, 166, 167, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, - 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, - 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, - 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, - 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, - 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, - 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, - 144, 0, 232, 145, 146, 0, 147, 0, 148, 149, - 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, - 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, - 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 905, 0, 96, 0, 0, 97, 0, 0, 0, + 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, + 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, + 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 0, 0, 142, 0, 143, 144, + 0, 0, 145, 146, 0, 147, 0, 148, 149, 150, + 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, + 92, 93, 160, 161, 162, 163, 164, 0, 0, 0, + 165, 0, 166, 167, 703, 0, 323, 0, 0, 0, + 704, 0, 0, 0, 705, 0, 706, 707, 0, 0, + 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, + 95, 0, 708, 709, 0, 0, 0, 0, 710, 0, + 0, 0, 711, 0, 0, 0, 712, 0, 96, 0, + 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 0, 0, 0, 103, 0, 0, 713, 0, 0, 104, + 0, 105, 106, 0, 714, 0, 0, 715, 716, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 0, 717, 0, 718, 113, 114, + 115, 116, 0, 0, 719, 0, 720, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, + 117, 118, 119, 120, 722, 121, 122, 723, 123, 124, + 724, 125, 725, 726, 126, 127, 128, 129, 130, 727, + 131, 132, 728, 729, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 730, 731, 142, 732, 143, 144, 733, + 734, 145, 146, 735, 147, 0, 148, 149, 150, 151, + 152, 153, 154, 736, 155, 156, 157, 158, 159, 737, + 738, 160, 161, 162, 163, 164, 92, 93, 739, 165, + 740, 166, 167, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 335, 336, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, + 602, 0, 0, 0, 0, 0, 603, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 604, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 349, 0, 350, 103, + 0, 0, 0, 0, 605, 104, 0, 105, 106, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, + 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, + 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, + 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, + 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 0, + 0, 142, 0, 143, 144, 0, 0, 145, 146, 0, + 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, + 155, 156, 157, 158, 159, 92, 93, 160, 161, 162, + 163, 164, 0, 0, 0, 165, 0, 166, 167, 0, + 0, 0, 0, 840, 0, 0, 0, 0, 0, 875, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 842, 0, 0, + 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, - 0, 0, 0, 0, 0, 107, 108, 0, 906, 109, + 0, 0, 0, 0, 843, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, + 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 844, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, + 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, + 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 92, 93, + 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, + 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, + 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, + 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 97, + 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, + 0, 0, 0, 0, 100, 101, 102, 228, 0, 0, + 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, + 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, + 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, + 0, 0, 0, 0, 0, 0, 229, 114, 115, 116, + 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, + 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, + 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, + 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 92, 93, 142, 0, 143, 144, 0, 0, 145, + 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, + 154, 0, 155, 156, 157, 158, 159, 0, 232, 160, + 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, + 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, + 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, + 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, + 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, + 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, + 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, + 0, 233, 145, 146, 0, 147, 0, 148, 149, 150, + 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, + 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, + 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 895, 0, 96, 0, 0, 97, 0, 0, 0, 0, + 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, + 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, + 0, 0, 0, 0, 107, 108, 0, 896, 109, 0, + 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, @@ -3045,48 +3054,31 @@ static const short yytable[] = { 170, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, - 0, 0, 0, 0, 252, 114, 115, 116, 0, 0, - 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, - 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, - 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 92, - 93, 142, 0, 143, 144, 0, 0, 145, 146, 0, - 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, - 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, - 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 97, 0, 0, 0, 0, 0, 0, 0, 98, 99, - 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, - 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, - 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, - 112, 0, 0, 0, 0, 0, 255, 114, 115, 116, - 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, - 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 92, 93, 142, 0, 143, 144, 0, 0, 145, - 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, - 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, - 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, - 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 0, 0, 0, 0, 0, 100, 101, 102, - 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, - 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, - 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, - 0, 111, 112, 0, 0, 0, 0, 0, 113, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 114, 115, 116, 0, + 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, + 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, + 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 92, 93, 142, 0, 143, 144, 0, 0, 145, 146, + 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, + 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, + 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, + 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 97, 0, 0, 0, 0, 0, 0, 0, 98, + 99, 0, 0, 0, 0, 0, 100, 101, 102, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, + 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, + 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, + 111, 112, 0, 0, 0, 0, 0, 0, 256, 114, + 115, 116, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, 144, 0, - 0, 145, 146, 645, 147, 0, 148, 149, 150, 151, + 0, 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, 0, @@ -3097,47 +3089,30 @@ static const short yytable[] = { 170, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, - 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, - 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, - 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, - 144, 0, 1257, 145, 146, 1149, 147, 0, 148, 149, - 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, - 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, - 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, + 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, + 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 92, 93, 142, 0, + 143, 144, 0, 0, 145, 146, 633, 147, 0, 148, + 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, + 158, 159, 0, 0, 160, 161, 162, 163, 164, 94, + 0, 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, - 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, - 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, - 0, 0, 0, 0, 0, 107, 108, 0, 0, 109, - 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, - 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, - 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, - 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 92, 93, 142, - 0, 143, 144, 0, 0, 145, 146, 0, 147, 0, - 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, - 157, 158, 159, 0, 0, 160, 161, 162, 163, 164, - 94, 0, 0, 165, 0, 166, 167, 95, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, - 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, - 0, 0, 0, 0, 0, 0, 0, 107, 108, 0, - 0, 109, 0, 110, 0, 0, 0, 111, 112, 0, + 0, 0, 0, 0, 96, 0, 0, 97, 0, 0, + 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, + 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, + 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, + 109, 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, 141, 92, - 93, 142, 0, 143, 144, 0, 0, 145, 146, 0, + 93, 142, 0, 143, 144, 0, 1225, 145, 146, 1115, 147, 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, 166, 167, 95, @@ -3147,580 +3122,582 @@ static const short yytable[] = { 170, 0, 0, 0, 0, 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 107, - 108, 0, 0, 831, 0, 110, 0, 0, 0, 111, - 112, 0, 0, 0, 0, 0, 113, 114, 115, 116, + 108, 0, 0, 109, 0, 110, 0, 0, 0, 111, + 112, 0, 0, 0, 0, 0, 0, 113, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 0, 121, 122, 0, 123, 124, 0, + 125, 0, 0, 126, 127, 128, 129, 130, 0, 131, + 132, 0, 0, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 92, 93, 142, 0, 143, 144, 0, 0, + 145, 146, 0, 147, 0, 148, 149, 150, 151, 152, + 153, 154, 0, 155, 156, 157, 158, 159, 0, 0, + 160, 161, 162, 163, 164, 94, 0, 0, 165, 0, + 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, - 119, 120, 0, 121, 122, 0, 123, 124, 0, 125, - 0, 0, 126, 127, 128, 129, 130, 0, 131, 132, - 0, 0, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 0, 0, 142, 0, 143, 144, 0, 0, 145, - 146, 0, 147, 0, 148, 149, 150, 151, 152, 153, - 154, 0, 155, 156, 157, 158, 159, 334, 335, 160, - 161, 162, 163, 164, 0, 0, 0, 165, 0, 166, - 167, 0, 0, 0, 94, 341, 0, 0, 0, 0, - 0, 507, 0, 334, 335, 0, 0, 0, 0, 345, - 0, 346, 0, 0, 0, 0, 0, 0, 0, 96, - 94, 341, 0, 0, 0, 347, 0, 507, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 101, 102, - 0, 348, 0, 349, 0, 96, 0, 0, 0, 353, - 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 0, 348, 0, 349, - 0, 0, 112, 16, 0, 353, 0, 0, 508, 509, - 0, 0, 0, 0, 0, 0, 359, 0, 0, 334, - 335, 0, 0, 361, 0, 0, 0, 0, 112, 0, - 117, 0, 0, 510, 508, 509, 94, 341, 0, 0, - 0, 0, 359, 507, 0, 0, 0, 0, 0, 361, - 0, 0, 0, 346, 0, 0, 117, 0, 0, 510, - 0, 96, 0, 0, 0, 0, 0, 347, 0, 0, + 96, 0, 0, 97, 0, 0, 0, 0, 0, 0, + 0, 98, 99, 0, 0, 0, 0, 0, 100, 101, + 102, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 0, 104, 0, 105, 106, 0, 0, 0, 0, 0, + 0, 0, 107, 108, 0, 0, 109, 0, 110, 0, + 0, 0, 111, 112, 0, 0, 0, 0, 0, 0, + 113, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 0, 348, 0, 349, 0, 0, 0, 363, - 0, 353, 334, 335, 0, 0, 0, 0, 0, 0, - 0, 0, 511, 245, 0, 322, 366, 367, 0, 94, - 341, 0, 0, 0, 112, 363, 507, 0, 0, 0, - 508, 509, 0, 0, 0, 0, 346, 0, 511, 245, - 0, 322, 366, 367, 96, 361, 0, 0, 0, 0, - 347, 0, 117, 0, 0, 510, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 0, 348, 0, 349, 0, - 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, + 0, 0, 117, 118, 119, 120, 0, 121, 122, 0, + 123, 124, 0, 125, 0, 0, 126, 127, 128, 129, + 130, 0, 131, 132, 0, 0, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 92, 93, 142, 0, 143, + 144, 0, 0, 145, 146, 0, 147, 0, 148, 149, + 150, 151, 152, 153, 154, 0, 155, 156, 157, 158, + 159, 0, 0, 160, 161, 162, 163, 164, 94, 0, + 0, 165, 0, 166, 167, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, - 0, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 872, 363, 0, 0, 0, 0, 0, 0, 361, 0, - 0, 0, 0, 0, 511, 117, 0, 0, 510, 0, + 0, 0, 0, 96, 0, 0, 97, 0, 0, 0, + 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, + 0, 100, 101, 102, 0, 0, 0, 0, 103, 0, + 0, 0, 0, 0, 104, 0, 105, 106, 0, 0, + 0, 0, 0, 0, 0, 107, 108, 0, 0, 819, + 0, 110, 0, 0, 0, 111, 112, 0, 0, 0, + 0, 0, 0, 113, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 0, + 121, 122, 0, 123, 124, 0, 125, 0, 0, 126, + 127, 128, 129, 130, 0, 131, 132, 0, 0, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 0, 0, + 142, 0, 143, 144, 0, 0, 145, 146, 0, 147, + 0, 148, 149, 150, 151, 152, 153, 154, 0, 155, + 156, 157, 158, 159, 335, 336, 160, 161, 162, 163, + 164, 0, 0, 0, 165, 0, 166, 167, 0, 0, + 0, 94, 342, 0, 0, 0, 0, 0, 507, 0, + 335, 336, 0, 0, 0, 0, 346, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 96, 94, 342, 0, + 0, 0, 348, 0, 507, 0, 0, 0, 0, 0, + 0, 0, 346, 0, 347, 101, 102, 0, 349, 0, + 350, 0, 96, 0, 0, 0, 354, 0, 348, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 102, 0, 349, 0, 350, 0, 0, 112, + 16, 0, 354, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 360, 0, 0, 335, 336, 0, + 0, 362, 0, 0, 0, 112, 0, 0, 117, 0, + 0, 510, 508, 509, 94, 342, 0, 0, 0, 0, + 360, 507, 0, 0, 0, 0, 0, 362, 0, 0, + 0, 347, 0, 0, 117, 0, 0, 510, 0, 96, + 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, + 0, 0, 0, 0, 335, 336, 0, 0, 101, 102, + 0, 349, 0, 350, 0, 0, 0, 364, 0, 354, + 0, 94, 342, 0, 0, 0, 0, 0, 507, 0, + 511, 246, 0, 323, 367, 368, 0, 0, 347, 0, + 0, 0, 112, 364, 0, 0, 96, 0, 0, 508, + 509, 0, 348, 0, 0, 0, 511, 246, 0, 323, + 367, 368, 0, 0, 362, 101, 102, 0, 349, 0, + 350, 117, 0, 0, 510, 0, 354, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, + 0, 0, 0, 0, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 362, 0, 0, 0, 0, 0, 0, 117, 1094, + 364, 510, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 511 + 511 }; static const short yycheck[] = { 3, - 242, 174, 6, 203, 186, 226, 408, 652, 25, 1048, - 329, 200, 1042, 17, 18, 867, 20, 877, 33, 192, - 24, 584, 47, 438, 28, 29, 30, 31, 987, 6, - 480, 39, 9, 1287, 547, 6, 6, 387, 56, 8, - 39, 66, 5, 115, 7, 39, 39, 56, 54, 39, - 133, 36, 1079, 503, 1081, 1082, 1083, 1084, 1085, 1086, - 21, 115, 134, 133, 25, 140, 1255, 701, 21, 703, - 704, 8, 68, 944, 39, 21, 61, 133, 44, 13, - 21, 44, 243, 87, 78, 3, 27, 688, 689, 690, - 691, 945, 605, 39, 55, 80, 81, 64, 39, 133, - 80, 197, 55, 553, 129, 40, 57, 107, 204, 765, - 766, 767, 768, 769, 433, 86, 115, 124, 38, 335, - 40, 992, 472, 45, 133, 90, 782, 327, 62, 114, - 330, 131, 103, 349, 114, 134, 297, 122, 123, 993, - 215, 102, 88, 77, 214, 65, 113, 88, 99, 102, - 116, 1410, 373, 236, 1413, 238, 102, 142, 233, 10, - 18, 102, 108, 10, 16, 237, 24, 108, 172, 130, - 28, 175, 176, 31, 6, 179, 180, 130, 182, 183, - 236, 10, 186, 237, 130, 152, 190, 191, 1442, 130, - 194, 109, 196, 197, 198, 115, 131, 133, 211, 203, - 204, 217, 236, 133, 238, 175, 176, 215, 40, 225, - 227, 131, 182, 238, 221, 565, 138, 221, 236, 569, - 56, 215, 215, 229, 194, 215, 196, 236, 1417, 87, - 68, 194, 150, 65, 204, 87, 240, 250, 237, 243, - 236, 1093, 1094, 1202, 217, 249, 217, 216, 166, 264, - 265, 1278, 702, 56, 225, 224, 225, 226, 227, 1286, - 237, 234, 193, 1290, 116, 1292, 235, 187, 1295, 1296, - 1297, 1298, 1299, 1300, 1301, 1302, 237, 6, 1305, 216, - 496, 51, 1536, 115, 1311, 152, 36, 224, 225, 226, - 227, 215, 156, 297, 236, 93, 238, 314, 235, 131, - 236, 864, 238, 212, 308, 655, 236, 1346, 238, 233, - 323, 61, 946, 42, 172, 226, 227, 237, 40, 183, - 90, 124, 641, 327, 235, 183, 330, 331, 332, 550, - 80, 81, 190, 989, 38, 133, 40, 40, 308, 1593, - 13, 1595, 943, 65, 694, 1001, 1002, 1003, 1004, 1005, - 1006, 952, 953, 954, 955, 956, 957, 374, 128, 170, - 994, 65, 65, 221, 114, 216, 198, 118, 226, 216, - 221, 222, 223, 224, 225, 226, 227, 224, 225, 226, - 227, 132, 240, 400, 235, 402, 403, 216, 235, 62, - 217, 249, 142, 115, 13, 224, 225, 226, 227, 47, - 404, 405, 215, 157, 77, 918, 235, 234, 423, 131, - 118, 115, 416, 230, 215, 1374, 589, 1444, 66, 61, - 822, 236, 772, 238, 8, 442, 430, 131, 131, 13, - 184, 652, 233, 835, 438, 232, 215, 214, 80, 443, - 237, 40, 215, 62, 126, 958, 450, 451, 8, 97, - 69, 466, 456, 13, 233, 459, 460, 51, 77, 141, - 233, 147, 466, 205, 206, 151, 65, 882, 481, 482, - 483, 886, 114, 215, 192, 488, 1336, 236, 62, 238, - 450, 129, 186, 187, 51, 69, 456, 500, 73, 459, - 460, 226, 227, 77, 1007, 945, 90, 1527, 502, 882, - 235, 56, 62, 886, 88, 51, 62, 62, 57, 69, - 960, 961, 96, 526, 63, 528, 115, 77, 1545, 969, - 236, 88, 238, 90, 216, 529, 75, 531, 88, 233, - 222, 223, 131, 237, 128, 84, 1575, 170, 1577, 1173, - 1174, 1175, 88, 993, 90, 13, 404, 405, 552, 98, - 554, 226, 227, 214, 173, 559, 104, 1070, 416, 1009, - 235, 128, 111, 93, 226, 227, 236, 788, 238, 188, - 69, 792, 1228, 235, 69, 796, 1210, 1211, 1212, 800, - 129, 236, 128, 804, 585, 586, 587, 808, 93, 173, - 594, 812, 911, 451, 62, 816, 236, 216, 238, 198, - 93, 69, 226, 227, 188, 224, 225, 226, 227, 77, - 236, 235, 238, 173, 143, 628, 235, 630, 631, 632, - 633, 236, 972, 238, 594, 70, 214, 215, 188, 217, - 1482, 219, 216, 236, 116, 238, 640, 221, 222, 223, - 224, 225, 226, 227, 4, 236, 650, 238, 1500, 9, - 93, 235, 656, 143, 238, 15, 216, 661, 70, 19, - 216, 221, 222, 223, 224, 225, 226, 227, 224, 225, - 226, 227, 153, 143, 173, 235, 70, 158, 173, 235, - 217, 15, 219, 149, 688, 689, 690, 691, 169, 188, - 232, 233, 550, 188, 915, 236, 230, 238, 179, 180, - 6, 236, 923, 238, 54, 173, 1351, 896, 897, 236, - 236, 238, 238, 895, 236, 226, 238, 216, 140, 237, - 188, 216, 203, 10, 140, 224, 225, 226, 227, 224, - 225, 226, 227, 236, 10, 238, 235, 237, 1188, 237, - 235, 216, 628, 13, 630, 631, 632, 633, 216, 224, - 225, 226, 227, 221, 222, 223, 224, 225, 226, 227, - 235, 765, 766, 767, 768, 769, 216, 235, 73, 113, - 35, 221, 222, 223, 224, 225, 226, 227, 782, 236, - 139, 238, 640, 236, 236, 235, 238, 216, 238, 236, - 1303, 238, 62, 216, 652, 224, 225, 226, 227, 69, - 93, 224, 225, 226, 227, 237, 235, 77, 236, 238, - 238, 236, 235, 238, 217, 819, 8, 821, 236, 136, - 238, 13, 237, 237, 841, 20, 237, 831, 237, 237, - 834, 237, 836, 101, 1055, 237, 237, 237, 237, 237, - 844, 8, 237, 233, 1357, 237, 13, 851, 233, 853, - 237, 855, 856, 857, 858, 10, 232, 237, 232, 863, - 76, 878, 1375, 867, 868, 140, 870, 76, 62, 76, - 62, 131, 876, 191, 844, 888, 10, 69, 882, 896, - 897, 851, 886, 896, 897, 77, 177, 196, 858, 93, - 54, 895, 896, 897, 898, 62, 88, 124, 902, 134, - 904, 905, 69, 173, 96, 237, 910, 56, 138, 232, - 77, 20, 232, 115, 927, 919, 920, 120, 188, 124, - 140, 88, 235, 124, 124, 56, 124, 238, 941, 96, - 238, 232, 902, 236, 904, 189, 214, 1158, 237, 943, - 944, 236, 92, 25, 72, 237, 216, 72, 952, 953, - 954, 955, 956, 957, 224, 225, 226, 227, 237, 96, - 93, 819, 221, 821, 201, 235, 163, 1480, 221, 1419, - 93, 101, 985, 221, 236, 168, 834, 990, 991, 236, - 238, 173, 24, 238, 116, 989, 238, 238, 992, 1320, - 1321, 1322, 1323, 1324, 1325, 238, 188, 1001, 1002, 1003, - 1004, 1005, 1006, 56, 216, 238, 173, 114, 81, 237, - 233, 332, 224, 225, 226, 227, 1366, 216, 876, 237, - 13, 188, 1535, 235, 216, 224, 225, 226, 227, 221, - 222, 223, 224, 225, 226, 227, 235, 143, 1042, 221, - 197, 1045, 216, 235, 1048, 232, 238, 237, 237, 216, - 224, 225, 226, 227, 221, 222, 223, 224, 225, 226, - 227, 235, 238, 238, 237, 1578, 1579, 238, 235, 62, - 238, 238, 234, 238, 237, 1079, 69, 1081, 1082, 1083, - 1084, 1085, 1086, 404, 77, 237, 1599, 1489, 214, 1093, - 1094, 237, 237, 237, 237, 1426, 237, 237, 62, 237, - 1104, 1105, 1275, 1120, 1108, 62, 216, 171, 237, 1309, - 237, 221, 222, 223, 224, 225, 226, 227, 237, 237, - 237, 1134, 237, 237, 88, 235, 237, 102, 1132, 237, - 1351, 221, 1463, 237, 1104, 237, 237, 237, 237, 237, - 237, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 216, - 1481, 237, 140, 133, 54, 222, 223, 224, 225, 226, - 227, 3, 140, 46, 6, 235, 54, 8, 235, 238, - 238, 237, 13, 238, 235, 17, 18, 62, 20, 237, - 173, 502, 24, 238, 1042, 236, 28, 29, 30, 31, - 238, 238, 238, 238, 216, 188, 29, 238, 180, 221, - 222, 223, 224, 225, 226, 227, 238, 238, 226, 59, - 531, 133, 214, 214, 124, 236, 198, 13, 237, 59, - 211, 62, 237, 216, 1228, 237, 237, 72, 69, 222, - 223, 224, 225, 226, 227, 90, 77, 237, 72, 54, - 96, 10, 235, 124, 174, 87, 214, 88, 237, 58, - 237, 1255, 216, 1257, 238, 96, 237, 221, 222, 223, - 224, 225, 226, 227, 238, 1269, 62, 238, 238, 238, - 1274, 1602, 238, 69, 1278, 237, 234, 238, 238, 238, - 236, 77, 1286, 238, 238, 238, 1290, 238, 1292, 238, - 238, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1269, - 238, 1305, 238, 238, 1274, 1309, 238, 1311, 71, 238, - 238, 238, 238, 238, 238, 238, 1320, 1321, 1322, 1323, - 1324, 1325, 1339, 238, 1341, 238, 15, 60, 160, 39, - 172, 39, 173, 175, 176, 214, 1340, 179, 180, 209, - 182, 183, 1346, 235, 186, 162, 237, 188, 190, 191, - 237, 237, 194, 237, 196, 197, 198, 237, 48, 237, - 1533, 203, 204, 94, 92, 95, 238, 688, 689, 690, - 691, 238, 98, 238, 238, 216, 238, 173, 238, 221, - 221, 222, 223, 224, 225, 226, 227, 238, 71, 238, - 238, 238, 188, 236, 235, 236, 1638, 1255, 240, 236, - 8, 243, 215, 108, 79, 1422, 237, 249, 238, 235, - 105, 73, 232, 1417, 238, 236, 1658, 8, 237, 93, - 216, 161, 1426, 172, 238, 221, 222, 223, 224, 225, - 226, 227, 1674, 238, 238, 238, 238, 238, 236, 235, - 1444, 238, 237, 214, 765, 766, 767, 768, 769, 237, - 13, 1464, 1465, 237, 4, 297, 238, 238, 232, 1463, - 230, 782, 234, 230, 0, 0, 308, 34, 1472, 1473, - 1474, 1475, 1476, 1477, 1478, 1479, 1114, 1481, 1482, 273, - 432, 853, 1340, 607, 875, 327, 403, 868, 330, 331, - 332, 855, 1312, 1351, 1111, 1543, 1500, 1630, 1644, 62, - 1609, 870, 1634, 118, 1671, 347, 69, 27, 1122, 898, - 14, 897, 250, 834, 77, 130, 410, 132, 328, 1577, - 502, 363, 137, 1527, 1640, 88, 1661, 1576, 200, 144, - 145, 310, 32, 148, 656, 851, 1598, 1120, 1581, 910, - 549, 1545, 846, 1547, 159, 1411, 566, 1678, 1200, 531, - 554, 363, 167, 658, 834, 170, 1573, 197, 550, 1417, - 1257, 1618, 404, 405, -1, -1, -1, -1, 1572, -1, - -1, 1575, -1, 1577, 416, 190, -1, 1581, -1, -1, - -1, -1, -1, 198, 199, -1, -1, -1, 430, -1, - -1, -1, 207, -1, -1, -1, 438, -1, 1602, -1, - -1, 443, 1572, -1, -1, -1, -1, -1, 450, 451, - 173, -1, -1, -1, 456, -1, -1, 459, 460, 1636, - 486, -1, 943, 944, 466, 188, -1, -1, -1, 1642, - -1, 952, 953, 954, 955, 956, 957, -1, 1642, -1, - -1, -1, 8, -1, -1, 487, -1, 13, -1, -1, - -1, -1, -1, 216, 1671, -1, -1, -1, 221, 222, - 223, 224, 225, 226, 227, 1678, -1, -1, 989, 1527, - -1, 992, 235, -1, 1678, -1, 1680, -1, -1, 13, - 1001, 1002, 1003, 1004, 1005, 1006, -1, 529, -1, -1, - -1, -1, -1, -1, -1, -1, 62, 8, -1, -1, - -1, -1, 13, 69, -1, 547, 688, 689, 690, 691, - 552, 77, 554, -1, -1, -1, -1, 559, -1, -1, - -1, -1, 88, -1, -1, -1, -1, -1, 62, -1, - 96, -1, -1, -1, -1, 69, -1, -1, -1, -1, - 606, 8, -1, 77, -1, -1, 13, -1, -1, -1, - -1, 62, 594, -1, 88, -1, -1, -1, 69, -1, - -1, -1, -1, 605, -1, -1, 77, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, - -1, -1, -1, 765, 766, 767, 768, 769, -1, -1, - -1, -1, -1, -1, -1, 62, -1, -1, 640, -1, - 782, -1, 69, -1, -1, -1, -1, 173, 650, -1, - 77, -1, -1, -1, 656, -1, -1, -1, -1, 661, - -1, 88, 188, -1, -1, -1, -1, -1, -1, 96, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, + 174, 204, 6, 25, 187, 388, 201, 330, 409, 1038, + 584, 640, 227, 17, 18, 1032, 20, 243, 857, 193, + 24, 1382, 1062, 977, 28, 29, 30, 31, 753, 754, + 755, 756, 757, 6, 437, 547, 6, 5, 47, 7, + 480, 33, 38, 54, 40, 770, 676, 677, 678, 679, + 6, 68, 39, 9, 56, 1223, 39, 66, 21, 39, + 134, 39, 25, 503, 39, 44, 115, 8, 56, 65, + 21, 336, 8, 115, 134, 3, 44, 194, 13, 689, + 56, 691, 692, 87, 16, 350, 135, 39, 125, 472, + 244, 78, 55, 93, 216, 6, 216, 934, 40, 61, + 935, 13, 134, 218, 55, 134, 40, 6, 198, 432, + 153, 57, 234, 553, 234, 205, 86, 56, 80, 115, + 235, 130, 80, 65, 68, 328, 10, 62, 331, 40, + 10, 45, 1493, 103, 134, 212, 132, 116, 90, 102, + 115, 215, 77, 42, 298, 982, 134, 10, 983, 125, + 62, 102, 114, 99, 65, 87, 114, 18, 56, 374, + 135, 233, 213, 24, 62, 77, 238, 28, 131, 141, + 31, 175, 176, 115, 251, 179, 180, 237, 182, 183, + 131, 109, 565, 187, 116, 222, 569, 191, 192, 238, + 132, 195, 188, 197, 198, 199, 238, 1365, 132, 1560, + 204, 205, 175, 176, 115, 237, 228, 239, 237, 182, + 239, 171, 1252, 1253, 1168, 134, 134, 216, 222, 230, + 237, 132, 195, 151, 197, 139, 87, 195, 157, 216, + 239, 496, 205, 216, 107, 237, 216, 241, 216, 167, + 244, 218, 238, 118, 216, 158, 250, 324, 218, 237, + 690, 1612, 118, 1614, 979, 184, 226, 199, 235, 132, + 643, 64, 234, 238, 231, 1294, 991, 992, 993, 994, + 995, 996, 185, 265, 266, 238, 217, 40, 282, 62, + 171, 217, 238, 40, 225, 226, 227, 228, 199, 225, + 226, 227, 228, 315, 298, 236, 118, 193, 73, 682, + 236, 218, 65, 933, 104, 309, 629, 216, 65, 226, + 113, 133, 942, 943, 944, 945, 946, 947, 237, 237, + 239, 239, 183, 333, 328, 234, 936, 331, 332, 333, + 191, 21, 237, 217, 239, 550, 309, 217, 222, 223, + 224, 225, 226, 227, 228, 225, 226, 227, 228, 39, + 153, 215, 236, 375, 217, 127, 236, 215, 115, 93, + 216, 222, 225, 226, 227, 228, 227, 237, 1322, 132, + 142, 883, 36, 236, 984, 132, 144, 760, 234, 401, + 241, 403, 404, 36, 37, 227, 228, 148, 4, 250, + 43, 152, 93, 9, 236, 405, 908, 61, 88, 15, + 53, 405, 406, 19, 481, 482, 483, 93, 61, 810, + 1450, 488, 102, 417, 67, 589, 80, 81, 108, 51, + 442, 282, 823, 500, 70, 640, 1265, 80, 81, 233, + 234, 62, 424, 437, 217, 116, 948, 1358, 91, 443, + 1361, 131, 225, 226, 227, 228, 450, 451, 93, 526, + 114, 528, 456, 236, 150, 459, 460, 88, 90, 862, + 1477, 114, 466, 866, 144, 70, 21, 862, 121, 122, + 1195, 866, 27, 51, 466, 144, 218, 450, 220, 143, + 227, 228, 70, 456, 39, 997, 459, 460, 231, 236, + 143, 1520, 502, 146, 217, 935, 15, 129, 502, 47, + 223, 224, 1240, 1543, 1242, 1243, 1244, 1245, 1246, 1247, + 950, 951, 90, 206, 207, 1089, 6, 1546, 66, 959, + 237, 531, 239, 216, 237, 529, 239, 531, 54, 1139, + 1140, 1141, 237, 88, 239, 227, 38, 614, 40, 616, + 617, 618, 619, 983, 405, 406, 10, 102, 552, 97, + 554, 129, 1064, 108, 141, 559, 417, 141, 237, 999, + 239, 776, 215, 65, 238, 780, 1176, 1177, 1178, 784, + 51, 10, 13, 788, 73, 1405, 131, 792, 901, 962, + 238, 796, 130, 51, 113, 800, 217, 35, 140, 804, + 451, 222, 223, 224, 225, 226, 227, 228, 1428, 1429, + 1430, 1431, 1432, 1433, 237, 93, 69, 88, 238, 90, + 227, 228, 218, 115, 227, 228, 237, 621, 239, 236, + 88, 62, 90, 236, 628, 101, 215, 216, 69, 218, + 132, 220, 227, 228, 638, 1373, 77, 585, 586, 587, + 644, 236, 238, 1381, 237, 649, 239, 1385, 129, 1387, + 137, 36, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, + 20, 129, 1400, 237, 234, 239, 676, 677, 678, 679, + 1299, 238, 676, 677, 678, 679, 61, 237, 237, 239, + 239, 1419, 238, 10, 238, 187, 188, 238, 238, 550, + 905, 886, 887, 238, 1524, 80, 81, 237, 913, 239, + 238, 238, 885, 1533, 1534, 1535, 1536, 1537, 1538, 1539, + 1540, 174, 1542, 217, 1154, 237, 234, 239, 222, 223, + 224, 225, 226, 227, 228, 237, 189, 239, 237, 114, + 239, 238, 234, 174, 76, 238, 238, 238, 123, 124, + 13, 238, 238, 753, 754, 755, 756, 757, 189, 753, + 754, 755, 756, 757, 217, 238, 233, 1495, 143, 237, + 770, 239, 225, 226, 227, 228, 770, 628, 237, 141, + 239, 233, 154, 236, 62, 76, 217, 159, 237, 640, + 239, 222, 223, 224, 225, 226, 227, 228, 170, 62, + 237, 868, 239, 1305, 1624, 236, 69, 76, 180, 181, + 237, 237, 239, 239, 77, 809, 237, 829, 239, 886, + 887, 1323, 822, 132, 237, 819, 239, 192, 822, 178, + 824, 614, 204, 616, 617, 618, 619, 197, 832, 238, + 1045, 1569, 93, 54, 125, 839, 858, 135, 238, 56, + 917, 845, 139, 847, 848, 849, 850, 233, 20, 233, + 115, 69, 856, 125, 931, 125, 125, 125, 862, 832, + 141, 239, 866, 121, 886, 887, 839, 236, 239, 237, + 119, 875, 56, 190, 215, 233, 238, 850, 92, 25, + 237, 885, 886, 887, 888, 93, 1398, 96, 892, 222, + 894, 895, 202, 164, 101, 93, 900, 10, 975, 222, + 222, 174, 875, 980, 981, 909, 910, 169, 237, 1124, + 24, 239, 237, 116, 56, 239, 189, 114, 239, 892, + 81, 894, 238, 933, 934, 239, 239, 1367, 239, 933, + 934, 1314, 942, 943, 944, 945, 946, 947, 942, 943, + 944, 945, 946, 947, 217, 238, 238, 234, 809, 222, + 223, 224, 225, 226, 227, 228, 174, 217, 238, 144, + 235, 822, 239, 236, 238, 225, 226, 227, 228, 979, + 233, 189, 982, 239, 238, 979, 236, 222, 982, 239, + 239, 991, 992, 993, 994, 995, 996, 991, 992, 993, + 994, 995, 996, 239, 238, 856, 238, 57, 238, 217, + 238, 333, 238, 63, 238, 238, 238, 225, 226, 227, + 228, 217, 238, 238, 1415, 75, 238, 198, 236, 225, + 226, 227, 228, 1100, 84, 238, 118, 1031, 1032, 1541, + 236, 1035, 215, 238, 1038, 1547, 1548, 238, 98, 238, + 72, 133, 238, 8, 238, 238, 138, 1559, 13, 238, + 238, 111, 217, 145, 146, 1059, 1078, 149, 1062, 238, + 225, 226, 227, 228, 238, 238, 72, 238, 160, 13, + 130, 236, 217, 405, 62, 239, 168, 141, 238, 171, + 225, 226, 227, 228, 1299, 1259, 1090, 222, 1092, 134, + 13, 236, 54, 141, 1098, 46, 236, 62, 54, 191, + 239, 193, 239, 239, 69, 217, 238, 199, 200, 1621, + 62, 217, 77, 225, 226, 227, 228, 236, 62, 225, + 226, 227, 228, 88, 236, 69, 237, 8, 238, 29, + 236, 96, 13, 77, 239, 239, 239, 239, 3, 62, + 239, 6, 239, 239, 239, 227, 69, 59, 134, 215, + 215, 237, 17, 18, 77, 20, 125, 238, 238, 24, + 59, 212, 54, 28, 29, 30, 31, 217, 96, 10, + 1031, 1032, 222, 223, 224, 225, 226, 227, 228, 125, + 172, 62, 102, 238, 175, 1195, 236, 215, 69, 239, + 58, 1195, 217, 239, 238, 238, 77, 222, 223, 224, + 225, 226, 227, 228, 239, 239, 239, 88, 486, 174, + 239, 236, 239, 239, 1417, 96, 238, 235, 239, 1223, + 239, 1225, 87, 239, 189, 239, 239, 237, 239, 71, + 174, 239, 239, 1237, 239, 239, 1240, 239, 1242, 1243, + 1244, 1245, 1246, 1247, 239, 189, 1268, 15, 1252, 1253, + 239, 174, 217, 60, 1258, 239, 239, 222, 223, 224, + 225, 226, 227, 228, 1237, 1269, 189, 1289, 239, 239, + 161, 236, 239, 217, 239, 1279, 1280, 215, 239, 1283, + 239, 225, 226, 227, 228, 1258, 239, 39, 238, 238, + 1294, 238, 236, 174, 217, 39, 210, 163, 48, 238, + 223, 224, 225, 226, 227, 228, 1279, 72, 189, 238, + 175, 176, 90, 236, 179, 180, 72, 182, 183, 94, + 239, 92, 187, 239, 239, 95, 191, 192, 239, 239, + 195, 239, 197, 198, 199, 239, 217, 239, 1512, 204, + 205, 222, 223, 224, 225, 226, 227, 228, 1370, 239, + 239, 237, 98, 71, 236, 236, 216, 222, 239, 238, + 237, 1365, 1223, 105, 73, 238, 233, 238, 238, 1373, + 239, 8, 108, 162, 238, 238, 241, 1381, 237, 244, + 238, 1385, 239, 1387, 239, 250, 1390, 1391, 1392, 1393, + 1394, 1395, 1396, 1397, 1620, 239, 1400, 236, 79, 239, + 238, 1405, 239, 237, 8, 238, 173, 239, 1269, 239, + 93, 215, 238, 1417, 238, 1419, 239, 282, 239, 239, + 233, 235, 231, 1649, 1428, 1429, 1430, 1431, 1432, 1433, + 4, 8, 231, 298, 0, 0, 13, 34, 1299, 593, + 855, 1667, 273, 1072, 309, 217, 1450, 404, 1525, 1526, + 431, 223, 224, 225, 226, 227, 228, 845, 549, 1286, + 847, 1420, 1090, 328, 236, 1567, 331, 332, 333, 1641, + 1663, 1631, 1092, 1477, 1655, 1664, 1080, 888, 27, 887, + 411, 14, 251, 348, 329, 62, 644, 1546, 1633, 1657, + 822, 1495, 69, 1545, 311, 201, 1518, 1078, 776, 364, + 77, 32, 780, 839, 1365, 13, 784, 1617, 900, 1550, + 788, 88, 807, 1517, 792, 1359, 1520, 566, 796, 96, + 1524, 1677, 800, 1166, 646, 834, 804, 550, 364, 1533, + 1534, 1535, 1536, 1537, 1538, 1539, 1540, 554, 1542, 1543, + 405, 406, 1546, 198, 1517, 1602, 1550, 1225, -1, -1, + -1, -1, 417, -1, 62, 822, -1, -1, 1635, -1, + -1, 69, -1, -1, -1, 1569, -1, 1571, -1, 77, + -1, -1, 437, -1, -1, -1, -1, -1, 443, -1, + -1, -1, -1, -1, -1, 450, 451, -1, -1, -1, + -1, 456, -1, -1, 459, 460, 1618, 174, -1, -1, + 1677, 466, -1, -1, -1, -1, 884, -1, -1, -1, + -1, -1, 189, -1, -1, -1, 1477, -1, -1, -1, + 1624, -1, 487, 8, -1, -1, -1, -1, 13, -1, + -1, 1635, -1, -1, -1, -1, -1, -1, -1, -1, + 217, -1, 1664, -1, -1, 222, 223, 224, 225, 226, + 227, 228, -1, -1, -1, -1, -1, -1, -1, 236, + -1, -1, 239, -1, 529, -1, 174, -1, 1000, -1, + -1, -1, -1, 1677, -1, 1679, -1, 62, -1, -1, + -1, 189, 547, -1, 69, -1, -1, 552, -1, 554, + -1, -1, 77, -1, 559, -1, -1, 180, -1, -1, + -1, -1, -1, 88, -1, -1, -1, -1, -1, 217, + -1, 96, -1, -1, -1, -1, 199, 225, 226, 227, + 228, -1, 1000, -1, -1, -1, -1, 1059, 236, 1007, + 1008, -1, 1010, 1011, -1, 1013, 1014, -1, 1016, 1017, + -1, 1019, 1020, -1, 1022, 1023, -1, 1025, 1026, -1, + 1028, 1029, -1, -1, -1, -1, 621, -1, -1, -1, + -1, -1, -1, 628, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 638, -1, -1, -1, 7, -1, 644, + -1, -1, 12, -1, 649, -1, -1, -1, -1, 174, + -1, -1, 22, -1, -1, -1, 26, -1, 28, -1, + -1, 13, -1, -1, 189, -1, -1, -1, 38, -1, + 40, -1, -1, -1, 44, -1, 46, -1, 48, -1, + -1, -1, 52, -1, -1, -1, -1, -1, 58, -1, + -1, -1, 217, -1, -1, 65, -1, 222, 223, 224, + 225, 226, 227, 228, -1, -1, -1, -1, 119, -1, + 62, 236, -1, -1, 239, -1, -1, 69, -1, -1, + 131, -1, 133, -1, 1196, 77, -1, 138, -1, -1, + -1, -1, -1, -1, 145, 146, -1, -1, 149, -1, + 110, -1, 112, -1, 1162, 115, 116, -1, 1166, 160, + -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, + 171, -1, 132, -1, -1, -1, -1, -1, 1240, -1, + 1242, 1243, 1244, 1245, 1246, 1247, -1, 147, 1196, -1, + 191, -1, 193, -1, -1, 155, 156, -1, 199, 200, + -1, -1, -1, -1, -1, 165, 166, 208, -1, -1, + -1, -1, -1, -1, 809, -1, 176, 177, 1280, 179, + -1, -1, 182, -1, 819, -1, -1, 822, 188, 824, + -1, -1, 174, -1, -1, -1, 196, 832, -1, -1, + -1, -1, -1, 203, 839, -1, -1, 189, -1, 209, + 845, 211, 847, 848, 849, 850, -1, -1, -1, -1, + -1, 856, -1, -1, -1, -1, -1, 862, -1, -1, + -1, 866, 1334, -1, -1, 217, -1, -1, 238, -1, + 875, 223, 224, 225, 226, 227, 228, -1, 883, 502, + 885, 886, 887, 888, 236, -1, -1, 892, -1, 894, + 895, -1, -1, -1, 8, 900, -1, -1, 1316, 13, + -1, 1373, 1320, 908, 909, 910, -1, -1, 531, 1381, + 1382, -1, -1, 1385, -1, 1387, -1, -1, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, -1, -1, 1400, -1, + -1, -1, -1, 1405, -1, -1, -1, -1, -1, -1, + 8, -1, -1, 948, -1, 13, -1, 1419, 62, -1, + -1, -1, -1, -1, -1, 69, 1428, 1429, 1430, 1431, + 1432, 1433, -1, 77, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, + -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 997, -1, 62, 1000, -1, -1, -1, 1471, + -1, 69, -1, -1, -1, -1, -1, -1, -1, 77, + -1, -1, -1, -1, -1, 1487, -1, -1, -1, -1, + 88, 1493, -1, 1495, -1, -1, 1031, 1032, 96, -1, + 1035, -1, -1, 1038, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 216, -1, -1, -1, 188, 221, 222, 223, 224, 225, - 226, 227, 173, -1, -1, -1, -1, -1, -1, 235, - -1, -1, 238, -1, -1, -1, 13, 188, -1, -1, - -1, 863, 216, -1, -1, -1, -1, 221, 222, 223, - 224, 225, 226, 227, -1, -1, -1, -1, -1, -1, - -1, 235, -1, -1, -1, 216, 173, 1228, -1, -1, - 221, 222, 223, 224, 225, 226, 227, -1, -1, -1, - -1, 188, 788, -1, 235, 62, 792, -1, -1, -1, - 796, -1, 69, -1, 800, -1, -1, -1, 804, -1, - 77, -1, 808, -1, -1, -1, 812, -1, -1, 216, - 816, -1, -1, -1, 221, 222, 223, 224, 225, 226, - 227, 943, 944, -1, -1, -1, -1, -1, 235, 236, - 952, 953, 954, 955, 956, 957, -1, 819, -1, 821, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 831, - -1, -1, 834, -1, 836, -1, -1, -1, -1, -1, - -1, -1, 844, -1, -1, -1, -1, 989, -1, 851, - 992, 853, 332, 855, 856, 857, 858, -1, -1, 1001, - 1002, 1003, 1004, 1005, 1006, 867, 868, -1, 870, -1, - -1, -1, -1, -1, 876, -1, 173, -1, -1, -1, - 882, -1, -1, -1, 886, -1, -1, -1, -1, -1, - -1, 188, -1, 895, 896, 897, 898, -1, -1, 8, - 902, -1, 904, 905, 13, -1, -1, -1, 910, -1, - -1, -1, -1, -1, -1, -1, 918, 919, 920, 216, - -1, -1, -1, -1, 404, 222, 223, 224, 225, 226, - 227, -1, -1, -1, -1, -1, -1, 1079, 235, 1081, - 1082, 1083, 1084, 1085, 1086, -1, -1, 118, -1, -1, - -1, -1, -1, 62, -1, -1, 958, -1, -1, -1, - 69, 132, -1, 1105, -1, -1, 137, -1, 77, -1, - -1, -1, -1, 144, 145, -1, -1, 148, -1, 88, - -1, -1, -1, -1, 1010, -1, -1, 96, 159, -1, - -1, 1017, 1018, -1, 1020, 1021, 167, 1023, 1024, 170, - 1026, 1027, -1, 1029, 1030, 1007, 1032, 1033, 1010, 1035, - 1036, -1, 1038, 1039, -1, -1, -1, -1, -1, 190, - -1, 192, -1, -1, -1, -1, -1, 198, 199, -1, + -1, -1, 1524, 676, 677, 678, 679, 1062, -1, 1064, + 174, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, -1, + 1542, -1, -1, -1, -1, 189, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1090, -1, 1092, 1560, -1, + -1, -1, -1, 1098, -1, 1567, -1, 1569, -1, -1, + -1, -1, -1, 217, -1, -1, 174, -1, 222, 223, + 224, 225, 226, 227, 228, -1, -1, -1, -1, -1, + -1, 189, 236, -1, -1, 239, -1, -1, -1, -1, + 753, 754, 755, 756, 757, -1, -1, -1, -1, -1, + 1612, -1, 1614, -1, -1, -1, -1, 770, -1, 217, + -1, 502, 1624, -1, 222, 223, 224, 225, 226, 227, + 228, -1, -1, -1, -1, -1, -1, -1, 236, 8, + -1, 239, -1, -1, 13, -1, -1, -1, -1, -1, + 531, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1042, -1, -1, 1045, -1, -1, 1048, -1, -1, -1, - -1, 350, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 173, -1, 365, -1, 1070, 368, - -1, 370, 371, 372, 373, -1, -1, -1, -1, 188, - -1, -1, -1, -1, -1, -1, 1228, -1, -1, -1, - -1, 1093, 1094, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1104, -1, -1, -1, 1108, 216, -1, -1, - -1, -1, 221, 222, 223, 224, 225, 226, 227, -1, - -1, -1, 421, -1, -1, -1, 235, -1, -1, 238, - 1132, -1, -1, -1, -1, -1, 1278, -1, -1, -1, - -1, -1, -1, -1, 1286, -1, -1, -1, 1290, 448, - 1292, -1, -1, 1295, 1296, 1297, 1298, 1299, 1300, 1301, - 1302, -1, -1, 1305, -1, -1, -1, -1, -1, 1311, - 1196, -1, -1, -1, 1200, -1, -1, 476, 1320, 1321, - 1322, 1323, 1324, 1325, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 499, -1, -1, 1229, 1346, -1, -1, 506, -1, 8, - -1, -1, -1, -1, 13, -1, 515, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1229, -1, -1, - -1, 530, -1, -1, -1, 534, -1, 536, -1, -1, - 539, 540, 541, 542, 543, 544, 545, 546, -1, -1, - -1, -1, -1, 1255, -1, 1257, -1, -1, -1, -1, - -1, -1, -1, 62, -1, -1, -1, 1269, -1, -1, - 69, -1, 1274, -1, -1, -1, -1, -1, 77, -1, - -1, -1, -1, -1, 1426, 1287, -1, -1, 502, 88, - -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, - -1, 1303, 1444, -1, -1, -1, -1, 1309, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 531, -1, -1, - -1, 1463, -1, -1, -1, -1, -1, -1, -1, -1, - 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1340, 1481, - -1, -1, 1368, -1, 1346, -1, 1372, -1, -1, -1, - -1, -1, -1, -1, 834, 1357, -1, -1, 657, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1375, 173, -1, -1, -1, -1, -1, - -1, -1, -1, 863, 1386, -1, -1, -1, -1, 188, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 701, 1545, 703, 704, -1, -1, -1, -1, - -1, -1, 711, -1, -1, 1417, -1, 216, -1, -1, - -1, -1, 221, 222, 223, 224, 225, 226, 227, -1, - -1, -1, -1, -1, 1436, -1, 235, 36, 37, 238, - 1442, -1, -1, -1, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 53, -1, -1, -1, -1, -1, - 1602, -1, 61, -1, -1, -1, -1, -1, 67, -1, - -1, 770, -1, -1, 688, 689, 690, 691, 1480, -1, - 1482, 80, 81, -1, -1, 784, -1, -1, -1, 788, - -1, -1, 91, 792, -1, -1, -1, 796, 1500, -1, - -1, 800, -1, -1, -1, 804, -1, -1, -1, 808, - -1, -1, -1, 812, -1, 114, -1, 816, -1, 1521, - -1, 120, 121, -1, -1, 1527, -1, -1, -1, -1, - 1010, -1, -1, 1535, 1536, -1, -1, -1, -1, -1, - -1, 1543, -1, 142, -1, 1547, 145, 846, -1, -1, - -1, 765, 766, 767, 768, 769, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 8, -1, 782, -1, - 1572, 13, -1, 1575, -1, 1577, 1578, 1579, -1, 1581, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1593, -1, 1595, -1, -1, -1, 1599, -1, 1079, - -1, 1081, 1082, 1083, 1084, 1085, 1086, -1, -1, -1, - -1, -1, -1, -1, -1, 214, -1, -1, -1, -1, - 62, -1, -1, 922, -1, 1105, -1, 69, -1, -1, - -1, -1, 931, -1, -1, 77, -1, -1, -1, -1, - 1642, 940, -1, -1, -1, -1, 88, 946, -1, 863, - -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 971, -1, -1, -1, 1678, -1, 1680, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 994, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1223, -1, + 1225, -1, -1, 62, -1, -1, -1, -1, -1, -1, + 69, -1, 1237, -1, -1, -1, -1, -1, 77, -1, + -1, -1, -1, -1, -1, -1, -1, 1252, 1253, 88, + -1, -1, -1, 1258, -1, -1, -1, 96, -1, -1, + -1, -1, -1, -1, 1269, -1, -1, -1, -1, -1, + 351, -1, -1, -1, 1279, -1, -1, -1, 1283, -1, + -1, -1, -1, -1, -1, 366, -1, -1, 369, 1294, + 371, 372, 373, 374, -1, -1, -1, -1, -1, -1, + 1305, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 933, 934, -1, -1, -1, -1, -1, -1, 1323, 942, + 943, 944, 945, 946, 947, 676, 677, 678, 679, 1334, + -1, -1, -1, -1, -1, 174, -1, -1, -1, -1, + -1, 422, -1, -1, -1, -1, -1, -1, -1, -1, + 189, -1, -1, -1, -1, -1, 979, -1, -1, 982, + 1365, -1, -1, -1, -1, -1, -1, 448, 991, 992, + 993, 994, 995, 996, -1, -1, -1, 1382, 217, -1, + -1, -1, -1, 222, 223, 224, 225, 226, 227, 228, + -1, -1, -1, 1398, -1, 476, -1, 236, 237, -1, + -1, -1, 753, 754, 755, 756, 757, -1, -1, -1, + -1, -1, 1417, -1, -1, -1, -1, -1, 499, 770, + -1, -1, -1, -1, -1, 506, -1, -1, -1, -1, + -1, -1, -1, -1, 515, -1, 1059, -1, -1, -1, + -1, -1, -1, -1, -1, 1450, -1, -1, -1, 530, + -1, -1, -1, 534, -1, 536, -1, -1, 539, 540, + 541, 542, 543, 544, 545, 546, 1471, -1, -1, -1, + -1, -1, 1477, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1487, -1, -1, -1, -1, -1, 1493, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 943, - 944, 173, -1, -1, -1, -1, -1, -1, 952, 953, - 954, 955, 956, 957, -1, -1, 188, -1, -1, 1229, + -1, -1, 1517, -1, -1, 1520, -1, 8, -1, -1, + -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1541, -1, 1543, -1, + -1, 1546, 1547, 1548, -1, 1550, -1, -1, -1, -1, + -1, -1, -1, -1, 1559, 1560, -1, -1, -1, -1, + -1, -1, 1567, -1, 645, -1, 1571, -1, -1, -1, + -1, 62, 1195, -1, -1, -1, -1, -1, 69, -1, + -1, -1, 933, 934, -1, -1, 77, -1, -1, -1, + -1, 942, 943, 944, 945, 946, 947, 88, -1, -1, + -1, -1, -1, -1, -1, 96, -1, 1612, 689, 1614, + 691, 692, -1, -1, 13, -1, 1621, 1240, 699, 1242, + 1243, 1244, 1245, 1246, 1247, -1, -1, -1, 979, -1, + 1635, 982, -1, -1, -1, -1, -1, -1, -1, -1, + 991, 992, 993, 994, 995, 996, -1, -1, -1, 1000, + -1, -1, -1, -1, -1, -1, -1, 1280, -1, -1, + -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, + 69, 1294, 1677, -1, 1679, -1, -1, 758, 77, -1, + -1, -1, -1, 174, -1, -1, -1, -1, -1, 88, + -1, 772, -1, -1, -1, 776, -1, -1, 189, 780, + -1, -1, -1, 784, -1, -1, -1, 788, 1059, -1, + -1, 792, -1, -1, -1, 796, -1, -1, -1, 800, + -1, -1, -1, 804, 8, -1, 217, -1, -1, 13, + -1, 222, 223, 224, 225, 226, 227, 228, -1, -1, + -1, -1, -1, -1, -1, 236, 237, -1, -1, -1, + 1373, -1, -1, 834, -1, -1, -1, -1, 1381, -1, + -1, -1, 1385, -1, 1387, -1, -1, 1390, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 174, -1, 1400, 62, -1, + -1, -1, 1405, -1, -1, 69, -1, -1, -1, -1, + 189, -1, -1, 77, -1, -1, 1419, 8, -1, -1, + 11, -1, 13, -1, 88, 1428, 1429, 1430, 1431, 1432, + 1433, -1, 96, -1, -1, -1, -1, -1, 217, -1, + -1, -1, -1, 222, 223, 224, 225, 226, 227, 228, + 41, 912, -1, -1, -1, -1, -1, 236, -1, -1, + 921, -1, -1, -1, 1195, 1196, -1, -1, -1, 930, + -1, 62, -1, -1, -1, 936, -1, -1, 69, -1, + -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, + -1, -1, 1495, -1, -1, -1, -1, 88, -1, -1, + 961, -1, -1, -1, -1, 96, -1, -1, -1, 1240, + 174, 1242, 1243, 1244, 1245, 1246, 1247, -1, -1, -1, + -1, 1524, -1, 984, -1, 189, -1, -1, -1, -1, + 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, -1, 1542, + -1, -1, -1, 134, -1, -1, -1, -1, -1, 1280, + -1, -1, -1, 217, -1, -1, -1, -1, 222, 223, + 224, 225, 226, 227, 228, -1, 1569, -1, -1, 8, + -1, -1, 236, 237, 13, -1, -1, -1, -1, -1, + -1, -1, -1, 174, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 189, -1, + -1, -1, -1, 1334, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1624, -1, 62, -1, -1, 217, -1, -1, -1, + 69, 222, 223, 224, 225, 226, 227, 228, 77, -1, + -1, -1, 1373, -1, -1, 236, -1, -1, -1, 88, + 1381, 1382, -1, -1, 1385, -1, 1387, 96, -1, 1390, + 1391, 1392, 1393, 1394, 1395, 1396, 1397, -1, -1, 1400, + -1, -1, -1, -1, 1405, -1, -1, -1, 1139, 1140, + 1141, -1, -1, -1, -1, -1, -1, -1, 1419, -1, + -1, -1, -1, -1, -1, -1, -1, 1428, 1429, 1430, + 1431, 1432, 1433, -1, -1, 1166, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1176, 1177, 1178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 216, 989, -1, -1, 992, 221, - 222, 223, 224, 225, 226, 227, -1, 1001, 1002, 1003, - 1004, 1005, 1006, 235, 236, -1, 1010, -1, 1278, -1, - -1, -1, -1, -1, -1, -1, 1286, 1287, -1, -1, - 1290, -1, 1292, -1, -1, 1295, 1296, 1297, 1298, 1299, - 1300, 1301, 1302, -1, -1, 1305, -1, -1, -1, -1, - -1, 1311, -1, -1, -1, -1, -1, -1, -1, -1, - 1320, 1321, 1322, 1323, 1324, 1325, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1079, -1, 1081, 1082, 1083, - 1084, 1085, 1086, -1, 1173, 1174, 1175, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1105, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1200, -1, -1, -1, -1, 1386, -1, -1, -1, - -1, 1210, 1211, 1212, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 1426, -1, -1, 8, - -1, -1, 11, -1, 13, -1, 1436, -1, -1, -1, - -1, -1, 1442, -1, 1444, 8, -1, -1, -1, -1, - 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 41, 1463, -1, -1, -1, -1, -1, -1, - -1, -1, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, - -1, 1481, -1, 62, -1, -1, -1, -1, -1, -1, - 69, -1, -1, -1, 1228, 1229, -1, -1, 77, 62, - -1, -1, -1, -1, -1, -1, 69, -1, -1, 88, - -1, -1, -1, -1, 77, -1, -1, 96, -1, -1, - -1, 1521, -1, -1, -1, 88, -1, -1, -1, -1, - -1, -1, -1, 96, -1, -1, 1536, -1, -1, -1, - -1, -1, -1, 1543, 1278, 1545, 8, -1, 10, -1, - -1, 13, 1286, 1287, 133, -1, 1290, -1, 1292, -1, - -1, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, -1, - -1, 1305, -1, -1, -1, -1, -1, 1311, -1, -1, - -1, -1, -1, -1, -1, -1, 1320, 1321, 1322, 1323, - 1324, 1325, -1, 1593, 173, 1595, -1, -1, -1, -1, - 62, 1420, 1602, -1, -1, -1, -1, 69, -1, 188, - 173, -1, -1, -1, -1, 77, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 188, 88, -1, -1, -1, - -1, -1, -1, -1, 96, -1, -1, 216, -1, -1, - -1, -1, 221, 222, 223, 224, 225, 226, 227, -1, - -1, -1, 1386, 216, -1, -1, 235, -1, 221, 222, - 223, 224, 225, 226, 227, -1, 229, -1, -1, -1, - -1, 234, 235, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1426, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1436, -1, -1, -1, -1, -1, 1442, -1, - 1444, 173, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 188, -1, -1, 1463, - -1, -1, -1, -1, -1, -1, -1, -1, 1472, 1473, - 1474, 1475, 1476, 1477, 1478, 1479, -1, 1481, -1, -1, - -1, -1, -1, -1, 216, -1, -1, -1, -1, 221, - 222, 223, 224, 225, 226, 227, 3, 4, -1, -1, - -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, - 17, 18, 19, 20, -1, -1, 23, 1521, -1, -1, + -1, -1, -1, -1, -1, 174, -1, -1, -1, -1, + 1471, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 189, -1, -1, -1, -1, -1, 1487, -1, -1, -1, + -1, -1, 1493, -1, 1495, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, + -1, -1, -1, 222, 223, 224, 225, 226, 227, 228, + -1, 230, -1, 1524, -1, -1, 235, 236, -1, -1, + -1, -1, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, + -1, 1542, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3, 4, -1, 1560, + -1, -1, -1, -1, -1, -1, 1567, -1, 1569, -1, + 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, - 37, -1, 1536, -1, -1, -1, 43, -1, -1, 1543, - -1, 1545, 49, 50, 51, -1, 53, -1, -1, -1, - -1, -1, 1641, -1, 61, -1, -1, 64, -1, -1, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, 49, 50, 51, -1, 53, -1, -1, -1, + -1, 1612, -1, 1614, 61, -1, -1, 64, -1, -1, + 67, -1, -1, 1624, -1, 72, 73, -1, -1, -1, + -1, -1, 79, 80, 81, -1, 83, 1368, 85, 86, + -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, + -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, + 117, -1, -1, -1, 121, 122, 123, 124, -1, -1, + -1, 128, 129, -1, -1, -1, 133, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, -1, -1, -1, 226, + 227, -1, 229, 230, 231, -1, 3, 4, -1, -1, + -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, + 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, 49, 50, 51, -1, 53, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, - -1, 88, 89, 90, 91, 92, -1, 94, 95, 1593, - -1, 1595, -1, 100, -1, -1, 103, 104, 1602, -1, + -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, + -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - 117, -1, -1, 120, 121, 122, 123, -1, -1, -1, - 127, 128, -1, -1, -1, 132, -1, -1, 135, -1, - -1, -1, -1, -1, -1, 142, 143, 144, 145, -1, - 147, 148, -1, 150, 151, -1, 153, -1, -1, 156, - 157, 158, 159, 160, -1, 162, 163, -1, -1, 166, - 167, 168, 169, 170, 171, 172, 173, 174, -1, -1, - 177, -1, 179, 180, -1, 182, 183, 184, -1, 186, - -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, 201, -1, 203, 204, 205, 206, - 207, -1, -1, -1, 211, -1, 213, 214, 215, 216, - 217, 218, 219, -1, -1, -1, -1, -1, 225, 226, - -1, 228, 229, 230, 3, 4, -1, -1, -1, -1, - 237, 238, -1, -1, -1, -1, -1, -1, 17, 18, - 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, - -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, - 49, 50, 51, -1, 53, -1, -1, -1, -1, -1, - -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, - -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, 83, -1, 85, 86, -1, 88, - 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, - -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, - 109, -1, -1, -1, 113, 114, -1, -1, 117, -1, - -1, 120, 121, 122, 123, -1, -1, -1, 127, 128, - -1, -1, -1, 132, -1, -1, 135, -1, -1, -1, - -1, -1, -1, 142, 143, 144, 145, -1, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, -1, -1, 177, -1, - 179, 180, -1, 182, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, 204, 205, 206, 207, -1, - -1, -1, 211, -1, 213, 214, 215, 216, 217, 218, - 219, -1, -1, -1, -1, -1, 225, 3, 4, 228, - 229, 230, -1, -1, -1, -1, -1, -1, 237, 238, - -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, 49, 50, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, 88, 89, 90, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, -1, -1, 225, - 3, 4, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 238, -1, -1, 18, 19, 20, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, + 117, -1, -1, 1634, 121, 122, 123, 124, -1, -1, + -1, 128, 129, -1, -1, -1, 133, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, -1, -1, -1, 226, + 3, 4, 229, 230, 231, -1, -1, -1, -1, -1, + -1, 238, 239, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, - 43, -1, -1, -1, -1, -1, -1, -1, 51, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, - 83, -1, 85, 86, -1, -1, -1, -1, 91, 92, - -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, + 83, -1, 85, 86, -1, 88, 89, 90, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, - 113, 114, -1, -1, -1, -1, -1, 120, 121, 122, - 123, -1, -1, -1, -1, 128, -1, -1, -1, 132, - -1, -1, 135, -1, -1, -1, -1, -1, -1, 142, - 143, 144, 145, -1, 147, 148, -1, 150, 151, -1, - 153, -1, -1, 156, 157, 158, 159, 160, -1, 162, - 163, -1, -1, 166, 167, 168, 169, 170, 171, 172, - 173, 174, -1, -1, 177, -1, 179, 180, -1, -1, - 183, 184, -1, 186, -1, 188, 189, 190, 191, 192, - 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, - 203, 204, 205, 206, 207, -1, -1, -1, 211, -1, - 213, 214, 215, 216, 217, 218, 219, -1, -1, -1, - -1, -1, 225, 3, 4, 228, 229, 230, -1, -1, - -1, -1, -1, -1, 237, 238, -1, -1, 18, 19, - 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 36, 37, -1, -1, - -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, - -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, - -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, -1, 83, -1, 85, 86, -1, 88, -1, - 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, - -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, - -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, - 120, 121, 122, 123, -1, -1, -1, -1, 128, -1, - -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, - -1, -1, 142, 143, 144, 145, -1, 147, 148, -1, - 150, 151, -1, 153, -1, -1, 156, 157, 158, 159, - 160, -1, 162, 163, -1, -1, 166, 167, 168, 169, - 170, 171, 172, 173, 174, -1, -1, 177, -1, 179, - 180, -1, -1, 183, 184, -1, 186, -1, 188, 189, - 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, - 200, 201, -1, 203, 204, 205, 206, 207, -1, -1, - -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, - -1, -1, -1, 3, 4, 225, -1, -1, 228, 229, - 230, -1, -1, -1, -1, -1, -1, 237, 238, 19, - 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 36, 37, -1, -1, - -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 53, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, - -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, -1, 83, -1, 85, 86, -1, -1, -1, - -1, 91, 92, -1, 94, 95, -1, -1, -1, -1, - -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, - -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, - 120, 121, 122, 123, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, - -1, -1, 142, 143, 144, 145, -1, 147, 148, -1, - 150, 151, -1, 153, -1, -1, 156, 157, 158, 159, - 160, -1, 162, 163, -1, -1, 166, 167, 168, 169, - 170, 171, 172, 173, 174, -1, -1, 177, -1, 179, - 180, -1, -1, 183, 184, -1, 186, -1, 188, 189, - 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, - 200, 3, 4, 203, 204, 205, 206, 207, -1, -1, - -1, 211, 14, 213, 214, 17, 18, 19, 20, -1, - -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, - 32, 33, 34, -1, 36, 37, -1, -1, 238, -1, - -1, 43, -1, -1, -1, -1, -1, 49, 50, 51, - -1, 53, -1, -1, 56, -1, -1, -1, -1, 61, - -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, - 72, 73, 74, -1, -1, -1, -1, 79, 80, 81, - -1, 83, -1, 85, 86, -1, 88, 89, 90, 91, - 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, - -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, - -1, 113, 114, -1, -1, 117, -1, -1, 120, 121, - 122, 123, -1, 125, -1, 127, 128, -1, -1, -1, - 132, -1, -1, 135, -1, -1, -1, -1, -1, -1, - 142, 143, 144, 145, -1, 147, 148, -1, 150, 151, - -1, 153, -1, -1, 156, 157, 158, 159, 160, -1, - 162, 163, -1, -1, 166, 167, 168, 169, 170, 171, - 172, 173, 174, -1, -1, 177, -1, 179, 180, -1, - 182, 183, 184, -1, 186, -1, 188, 189, 190, 191, - 192, 193, 194, -1, 196, 197, 198, 199, 200, 201, - -1, 203, 204, 205, 206, 207, -1, -1, -1, 211, - -1, 213, 214, 215, 216, 217, 218, 219, -1, -1, - -1, -1, -1, 225, -1, -1, 228, 229, 230, 3, - 4, -1, -1, -1, -1, 237, -1, -1, -1, -1, - 14, -1, -1, 17, 18, 19, 20, -1, -1, 23, - -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, - -1, -1, -1, -1, -1, 49, 50, 51, -1, 53, - -1, -1, 56, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, - 74, -1, -1, -1, -1, 79, 80, 81, -1, 83, - -1, 85, 86, -1, 88, 89, 90, 91, 92, -1, - 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, 3, 4, 229, 230, 231, -1, + -1, -1, -1, -1, -1, 238, 239, -1, -1, 18, + 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 31, 32, 33, 34, -1, 36, 37, -1, + -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, + -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, + -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, + -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, + 79, 80, 81, -1, 83, -1, 85, 86, -1, -1, + -1, -1, 91, 92, -1, 94, 95, -1, -1, -1, + -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, + 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, + -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, + 129, -1, -1, -1, 133, -1, -1, 136, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, -1, 148, + 149, -1, 151, 152, -1, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, 178, + -1, 180, 181, -1, -1, 184, 185, -1, 187, -1, + 189, 190, 191, 192, 193, 194, 195, -1, 197, 198, + 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, + -1, -1, -1, 212, -1, 214, 215, 216, 217, 218, + 219, 220, -1, -1, -1, -1, -1, 226, 3, 4, + 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, + 239, -1, -1, 18, 19, 20, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, + -1, -1, -1, -1, -1, -1, 51, -1, 53, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, + -1, -1, -1, -1, 79, 80, 81, -1, 83, -1, + 85, 86, -1, 88, -1, 90, 91, 92, -1, 94, + 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, + -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, + -1, -1, -1, -1, -1, -1, 121, 122, 123, 124, + -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, + -1, 136, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, -1, -1, 178, -1, 180, 181, -1, -1, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, 202, -1, 204, + 205, 206, 207, 208, -1, -1, -1, 212, -1, 214, + 215, 216, 217, 218, 219, 220, -1, -1, -1, 3, + 4, 226, -1, -1, 229, 230, 231, -1, -1, -1, + -1, -1, -1, 238, 239, 19, 20, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, 37, -1, -1, -1, -1, -1, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, + -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, + -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, + -1, 85, 86, -1, -1, -1, -1, 91, 92, -1, + 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, -1, -1, 117, -1, -1, 120, 121, 122, 123, - -1, 125, -1, 127, 128, -1, -1, -1, 132, -1, - -1, 135, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, -1, -1, 177, -1, 179, 180, -1, 182, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, 201, -1, 203, - 204, 205, 206, 207, -1, -1, -1, 211, -1, 213, - 214, 215, 216, 217, 218, 219, -1, -1, -1, -1, - -1, 225, -1, -1, 228, 229, 230, 3, 4, -1, - -1, -1, -1, 237, -1, -1, -1, -1, 14, -1, + 114, -1, -1, -1, -1, -1, -1, 121, 122, 123, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 136, -1, -1, -1, -1, -1, -1, 143, + 144, 145, 146, -1, 148, 149, -1, 151, 152, -1, + 154, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, -1, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, 178, -1, 180, 181, -1, -1, + 184, 185, -1, 187, -1, 189, 190, 191, 192, 193, + 194, 195, -1, 197, 198, 199, 200, 201, 3, 4, + 204, 205, 206, 207, 208, -1, -1, -1, 212, 14, + 214, 215, 17, 18, 19, 20, -1, -1, 23, -1, + -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, + -1, 36, 37, -1, -1, 239, -1, -1, 43, -1, + -1, -1, -1, -1, 49, 50, 51, -1, 53, -1, + -1, 56, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, 67, -1, -1, -1, -1, 72, 73, 74, + -1, -1, -1, -1, 79, 80, 81, -1, 83, -1, + 85, 86, -1, 88, 89, 90, 91, 92, -1, 94, + 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, + -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, + -1, -1, 117, -1, -1, -1, 121, 122, 123, 124, + -1, 126, -1, 128, 129, -1, -1, -1, 133, -1, + -1, 136, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, -1, -1, 178, -1, 180, 181, -1, 183, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, 202, -1, 204, + 205, 206, 207, 208, -1, -1, -1, 212, -1, 214, + 215, 216, 217, 218, 219, 220, -1, -1, -1, -1, + -1, 226, -1, -1, 229, 230, 231, 3, 4, -1, + -1, -1, -1, 238, -1, -1, -1, -1, 14, -1, -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, @@ -3731,19 +3708,42 @@ static const short yycheck[] = { 3, 86, -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, 125, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, -1, -1, 225, - 3, 4, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, -1, -1, 17, 18, 19, 20, -1, -1, + -1, 117, -1, -1, -1, 121, 122, 123, 124, -1, + 126, -1, 128, 129, -1, -1, -1, 133, -1, -1, + 136, -1, -1, -1, -1, -1, -1, 143, 144, 145, + 146, -1, 148, 149, -1, 151, 152, -1, 154, -1, + -1, 157, 158, 159, 160, 161, -1, 163, 164, -1, + -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, + -1, -1, 178, -1, 180, 181, -1, 183, 184, 185, + -1, 187, -1, 189, 190, 191, 192, 193, 194, 195, + -1, 197, 198, 199, 200, 201, 202, -1, 204, 205, + 206, 207, 208, -1, -1, -1, 212, -1, 214, 215, + 216, 217, 218, 219, 220, -1, -1, -1, -1, -1, + 226, -1, -1, 229, 230, 231, 3, 4, -1, -1, + -1, -1, 238, -1, -1, -1, -1, 14, -1, -1, + 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, 49, 50, 51, -1, 53, -1, -1, 56, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, + 67, -1, -1, -1, -1, 72, 73, 74, -1, -1, + -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, + -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, + -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, + 117, -1, -1, -1, 121, 122, 123, 124, -1, 126, + -1, 128, 129, -1, -1, -1, 133, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, -1, -1, -1, 226, + 3, 4, 229, 230, 231, -1, -1, -1, -1, -1, + -1, 238, -1, -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, @@ -3753,42 +3753,202 @@ static const short yycheck[] = { 3, 83, -1, 85, 86, -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, - 113, 114, -1, -1, 117, -1, -1, 120, 121, 122, - 123, -1, -1, -1, 127, 128, -1, -1, -1, 132, - -1, -1, 135, -1, -1, -1, -1, -1, -1, 142, - 143, 144, 145, -1, 147, 148, -1, 150, 151, -1, - 153, -1, -1, 156, 157, 158, 159, 160, -1, 162, - 163, -1, -1, 166, 167, 168, 169, 170, 171, 172, - 173, 174, -1, -1, 177, -1, 179, 180, -1, 182, - 183, 184, -1, 186, -1, 188, 189, 190, 191, 192, - 193, 194, -1, 196, 197, 198, 199, 200, 201, -1, - 203, 204, 205, 206, 207, -1, -1, -1, 211, -1, - 213, 214, 215, 216, 217, 218, 219, -1, -1, -1, - -1, -1, 225, 226, -1, 228, 229, 230, -1, 3, - 4, -1, 6, -1, 237, 9, -1, -1, -1, -1, - -1, -1, -1, 17, 18, 19, 20, -1, -1, 23, - -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, - -1, -1, -1, -1, -1, 49, 50, 51, -1, 53, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, - -1, 85, 86, -1, 88, 89, -1, 91, 92, -1, - 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, - 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, -1, -1, 117, -1, -1, 120, 121, 122, 123, - -1, -1, -1, 127, 128, -1, -1, -1, 132, -1, - -1, 135, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, -1, -1, 177, -1, 179, 180, -1, 182, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, 201, -1, 203, - 204, 205, 206, 207, -1, -1, -1, 211, -1, 213, - 214, 215, 216, 217, 218, 219, -1, -1, -1, -1, - -1, 225, -1, -1, 228, 229, 230, -1, 3, 4, - -1, 6, -1, 237, 9, -1, -1, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, 227, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, -1, -1, 229, 230, 231, -1, + 3, 4, -1, 6, -1, 238, 9, -1, -1, -1, + -1, -1, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, -1, -1, 226, 3, 4, 229, 230, 231, -1, + -1, -1, -1, -1, -1, 238, -1, -1, 17, 18, + 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, + -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, + -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, + 49, 50, 51, -1, 53, -1, -1, 56, -1, -1, + -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, + -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, + 79, 80, 81, -1, 83, -1, 85, 86, -1, 88, + 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, + -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, + 109, -1, -1, -1, 113, 114, -1, -1, 117, -1, + -1, -1, 121, 122, 123, 124, -1, -1, -1, 128, + 129, -1, -1, -1, 133, -1, -1, 136, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, -1, 148, + 149, -1, 151, 152, -1, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, 178, + -1, 180, 181, -1, 183, 184, 185, -1, 187, -1, + 189, 190, 191, 192, 193, 194, 195, -1, 197, 198, + 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, + -1, -1, -1, 212, -1, 214, 215, 216, 217, 218, + 219, 220, -1, -1, -1, -1, -1, 226, 3, 4, + 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, @@ -3796,181 +3956,22 @@ static const short yycheck[] = { 3, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, -1, - 85, 86, -1, 88, 89, -1, 91, 92, -1, 94, + 85, 86, -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, - -1, -1, 117, -1, -1, 120, 121, 122, 123, -1, - -1, -1, 127, 128, -1, -1, -1, 132, -1, -1, - 135, -1, -1, -1, -1, -1, -1, 142, 143, 144, - 145, -1, 147, 148, -1, 150, 151, -1, 153, -1, - -1, 156, 157, 158, 159, 160, -1, 162, 163, -1, - -1, 166, 167, 168, 169, 170, 171, 172, 173, 174, - -1, -1, 177, -1, 179, 180, -1, 182, 183, 184, - -1, 186, -1, 188, 189, 190, 191, 192, 193, 194, - -1, 196, 197, 198, 199, 200, 201, -1, 203, 204, - 205, 206, 207, -1, -1, -1, 211, -1, 213, 214, - 215, 216, 217, 218, 219, -1, -1, -1, -1, -1, - 225, -1, -1, 228, 229, 230, -1, 3, 4, -1, - 6, -1, 237, 9, -1, -1, -1, -1, -1, -1, - -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, 49, 50, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, 88, 89, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, -1, -1, 225, - -1, -1, 228, 229, 230, -1, 3, 4, -1, 6, - -1, 237, 9, -1, -1, -1, -1, -1, -1, -1, - 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, - 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, - -1, -1, 49, 50, 51, -1, 53, -1, -1, -1, - -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, - 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, - -1, 88, 89, -1, 91, 92, -1, 94, 95, -1, - -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, - 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - 117, -1, -1, 120, 121, 122, 123, -1, -1, -1, - 127, 128, -1, -1, -1, 132, -1, -1, 135, -1, - -1, -1, -1, -1, -1, 142, 143, 144, 145, -1, - 147, 148, -1, 150, 151, -1, 153, -1, -1, 156, - 157, 158, 159, 160, -1, 162, 163, -1, -1, 166, - 167, 168, 169, 170, 171, 172, 173, 174, -1, -1, - 177, -1, 179, 180, -1, 182, 183, 184, -1, 186, - -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, 201, -1, 203, 204, 205, 206, - 207, -1, -1, -1, 211, -1, 213, 214, 215, 216, - 217, 218, 219, -1, -1, -1, -1, -1, 225, -1, - -1, 228, 229, 230, -1, 3, 4, -1, 6, -1, - 237, 9, -1, -1, -1, -1, -1, -1, -1, 17, - 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, - -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, - -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, - -1, 49, 50, 51, -1, 53, -1, -1, -1, -1, - -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, - -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, - -1, 79, 80, 81, -1, 83, -1, 85, 86, -1, - 88, 89, -1, 91, 92, -1, 94, 95, -1, -1, - -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, - -1, 109, -1, -1, -1, 113, 114, -1, -1, 117, - -1, -1, 120, 121, 122, 123, -1, -1, -1, 127, - 128, -1, -1, -1, 132, -1, -1, 135, -1, -1, - -1, -1, -1, -1, 142, 143, 144, 145, -1, 147, - 148, -1, 150, 151, -1, 153, -1, -1, 156, 157, - 158, 159, 160, -1, 162, 163, -1, -1, 166, 167, - 168, 169, 170, 171, 172, 173, 174, -1, -1, 177, - -1, 179, 180, -1, 182, 183, 184, -1, 186, -1, - 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, - 198, 199, 200, 201, -1, 203, 204, 205, 206, 207, - -1, -1, -1, 211, -1, 213, 214, 215, 216, 217, - 218, 219, -1, -1, -1, -1, -1, 225, -1, -1, - 228, 229, 230, -1, 3, 4, -1, 6, -1, 237, - 9, -1, -1, -1, -1, -1, -1, -1, 17, 18, - 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, - -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, - 49, 50, 51, -1, 53, -1, -1, -1, -1, -1, - -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, - -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, 83, -1, 85, 86, -1, 88, - 89, -1, 91, 92, -1, 94, 95, -1, -1, -1, - -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, - 109, -1, -1, -1, 113, 114, -1, -1, 117, -1, - -1, 120, 121, 122, 123, -1, -1, -1, 127, 128, - -1, -1, -1, 132, -1, -1, 135, -1, -1, -1, - -1, -1, -1, 142, 143, 144, 145, -1, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, -1, -1, 177, -1, - 179, 180, -1, 182, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, 204, 205, 206, 207, -1, - -1, -1, 211, -1, 213, 214, 215, 216, 217, 218, - 219, -1, -1, -1, -1, -1, 225, -1, -1, 228, - 229, 230, -1, 3, 4, -1, 6, -1, 237, 9, - -1, -1, -1, -1, -1, -1, -1, 17, 18, 19, - 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, - 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, - -1, -1, -1, 43, -1, -1, -1, -1, -1, 49, - 50, 51, -1, 53, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, - -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, -1, 83, -1, 85, 86, -1, 88, 89, - -1, 91, 92, -1, 94, 95, -1, -1, -1, -1, - 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, - -1, -1, -1, 113, 114, -1, -1, 117, -1, -1, - 120, 121, 122, 123, -1, -1, -1, 127, 128, -1, - -1, -1, 132, -1, -1, 135, -1, -1, -1, -1, - -1, -1, 142, 143, 144, 145, -1, 147, 148, -1, - 150, 151, -1, 153, -1, -1, 156, 157, 158, 159, - 160, -1, 162, 163, -1, -1, 166, 167, 168, 169, - 170, 171, 172, 173, 174, -1, -1, 177, -1, 179, - 180, -1, 182, 183, 184, -1, 186, -1, 188, 189, - 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, - 200, 201, -1, 203, 204, 205, 206, 207, -1, -1, - -1, 211, -1, 213, 214, 215, 216, 217, 218, 219, - -1, -1, -1, -1, -1, 225, 3, 4, 228, 229, - 230, -1, -1, -1, -1, -1, -1, 237, -1, -1, - 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, - -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, - 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, - -1, -1, 49, 50, 51, -1, 53, -1, -1, 56, - -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, - 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, - -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, - -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, - 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - 117, -1, -1, 120, 121, 122, 123, -1, -1, -1, - 127, 128, -1, -1, -1, 132, -1, -1, 135, -1, - -1, -1, -1, -1, -1, 142, 143, 144, 145, -1, - 147, 148, -1, 150, 151, -1, 153, -1, -1, 156, - 157, 158, 159, 160, -1, 162, 163, -1, -1, 166, - 167, 168, 169, 170, 171, 172, 173, 174, -1, -1, - 177, -1, 179, 180, -1, 182, 183, 184, -1, 186, - -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, 201, -1, 203, 204, 205, 206, - 207, -1, -1, -1, 211, -1, 213, 214, 215, 216, - 217, 218, 219, -1, -1, -1, -1, -1, 225, 3, - 4, 228, 229, 230, -1, -1, -1, -1, -1, -1, - 237, -1, -1, 17, 18, 19, 20, -1, -1, 23, - -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, - 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, - -1, -1, -1, -1, -1, 49, 50, 51, -1, 53, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, - -1, 85, 86, -1, 88, 89, 90, 91, 92, -1, - 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, - 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, 115, -1, 117, -1, -1, 120, 121, 122, 123, - -1, -1, -1, 127, 128, -1, -1, -1, 132, -1, - -1, 135, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, -1, -1, 177, -1, 179, 180, -1, 182, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, 201, -1, 203, - 204, 205, 206, 207, -1, -1, -1, 211, -1, 213, - 214, 215, 216, 217, 218, 219, -1, -1, -1, -1, - -1, 225, 3, 4, 228, 229, 230, -1, -1, -1, - -1, -1, -1, 237, -1, -1, 17, 18, 19, 20, + 115, -1, 117, -1, -1, -1, 121, 122, 123, 124, + -1, -1, -1, 128, 129, -1, -1, -1, 133, -1, + -1, 136, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, -1, -1, 178, -1, 180, 181, -1, 183, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, 202, -1, 204, + 205, 206, 207, 208, -1, -1, -1, 212, -1, 214, + 215, 216, 217, 218, 219, 220, -1, -1, -1, -1, + -1, 226, 3, 4, 229, 230, 231, -1, -1, -1, + -1, -1, -1, 238, -1, -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, 49, 50, @@ -3980,197 +3981,220 @@ static const short yycheck[] = { 3, 81, -1, 83, -1, 85, 86, -1, 88, 89, 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, - -1, -1, 113, 114, -1, -1, 117, -1, -1, 120, - 121, 122, 123, -1, -1, -1, 127, 128, -1, -1, - -1, 132, -1, -1, 135, -1, -1, -1, -1, -1, - -1, 142, 143, 144, 145, -1, 147, 148, -1, 150, - 151, -1, 153, -1, -1, 156, 157, 158, 159, 160, - -1, 162, 163, -1, -1, 166, 167, 168, 169, 170, - 171, 172, 173, 174, -1, -1, 177, -1, 179, 180, - -1, 182, 183, 184, -1, 186, -1, 188, 189, 190, - 191, 192, 193, 194, -1, 196, 197, 198, 199, 200, - 201, -1, 203, 204, 205, 206, 207, -1, -1, -1, - 211, -1, 213, 214, 215, 216, 217, 218, 219, -1, - -1, -1, -1, -1, 225, -1, -1, 228, 229, 230, - -1, 3, 4, -1, 6, -1, 237, 9, -1, -1, - -1, -1, -1, -1, -1, 17, 18, 19, 20, -1, - -1, 23, -1, -1, -1, -1, -1, -1, 30, 31, + -1, -1, 113, 114, -1, -1, 117, -1, -1, -1, + 121, 122, 123, 124, -1, -1, -1, 128, 129, -1, + -1, -1, 133, -1, -1, 136, -1, -1, -1, -1, + -1, -1, 143, 144, 145, 146, -1, 148, 149, -1, + 151, 152, -1, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, -1, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, -1, -1, 178, -1, 180, + 181, -1, 183, 184, 185, -1, 187, -1, 189, 190, + 191, 192, 193, 194, 195, -1, 197, 198, 199, 200, + 201, 202, -1, 204, 205, 206, 207, 208, -1, -1, + -1, 212, -1, 214, 215, 216, 217, 218, 219, 220, + -1, -1, -1, -1, -1, 226, -1, -1, 229, 230, + 231, -1, 3, 4, -1, 6, -1, 238, 9, -1, + -1, -1, -1, -1, -1, -1, 17, 18, 19, 20, + -1, -1, 23, -1, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, + -1, -1, 43, -1, -1, -1, -1, -1, 49, 50, + 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, + 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, + -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, + 81, -1, 83, -1, 85, 86, -1, -1, 89, -1, + 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, + -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, + -1, -1, 113, 114, -1, -1, 117, -1, -1, -1, + 121, 122, 123, 124, -1, -1, -1, 128, 129, -1, + -1, -1, 133, -1, -1, 136, -1, -1, -1, -1, + -1, -1, 143, 144, 145, 146, -1, 148, 149, -1, + 151, 152, -1, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, -1, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, -1, -1, 178, -1, 180, + 181, -1, 183, 184, 185, -1, 187, -1, 189, 190, + 191, 192, 193, 194, 195, -1, 197, 198, 199, 200, + 201, 202, -1, 204, 205, 206, 207, 208, -1, -1, + -1, 212, -1, 214, 215, 216, 217, 218, 219, 220, + -1, -1, -1, -1, -1, 226, 3, 4, 229, 230, + 231, -1, -1, -1, -1, -1, -1, 238, -1, -1, + 17, 18, 19, 20, -1, -1, 23, -1, -1, -1, + -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, 49, 50, 51, -1, 53, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, + 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, + -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, + -1, 88, 89, -1, 91, 92, -1, 94, 95, -1, + -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, 115, -1, + 117, -1, -1, -1, 121, 122, 123, 124, -1, -1, + -1, 128, 129, -1, -1, -1, 133, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, -1, -1, -1, 226, + 3, 4, 229, 230, 231, -1, -1, -1, -1, -1, + -1, 238, -1, -1, 17, 18, 19, 20, -1, -1, + 23, -1, -1, -1, -1, -1, -1, 30, 31, 32, + 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, + 43, -1, -1, -1, -1, -1, 49, 50, 51, -1, + 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + 83, -1, 85, 86, -1, 88, 89, -1, 91, 92, + -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, 117, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, 128, 129, -1, -1, -1, + 133, -1, -1, 136, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, -1, -1, 178, -1, 180, 181, -1, + 183, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, 202, + -1, 204, 205, 206, 207, 208, -1, -1, -1, 212, + -1, 214, 215, 216, 217, 218, 219, 220, -1, -1, + -1, 3, 4, 226, -1, -1, 229, 230, 231, -1, + -1, -1, -1, -1, -1, 238, 18, 19, 20, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, - -1, 43, -1, -1, -1, -1, -1, 49, 50, 51, + -1, 43, -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - -1, 83, -1, 85, 86, -1, -1, 89, -1, 91, + -1, 83, -1, 85, 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, - -1, 113, 114, -1, -1, 117, -1, -1, 120, 121, - 122, 123, -1, -1, -1, 127, 128, -1, -1, -1, - 132, -1, -1, 135, -1, -1, -1, -1, -1, -1, - 142, 143, 144, 145, -1, 147, 148, -1, 150, 151, - -1, 153, -1, -1, 156, 157, 158, 159, 160, -1, - 162, 163, -1, -1, 166, 167, 168, 169, 170, 171, - 172, 173, 174, -1, -1, 177, -1, 179, 180, -1, - 182, 183, 184, -1, 186, -1, 188, 189, 190, 191, - 192, 193, 194, -1, 196, 197, 198, 199, 200, 201, - -1, 203, 204, 205, 206, 207, -1, -1, -1, 211, - -1, 213, 214, 215, 216, 217, 218, 219, -1, -1, - -1, -1, -1, 225, 3, 4, 228, 229, 230, -1, - -1, -1, -1, -1, -1, 237, -1, -1, 17, 18, - 19, 20, -1, -1, 23, -1, -1, -1, -1, -1, - -1, 30, 31, 32, 33, 34, -1, 36, 37, -1, + -1, 113, 114, -1, -1, 117, -1, -1, -1, 121, + 122, 123, 124, -1, -1, -1, 128, 129, -1, -1, + -1, 133, -1, -1, 136, -1, -1, -1, -1, -1, + -1, 143, 144, 145, 146, -1, 148, 149, -1, 151, + 152, -1, 154, -1, -1, 157, 158, 159, 160, 161, + -1, 163, 164, -1, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, 178, -1, 180, 181, + -1, 183, 184, 185, -1, 187, -1, 189, 190, 191, + 192, 193, 194, 195, -1, 197, 198, 199, 200, 201, + 202, -1, 204, 205, 206, 207, 208, -1, -1, -1, + 212, -1, 214, 215, 216, 217, 218, 219, 220, -1, + -1, -1, 3, 4, 226, -1, -1, 229, 230, 231, + -1, -1, -1, -1, -1, -1, 238, 18, 19, 20, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, + 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, + -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, + 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, + 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, + -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, + 81, -1, 83, -1, 85, 86, -1, -1, -1, -1, + 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, + -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, + -1, -1, 113, 114, -1, -1, 117, -1, -1, -1, + 121, 122, 123, 124, -1, -1, -1, 128, 129, -1, + -1, -1, 133, -1, -1, 136, -1, -1, -1, -1, + -1, -1, 143, 144, 145, 146, -1, 148, 149, -1, + 151, 152, -1, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, -1, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, -1, -1, 178, -1, 180, + 181, -1, 183, 184, 185, -1, 187, -1, 189, 190, + 191, 192, 193, 194, 195, -1, 197, 198, 199, 200, + 201, 202, -1, 204, 205, 206, 207, 208, -1, -1, + -1, 212, -1, 214, 215, 216, 217, 218, 219, 220, + -1, -1, -1, 3, 4, 226, -1, -1, 229, 230, + 231, -1, -1, -1, -1, -1, -1, 238, 18, 19, + 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 31, 32, 33, 34, -1, 36, 37, -1, -1, + -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, + -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, + -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, + -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, + 80, 81, -1, 83, -1, 85, 86, -1, -1, -1, + 90, 91, 92, -1, 94, 95, -1, -1, -1, -1, + -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, + -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, + -1, 121, 122, 123, 124, -1, -1, -1, -1, 129, + -1, -1, -1, 133, -1, -1, 136, -1, -1, -1, + -1, -1, -1, 143, 144, 145, 146, -1, 148, 149, + -1, 151, 152, -1, 154, -1, -1, 157, 158, 159, + 160, 161, -1, 163, 164, -1, -1, 167, 168, 169, + 170, 171, 172, 173, 174, 175, -1, -1, 178, -1, + 180, 181, -1, -1, 184, 185, -1, 187, -1, 189, + 190, 191, 192, 193, 194, 195, -1, 197, 198, 199, + 200, 201, 202, -1, 204, 205, 206, 207, 208, -1, + -1, -1, 212, -1, 214, 215, 216, 217, 218, 219, + 220, -1, -1, -1, 3, 4, 226, -1, -1, 229, + 230, 231, -1, -1, -1, -1, -1, -1, 238, 18, + 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 31, 32, 33, 34, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, - 49, 50, 51, -1, 53, -1, -1, -1, -1, -1, + -1, -1, 51, -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, 83, -1, 85, 86, -1, 88, - 89, -1, 91, 92, -1, 94, 95, -1, -1, -1, - -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, - 109, -1, -1, -1, 113, 114, 115, -1, 117, -1, - -1, 120, 121, 122, 123, -1, -1, -1, 127, 128, - -1, -1, -1, 132, -1, -1, 135, -1, -1, -1, - -1, -1, -1, 142, 143, 144, 145, -1, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, -1, -1, 177, -1, - 179, 180, -1, 182, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, 201, -1, 203, 204, 205, 206, 207, -1, - -1, -1, 211, -1, 213, 214, 215, 216, 217, 218, - 219, -1, -1, -1, -1, -1, 225, 3, 4, 228, - 229, 230, -1, -1, -1, -1, -1, -1, 237, -1, - -1, 17, 18, 19, 20, -1, -1, 23, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, 49, 50, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, 88, 89, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 30, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, 90, 91, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - -1, -1, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - -1, -1, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 31, 32, 33, 34, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - -1, -1, 128, -1, -1, -1, 132, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, + 79, 80, 81, -1, 83, -1, 85, 86, -1, -1, + -1, -1, 91, 92, -1, 94, 95, -1, -1, -1, + -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, + 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, + -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, + 129, -1, -1, -1, 133, -1, -1, 136, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, -1, 148, + 149, -1, 151, 152, -1, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, 178, + -1, 180, 181, -1, -1, 184, 185, -1, 187, -1, + 189, 190, 191, 192, 193, 194, 195, -1, 197, 198, + 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, + -1, -1, -1, 212, -1, 214, 215, 216, 217, 218, + 219, 220, -1, -1, -1, 3, 4, 226, -1, -1, + 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, + 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 31, 32, 33, 34, -1, 36, 37, + -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, + -1, -1, -1, 51, -1, 53, -1, -1, -1, -1, + -1, -1, -1, 61, -1, -1, 64, -1, -1, 67, + -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, + -1, 79, 80, 81, -1, 83, -1, 85, 86, -1, + -1, -1, -1, 91, 92, -1, 94, 95, -1, -1, + -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, + -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, + -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, + -1, 129, -1, -1, -1, 133, -1, -1, 136, -1, + -1, -1, -1, -1, -1, 143, 144, 145, 146, -1, + 148, 149, -1, 151, 152, -1, 154, -1, -1, 157, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, + 178, -1, 180, 181, -1, -1, 184, 185, -1, 187, + -1, 189, 190, 191, 192, 193, 194, 195, -1, 197, + 198, 199, 200, 201, 202, -1, 204, 205, 206, 207, + 208, -1, -1, -1, 212, -1, 214, 215, 216, 217, + 218, 219, 220, -1, -1, -1, 3, 4, 226, -1, + -1, 229, 230, 231, -1, -1, -1, -1, -1, -1, + 238, 18, 19, 20, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, -1, -1, 51, -1, 53, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, + 67, -1, -1, -1, -1, 72, 73, -1, -1, -1, + -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, + -1, -1, -1, -1, 91, 92, -1, 94, 95, -1, + -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, + 117, -1, -1, -1, 121, 122, 123, 124, -1, -1, + -1, 128, 129, -1, -1, -1, -1, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 202, -1, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, 216, + 217, 218, 219, 220, -1, -1, -1, 3, 4, 226, + -1, -1, 229, -1, -1, -1, -1, -1, -1, -1, + -1, 238, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, @@ -4180,172 +4204,153 @@ static const short yycheck[] = { 3, 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, -1, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, -1, -1, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, -1, 91, 92, -1, 94, 95, - -1, -1, -1, -1, 100, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, 117, -1, -1, 120, 121, 122, 123, -1, -1, - -1, 127, 128, -1, -1, -1, -1, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, 182, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, -1, -1, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, + -1, 117, -1, -1, -1, 121, 122, 123, 124, -1, + -1, -1, 128, 129, -1, -1, -1, -1, -1, -1, + 136, -1, -1, -1, -1, -1, -1, 143, 144, 145, + 146, -1, 148, 149, -1, 151, 152, -1, 154, -1, + -1, 157, 158, 159, 160, 161, -1, 163, 164, -1, + -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, + -1, -1, 178, -1, 180, 181, -1, 183, 184, 185, + -1, 187, -1, 189, 190, 191, 192, 193, 194, 195, + -1, 197, 198, 199, 200, 201, 202, -1, 204, 205, + 206, 207, 208, -1, -1, -1, 212, -1, 214, 215, + 216, 217, 218, 219, 220, -1, -1, -1, 3, 4, + 226, -1, -1, 229, -1, -1, -1, -1, -1, -1, + -1, -1, 238, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, 88, -1, 90, 91, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - -1, -1, 128, -1, -1, -1, -1, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, -1, -1, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, 3, 4, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, -1, - -1, 237, 18, 19, 20, -1, -1, -1, -1, -1, + -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, + -1, -1, -1, -1, -1, -1, 51, -1, 53, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, 67, -1, -1, -1, -1, 72, 73, -1, + -1, -1, -1, -1, 79, 80, 81, -1, 83, -1, + 85, 86, -1, 88, -1, 90, 91, 92, -1, 94, + 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, + -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, + -1, -1, -1, -1, -1, -1, 121, 122, 123, 124, + -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, + -1, 136, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, -1, -1, 178, -1, 180, 181, -1, -1, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, 202, -1, 204, + 205, 206, 207, 208, -1, -1, -1, 212, -1, 214, + 215, 216, 217, 218, 219, 220, -1, -1, -1, 3, + 4, 226, -1, -1, 229, 230, 231, -1, -1, -1, + -1, -1, -1, 238, 18, 19, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 36, 37, -1, -1, -1, -1, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, 67, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, 83, -1, 85, - 86, -1, -1, -1, 90, 91, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - -1, -1, 128, -1, -1, -1, -1, -1, -1, 135, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, -1, - -1, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, 201, -1, 203, 204, 205, - 206, 207, 3, 4, -1, 211, -1, 213, 214, 215, - 216, 217, 218, 219, -1, -1, -1, -1, -1, 225, - -1, -1, 228, 229, 230, -1, -1, -1, -1, 30, - -1, 237, -1, -1, -1, 36, -1, -1, -1, -1, - -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 36, 37, -1, -1, -1, -1, -1, 43, + -1, -1, -1, -1, -1, -1, -1, 51, -1, 53, + -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, + 64, -1, -1, 67, -1, -1, -1, -1, 72, 73, + -1, -1, -1, -1, -1, 79, 80, 81, -1, 83, + -1, 85, 86, -1, -1, -1, 90, 91, 92, -1, + 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, + 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, + 114, -1, -1, -1, -1, -1, -1, 121, 122, 123, + 124, -1, -1, -1, -1, 129, -1, -1, -1, -1, + -1, -1, 136, -1, -1, -1, -1, -1, -1, 143, + 144, 145, 146, -1, 148, 149, -1, 151, 152, -1, + 154, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, -1, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, -1, -1, 178, -1, 180, 181, -1, -1, + 184, 185, -1, 187, -1, 189, 190, 191, 192, 193, + 194, 195, -1, 197, 198, 199, 200, 201, 202, -1, + 204, 205, 206, 207, 208, 3, 4, -1, 212, -1, + 214, 215, 216, 217, 218, 219, 220, -1, -1, -1, + -1, -1, 226, -1, -1, 229, 230, 231, -1, -1, + -1, -1, 30, -1, 238, -1, -1, -1, 36, -1, + -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, - 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, - -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, - -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, - -1, -1, 113, 114, -1, -1, -1, -1, -1, 120, - 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, 143, 144, 145, -1, 147, 148, -1, 150, - 151, -1, 153, -1, -1, 156, 157, 158, 159, 160, - -1, 162, 163, -1, -1, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 3, 4, 177, -1, 179, 180, - -1, 182, 183, 184, -1, 186, -1, 188, 189, 190, - 191, 192, 193, 194, -1, 196, 197, 198, 199, 200, - -1, -1, 203, 204, 205, 206, 207, 36, -1, -1, - 211, -1, 213, 214, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, 61, -1, 13, 64, 237, -1, -1, -1, - -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, - -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, - -1, -1, -1, -1, 103, 104, -1, 56, 107, -1, - 109, -1, -1, 62, 113, 114, 115, -1, -1, -1, - 69, 120, 121, 122, 123, -1, -1, -1, 77, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, - -1, -1, -1, 142, 143, 144, 145, 96, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, -1, -1, 177, -1, - 179, 180, -1, -1, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, -1, -1, 203, 204, 205, 206, 207, -1, - -1, 7, 211, -1, 213, 214, 12, -1, -1, -1, - -1, -1, -1, -1, 173, -1, 22, -1, -1, 8, - 26, -1, 28, -1, 13, -1, -1, -1, 237, 188, - -1, -1, 38, -1, 40, -1, 8, -1, 44, -1, - 46, 13, 48, -1, -1, -1, 52, -1, -1, -1, - -1, -1, 58, -1, -1, -1, -1, 216, -1, 65, - -1, -1, 221, 222, 223, 224, 225, 226, 227, -1, - -1, -1, -1, 62, -1, -1, 235, 8, -1, 10, - 69, -1, 13, -1, -1, -1, -1, -1, 77, -1, - 62, -1, -1, -1, -1, -1, -1, 69, -1, 88, - -1, -1, -1, -1, 110, 77, 112, 96, -1, 115, - 116, -1, -1, -1, -1, -1, 88, 8, -1, -1, - -1, -1, 13, -1, 96, 131, -1, -1, -1, -1, - 119, 62, -1, -1, 8, -1, -1, -1, 69, 13, - 146, -1, -1, -1, -1, -1, 77, -1, 154, 155, - -1, -1, -1, -1, -1, -1, -1, 88, 164, 165, - -1, -1, -1, -1, -1, 96, -1, -1, -1, 175, - 176, 62, 178, -1, -1, 181, -1, -1, 69, -1, - -1, 187, -1, -1, 173, -1, 77, -1, 62, 195, - -1, -1, -1, -1, -1, 69, 202, 88, -1, 188, - -1, 173, 208, 77, 210, 96, -1, -1, -1, -1, - -1, -1, -1, -1, 88, -1, 188, -1, -1, -1, - -1, -1, 96, -1, -1, -1, -1, 216, -1, -1, - -1, 237, 221, 222, 223, 224, 225, 226, 227, -1, - -1, -1, 173, -1, 216, -1, 235, -1, -1, 221, - 222, 223, 224, 225, 226, 227, -1, 188, -1, -1, - -1, -1, 234, 235, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 173, -1, -1, 216, -1, -1, -1, -1, - 221, 222, 223, 224, 225, 226, 227, 188, -1, 173, - -1, -1, -1, -1, 235, 3, 4, -1, -1, -1, - -1, -1, -1, -1, 188, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 216, -1, -1, -1, -1, - 221, 222, 223, 224, 225, 226, 227, -1, 36, -1, - -1, -1, 216, -1, 235, 43, -1, 221, 222, 223, - 224, 225, 226, 227, -1, -1, -1, -1, -1, -1, - -1, 235, -1, 61, -1, -1, 64, -1, -1, -1, + -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, - -1, -1, 120, 121, 122, 123, -1, -1, -1, -1, + -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 142, 143, 144, 145, -1, 147, - 148, -1, 150, 151, -1, 153, -1, -1, 156, 157, - 158, 159, 160, -1, 162, 163, -1, -1, 166, 167, - 168, 169, 170, 171, 172, 173, 174, -1, -1, 177, - -1, 179, 180, -1, -1, 183, 184, -1, 186, -1, - 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, - 198, 199, 200, 201, -1, 203, 204, 205, 206, 207, - 3, 4, -1, 211, -1, 213, 214, 215, 216, 217, - -1, 219, -1, 221, 222, 223, 224, 225, 226, 227, + -1, -1, -1, -1, -1, 143, 144, 145, 146, -1, + 148, 149, -1, 151, 152, -1, 154, -1, -1, 157, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 3, 4, + 178, -1, 180, 181, -1, 183, 184, 185, -1, 187, + -1, 189, 190, 191, 192, 193, 194, 195, -1, 197, + 198, 199, 200, 201, -1, -1, 204, 205, 206, 207, + 208, 36, -1, -1, 212, -1, 214, 215, 43, -1, + -1, -1, 8, -1, 10, -1, -1, 13, -1, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + 238, -1, -1, -1, -1, -1, -1, 72, 73, -1, + -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, + -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, + 95, -1, -1, -1, -1, -1, 62, -1, 103, 104, + -1, -1, 107, 69, 109, -1, -1, -1, 113, 114, + 115, 77, -1, -1, -1, -1, 121, 122, 123, 124, + -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, + 96, -1, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, -1, -1, 178, -1, 180, 181, -1, -1, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, -1, -1, 204, + 205, 206, 207, 208, -1, -1, -1, 212, 174, 214, + 215, -1, -1, -1, -1, 8, -1, -1, -1, -1, + 13, -1, -1, 189, -1, -1, -1, -1, -1, -1, + -1, 8, -1, 238, -1, -1, 13, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, + -1, 217, 13, -1, -1, -1, 222, 223, 224, 225, + 226, 227, 228, 56, -1, -1, -1, -1, -1, 62, + 236, -1, 8, -1, 10, -1, 69, 13, -1, -1, + -1, -1, -1, -1, 77, 62, -1, -1, 8, -1, + -1, -1, 69, 13, -1, 88, -1, -1, -1, -1, + 77, 62, -1, 96, 8, -1, -1, -1, 69, 13, + -1, 88, -1, -1, -1, -1, 77, -1, -1, 96, + -1, -1, -1, -1, -1, -1, 62, 88, -1, 8, + -1, -1, -1, 69, 13, 96, -1, -1, -1, -1, + -1, 77, 62, 120, -1, 8, -1, -1, -1, 69, + 13, -1, 88, -1, -1, -1, -1, 77, 62, -1, + 96, -1, -1, -1, -1, 69, -1, -1, 88, -1, + -1, -1, -1, 77, -1, -1, 96, -1, -1, -1, + -1, 174, -1, 62, 88, -1, -1, -1, -1, -1, + 69, -1, 96, -1, -1, -1, 189, 174, 77, 62, + -1, -1, -1, -1, -1, -1, 69, -1, -1, 88, + -1, -1, 189, 174, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 217, 88, -1, -1, 189, 222, + 223, 224, 225, 226, 227, 228, -1, -1, 174, -1, + 217, -1, -1, 236, -1, 222, 223, 224, 225, 226, + 227, 228, -1, 189, 174, -1, 217, -1, -1, 236, + -1, 222, 223, 224, 225, 226, 227, 228, -1, 189, + 174, -1, -1, -1, 235, 236, -1, -1, -1, -1, + -1, 217, -1, -1, -1, 189, 222, 223, 224, 225, + 226, 227, 228, -1, -1, 174, -1, 217, -1, -1, + 236, -1, 222, 223, 224, 225, 226, 227, 228, -1, + 189, 174, -1, 217, -1, -1, 236, -1, 222, 223, + 224, 225, 226, 227, 228, -1, 189, -1, -1, -1, + -1, -1, 236, -1, 3, 4, -1, -1, 217, -1, + -1, -1, -1, 222, 223, 224, 225, 226, 227, 228, + -1, -1, -1, -1, 217, -1, -1, 236, -1, 222, + 223, 224, 225, 226, 227, 228, -1, 36, -1, -1, + -1, -1, -1, 236, 43, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, + -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, + 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, + -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, + -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, + 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, + -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, -1, 148, + 149, -1, 151, 152, -1, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, -1, -1, 178, + -1, 180, 181, -1, -1, 184, 185, -1, 187, -1, + 189, 190, 191, 192, 193, 194, 195, -1, 197, 198, + 199, 200, 201, 202, -1, 204, 205, 206, 207, 208, + 3, 4, -1, 212, -1, 214, 215, 216, 217, 218, + -1, 220, -1, 222, 223, 224, 225, 226, 227, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -4355,283 +4360,288 @@ static const short yycheck[] = { 3, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, 105, -1, 107, -1, 109, -1, -1, -1, - 113, 114, -1, -1, -1, -1, -1, 120, 121, 122, - 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, - 143, 144, 145, -1, 147, 148, -1, 150, 151, -1, - 153, -1, -1, 156, 157, 158, 159, 160, -1, 162, - 163, -1, -1, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 3, 4, 177, -1, 179, 180, -1, -1, - 183, 184, -1, 186, -1, 188, 189, 190, 191, 192, - 193, 194, -1, 196, 197, 198, 199, 200, -1, -1, - 203, 204, 205, 206, 207, 36, -1, -1, 211, -1, - 213, 214, 43, 216, -1, -1, -1, -1, 221, 222, - 223, 224, 225, 226, 227, -1, -1, -1, -1, -1, - 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, - 71, 72, 73, -1, -1, -1, -1, -1, 79, 80, - 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, - -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, - -1, -1, 103, 104, 105, -1, 107, -1, 109, -1, - -1, -1, 113, 114, -1, -1, -1, -1, -1, 120, - 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + 113, 114, -1, -1, -1, -1, -1, -1, 121, 122, + 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, 143, 144, 145, -1, 147, 148, -1, 150, - 151, -1, 153, -1, -1, 156, 157, 158, 159, 160, - -1, 162, 163, -1, -1, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 3, 4, 177, -1, 179, 180, - -1, -1, 183, 184, -1, 186, -1, 188, 189, 190, - 191, 192, 193, 194, -1, 196, 197, 198, 199, 200, - -1, 30, 203, 204, 205, 206, 207, 36, -1, -1, - 211, -1, 213, 214, 43, 216, -1, -1, -1, -1, - 221, 222, 223, 224, 225, 226, 227, -1, -1, -1, - -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, - -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, - -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, - -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, - 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, - -1, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 3, 4, 178, -1, 180, 181, -1, + -1, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, -1, + -1, 204, 205, 206, 207, 208, 36, -1, -1, 212, + -1, 214, 215, 43, 217, -1, -1, -1, -1, 222, + 223, 224, 225, 226, 227, 228, -1, -1, -1, -1, + -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, + -1, 71, 72, 73, -1, -1, -1, -1, -1, 79, + 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, + -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, + -1, -1, -1, 103, 104, 105, -1, 107, -1, 109, + -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, + -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 142, 143, 144, 145, -1, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 3, 4, 177, -1, - 179, 180, -1, 182, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, -1, 30, 203, 204, 205, 206, 207, 36, - -1, -1, 211, -1, 213, 214, 43, -1, -1, 218, - -1, -1, -1, -1, -1, -1, -1, 226, -1, -1, + -1, -1, -1, 143, 144, 145, 146, -1, 148, 149, + -1, 151, 152, -1, 154, -1, -1, 157, 158, 159, + 160, 161, -1, 163, 164, -1, -1, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 3, 4, 178, -1, + 180, 181, -1, -1, 184, 185, -1, 187, -1, 189, + 190, 191, 192, 193, 194, 195, -1, 197, 198, 199, + 200, 201, -1, 30, 204, 205, 206, 207, 208, 36, + -1, -1, 212, -1, 214, 215, 43, 217, -1, -1, + -1, -1, 222, 223, 224, 225, 226, 227, 228, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - -1, -1, -1, 120, 121, 122, 123, -1, -1, -1, + -1, -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 142, 143, 144, 145, -1, - 147, 148, -1, 150, 151, -1, 153, -1, -1, 156, - 157, 158, 159, 160, -1, 162, 163, -1, -1, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 3, 4, - 177, -1, 179, 180, -1, 182, 183, 184, -1, 186, - -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, -1, -1, 203, 204, 205, 206, - 207, 36, -1, -1, 211, -1, 213, 214, 43, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, - -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, - -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, - -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, - -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, - 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, - -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, - -1, -1, -1, -1, -1, 120, 121, 122, 123, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 142, 143, 144, - 145, -1, 147, 148, -1, 150, 151, -1, 153, -1, - -1, 156, 157, 158, 159, 160, -1, 162, 163, -1, - -1, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 3, 4, 177, -1, 179, 180, -1, -1, 183, 184, - -1, 186, -1, 188, 189, 190, 191, 192, 193, 194, - -1, 196, 197, 198, 199, 200, -1, -1, 203, 204, - 205, 206, 207, 36, -1, -1, 211, -1, 213, 214, - 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 226, -1, -1, -1, -1, -1, -1, 61, -1, - -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, - 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, - -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, - -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, - 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, - 113, 114, -1, -1, -1, -1, -1, 120, 121, 122, - 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 142, - 143, 144, 145, -1, 147, 148, -1, 150, 151, -1, - 153, -1, -1, 156, 157, 158, 159, 160, -1, 162, - 163, -1, -1, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 3, 4, 177, -1, 179, 180, -1, -1, - 183, 184, -1, 186, -1, 188, 189, 190, 191, 192, - 193, 194, -1, 196, 197, 198, 199, 200, -1, -1, - 203, 204, 205, 206, 207, 36, -1, -1, 211, -1, - 213, 214, 43, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 226, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 3, + 4, 178, -1, 180, 181, -1, 183, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, -1, 30, 204, 205, 206, + 207, 208, 36, -1, -1, 212, -1, 214, 215, 43, + -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, + 227, -1, -1, -1, -1, -1, -1, 61, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, + -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, + -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, + 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, + 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, + 114, -1, -1, -1, -1, -1, -1, 121, 122, 123, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, + 144, 145, 146, -1, 148, 149, -1, 151, 152, -1, + 154, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, -1, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 3, 4, 178, -1, 180, 181, -1, 183, + 184, 185, -1, 187, -1, 189, 190, 191, 192, 193, + 194, 195, -1, 197, 198, 199, 200, 201, -1, -1, + 204, 205, 206, 207, 208, 36, -1, -1, 212, -1, + 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 227, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, - -1, -1, 113, 114, -1, -1, -1, -1, -1, 120, - 121, 122, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, + 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 142, 143, 144, 145, -1, 147, 148, -1, 150, - 151, -1, 153, -1, -1, 156, 157, 158, 159, 160, - -1, 162, 163, -1, -1, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 3, 4, 177, -1, 179, 180, - -1, -1, 183, 184, -1, 186, -1, 188, 189, 190, - 191, 192, 193, 194, -1, 196, 197, 198, 199, 200, - -1, -1, 203, 204, 205, 206, 207, 36, -1, -1, - 211, -1, 213, 214, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 226, -1, -1, -1, -1, - -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, - -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, - -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, - -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, - 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, - -1, 120, 121, 122, 123, -1, -1, -1, -1, -1, + -1, -1, 143, 144, 145, 146, -1, 148, 149, -1, + 151, 152, -1, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, -1, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 3, 4, 178, -1, 180, + 181, -1, -1, 184, 185, -1, 187, -1, 189, 190, + 191, 192, 193, 194, 195, -1, 197, 198, 199, 200, + 201, -1, -1, 204, 205, 206, 207, 208, 36, -1, + -1, 212, -1, 214, 215, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 227, -1, -1, -1, + -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, + -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, + -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, + -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, + -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, + -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, + -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 142, 143, 144, 145, -1, 147, 148, - -1, 150, 151, -1, 153, -1, -1, 156, 157, 158, - 159, 160, -1, 162, 163, -1, -1, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 3, 4, 177, -1, - 179, 180, -1, -1, 183, 184, -1, 186, -1, 188, - 189, 190, 191, 192, 193, 194, -1, 196, 197, 198, - 199, 200, -1, 30, 203, 204, 205, 206, 207, 36, - -1, -1, 211, -1, 213, 214, 43, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 226, -1, -1, - -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, - -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, - -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, - -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, - 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - -1, -1, -1, 120, 121, 122, 123, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 142, 143, 144, 145, -1, - 147, 148, -1, 150, 151, -1, 153, -1, -1, 156, - 157, 158, 159, 160, -1, 162, 163, -1, -1, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 3, 4, - 177, -1, 179, 180, -1, 182, 183, 184, -1, 186, - -1, 188, 189, 190, 191, 192, 193, 194, -1, 196, - 197, 198, 199, 200, -1, -1, 203, 204, 205, 206, - 207, 36, -1, -1, 211, -1, 213, 214, 43, -1, - -1, 218, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 143, 144, 145, 146, -1, + 148, 149, -1, 151, 152, -1, 154, -1, -1, 157, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 3, 4, + 178, -1, 180, 181, -1, -1, 184, 185, -1, 187, + -1, 189, 190, 191, 192, 193, 194, 195, -1, 197, + 198, 199, 200, 201, -1, -1, 204, 205, 206, 207, + 208, 36, -1, -1, 212, -1, 214, 215, 43, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, - -1, -1, -1, -1, -1, 120, 121, 122, 123, -1, + -1, -1, -1, -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 142, 143, 144, - 145, -1, 147, 148, -1, 150, 151, -1, 153, -1, - -1, 156, 157, 158, 159, 160, -1, 162, 163, -1, - -1, 166, 167, 168, 169, 170, 171, 172, 173, 174, - -1, -1, 177, -1, 179, 180, -1, -1, 183, 184, - -1, 186, -1, 188, 189, 190, 191, 192, 193, 194, - -1, 196, 197, 198, 199, 200, 3, 4, 203, 204, - 205, 206, 207, -1, -1, -1, 211, -1, 213, 214, - 17, -1, 217, -1, -1, -1, 23, -1, -1, -1, - 27, -1, 29, 30, -1, -1, -1, -1, -1, 36, - -1, -1, -1, -1, -1, -1, 43, -1, 45, 46, - -1, -1, -1, -1, 51, -1, -1, -1, 55, -1, - -1, -1, 59, -1, 61, -1, -1, 64, -1, -1, - -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, - -1, -1, 89, -1, -1, 92, -1, 94, 95, -1, - 97, -1, -1, 100, 101, -1, 103, 104, -1, -1, - 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, - -1, 118, 119, 120, 121, 122, 123, -1, -1, 126, - -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 138, -1, -1, -1, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - -1, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 3, 4, 210, 211, 212, 213, 214, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 19, 20, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 36, 37, -1, -1, -1, -1, - -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, + -1, -1, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 3, 4, 178, -1, 180, 181, -1, -1, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, -1, -1, 204, + 205, 206, 207, 208, 36, -1, -1, 212, -1, 214, + 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, + 13, -1, 227, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - -1, 83, -1, 85, 86, -1, -1, -1, -1, 91, - 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, - -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, - -1, 113, 114, -1, -1, -1, -1, -1, 120, 121, - 122, 123, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, - 142, 143, 144, 145, -1, 147, 148, -1, 150, 151, - -1, 153, -1, -1, 156, 157, 158, 159, 160, -1, - 162, 163, -1, -1, 166, 167, 168, 169, 170, 171, - 172, 173, 174, -1, -1, 177, -1, 179, 180, -1, - -1, 183, 184, -1, 186, -1, 188, 189, 190, 191, - 192, 193, 194, -1, 196, 197, 198, 199, 200, 3, - 4, 203, 204, 205, 206, 207, -1, -1, -1, 211, - -1, 213, 214, -1, -1, -1, -1, 21, -1, -1, - -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, - -1, -1, 36, -1, -1, -1, -1, -1, -1, 43, + -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, + 92, -1, 94, 95, -1, -1, -1, -1, -1, 62, + -1, 103, 104, -1, -1, 107, 69, 109, -1, -1, + -1, 113, 114, -1, 77, -1, -1, -1, -1, 121, + 122, 123, 124, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 55, -1, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, - 94, 95, -1, -1, -1, -1, -1, -1, 102, 103, - 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, -1, -1, -1, -1, -1, 120, 121, 122, 123, - -1, -1, -1, -1, -1, -1, 130, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 3, 4, 177, -1, 179, 180, -1, -1, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, -1, -1, 203, - 204, 205, 206, 207, 36, -1, -1, 211, -1, 213, - 214, 43, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 143, 144, 145, 146, -1, 148, 149, -1, 151, + 152, -1, 154, -1, -1, 157, 158, 159, 160, 161, + -1, 163, 164, -1, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, 178, -1, 180, 181, + -1, -1, 184, 185, -1, 187, -1, 189, 190, 191, + 192, 193, 194, 195, -1, 197, 198, 199, 200, 201, + -1, -1, 204, 205, 206, 207, 208, -1, 3, 4, + 212, 174, 214, 215, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 227, 189, -1, -1, -1, + -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, + -1, 36, -1, -1, -1, -1, -1, -1, 43, -1, + -1, -1, -1, -1, 217, -1, -1, -1, -1, 222, + 223, 224, 225, 226, 227, 228, 61, -1, -1, 64, + -1, -1, -1, 236, -1, -1, -1, 72, 73, -1, + -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, + -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, + 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, + -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, + -1, -1, -1, -1, -1, -1, 121, 122, 123, 124, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 3, 4, 178, -1, 180, 181, -1, 183, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, -1, -1, 204, + 205, 206, 207, 208, 36, -1, -1, 212, -1, 214, + 215, 43, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - 82, -1, -1, -1, 86, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, - -1, 113, 114, -1, -1, -1, -1, -1, 120, 121, - 122, 123, -1, -1, 126, -1, -1, -1, -1, -1, + -1, 113, 114, -1, -1, -1, -1, -1, -1, 121, + 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 142, 143, 144, 145, -1, 147, 148, -1, 150, 151, - -1, 153, -1, -1, 156, 157, 158, 159, 160, -1, - 162, 163, -1, -1, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 3, 4, 177, -1, 179, 180, -1, - -1, 183, 184, -1, 186, -1, 188, 189, 190, 191, - 192, 193, 194, -1, 196, 197, 198, 199, 200, -1, - 30, 203, 204, 205, 206, 207, 36, -1, -1, 211, - -1, 213, 214, 43, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, - -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, - 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, - -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, - -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, - -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, - 120, 121, 122, 123, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 142, 143, 144, 145, -1, 147, 148, -1, - 150, 151, -1, 153, -1, -1, 156, 157, 158, 159, - 160, -1, 162, 163, -1, -1, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 3, 4, 177, -1, 179, - 180, -1, 182, 183, 184, -1, 186, -1, 188, 189, - 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, - 200, -1, -1, 203, 204, 205, 206, 207, 36, -1, - -1, 211, -1, 213, 214, 43, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, 61, -1, -1, 64, -1, -1, -1, + -1, 143, 144, 145, 146, -1, 148, 149, -1, 151, + 152, -1, 154, -1, -1, 157, 158, 159, 160, 161, + -1, 163, 164, -1, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, -1, -1, 178, -1, 180, 181, + -1, -1, 184, 185, -1, 187, -1, 189, 190, 191, + 192, 193, 194, 195, -1, 197, 198, 199, 200, 201, + 3, 4, 204, 205, 206, 207, 208, -1, -1, -1, + 212, -1, 214, 215, 17, -1, 218, -1, -1, -1, + 23, -1, -1, -1, 27, -1, 29, 30, -1, -1, + -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, + 43, -1, 45, 46, -1, -1, -1, -1, 51, -1, + -1, -1, 55, -1, -1, -1, 59, -1, 61, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, 86, -1, -1, 89, -1, -1, 92, + -1, 94, 95, -1, 97, -1, -1, 100, 101, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, -1, 118, -1, 120, 121, 122, + 123, 124, -1, -1, 127, -1, 129, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 139, -1, -1, -1, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 3, 4, 211, 212, + 213, 214, 215, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 19, 20, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, + 37, -1, -1, -1, -1, -1, 43, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, + -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, + -1, -1, 79, 80, 81, -1, 83, -1, 85, 86, + -1, -1, -1, -1, 91, 92, -1, 94, 95, -1, + -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, + -1, -1, -1, -1, 121, 122, 123, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, + -1, 178, -1, 180, 181, -1, -1, 184, 185, -1, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, 3, 4, 204, 205, 206, + 207, 208, -1, -1, -1, 212, -1, 214, 215, -1, + -1, -1, -1, 21, -1, -1, -1, -1, -1, 27, + -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, + -1, -1, -1, -1, -1, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, + -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, - -1, -1, -1, -1, -1, 103, 104, -1, 106, 107, + -1, -1, -1, -1, 102, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, - -1, -1, 120, 121, 122, 123, -1, -1, -1, -1, + -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, + -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 143, 144, 145, 146, -1, + 148, 149, -1, 151, 152, -1, 154, -1, -1, 157, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 3, 4, + 178, -1, 180, 181, -1, -1, 184, 185, -1, 187, + -1, 189, 190, 191, 192, 193, 194, 195, -1, 197, + 198, 199, 200, 201, -1, -1, 204, 205, 206, 207, + 208, 36, -1, -1, 212, -1, 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 142, 143, 144, 145, -1, 147, - 148, -1, 150, 151, -1, 153, -1, -1, 156, 157, - 158, 159, 160, -1, 162, 163, -1, -1, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 3, 4, 177, - -1, 179, 180, -1, -1, 183, 184, -1, 186, -1, - 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, - 198, 199, 200, -1, -1, 203, 204, 205, 206, 207, - 36, -1, -1, 211, -1, 213, 214, 43, -1, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, + -1, -1, -1, -1, 79, 80, 81, 82, -1, -1, + -1, 86, -1, -1, -1, -1, -1, 92, -1, 94, + 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, + -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, + -1, -1, -1, -1, -1, -1, 121, 122, 123, 124, + -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 143, 144, + 145, 146, -1, 148, 149, -1, 151, 152, -1, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + -1, -1, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 3, 4, 178, -1, 180, 181, -1, -1, 184, + 185, -1, 187, -1, 189, 190, 191, 192, 193, 194, + 195, -1, 197, 198, 199, 200, 201, -1, 30, 204, + 205, 206, 207, 208, 36, -1, -1, 212, -1, 214, + 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, + -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, + 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, + -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, + 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, + -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, + -1, 113, 114, -1, -1, -1, -1, -1, -1, 121, + 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 143, 144, 145, 146, -1, 148, 149, -1, 151, + 152, -1, 154, -1, -1, 157, 158, 159, 160, 161, + -1, 163, 164, -1, -1, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 3, 4, 178, -1, 180, 181, + -1, 183, 184, 185, -1, 187, -1, 189, 190, 191, + 192, 193, 194, 195, -1, 197, 198, 199, 200, 201, + -1, -1, 204, 205, 206, 207, 208, 36, -1, -1, + 212, -1, 214, 215, 43, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, -1, 61, -1, -1, 64, -1, -1, -1, -1, + -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, + 79, 80, 81, -1, -1, -1, -1, 86, -1, -1, + -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, + -1, -1, -1, -1, 103, 104, -1, 106, 107, -1, + 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, + -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 143, 144, 145, 146, -1, 148, + 149, -1, 151, 152, -1, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 3, 4, 178, + -1, 180, 181, -1, -1, 184, 185, -1, 187, -1, + 189, 190, 191, 192, 193, 194, 195, -1, 197, 198, + 199, 200, 201, -1, -1, 204, 205, 206, 207, 208, + 36, -1, -1, 212, -1, 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, @@ -4639,51 +4649,34 @@ static const short yycheck[] = { 3, 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 3, - 4, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, -1, -1, 203, 204, 205, - 206, 207, 36, -1, -1, 211, -1, 213, 214, 43, + -1, -1, -1, -1, -1, 121, 122, 123, 124, -1, + -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 143, 144, 145, + 146, -1, 148, 149, -1, 151, 152, -1, 154, -1, + -1, 157, 158, 159, 160, 161, -1, 163, 164, -1, + -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 3, 4, 178, -1, 180, 181, -1, -1, 184, 185, + -1, 187, -1, 189, 190, 191, 192, 193, 194, 195, + -1, 197, 198, 199, 200, 201, -1, -1, 204, 205, + 206, 207, 208, 36, -1, -1, 212, -1, 214, 215, + 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, + 73, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, + -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, + 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, + 113, 114, -1, -1, -1, -1, -1, -1, 121, 122, + 123, 124, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, - 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, - 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, -1, -1, -1, -1, -1, 120, 121, 122, 123, - -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 3, 4, 177, -1, 179, 180, -1, -1, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, -1, -1, 203, - 204, 205, 206, 207, 36, -1, -1, 211, -1, 213, - 214, 43, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, - -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, - 72, 73, -1, -1, -1, -1, -1, 79, 80, 81, - -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, - 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, - -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, - -1, 113, 114, -1, -1, -1, -1, -1, 120, 121, - 122, 123, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 142, 143, 144, 145, -1, 147, 148, -1, 150, 151, - -1, 153, -1, -1, 156, 157, 158, 159, 160, -1, - 162, 163, -1, -1, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 3, 4, 177, -1, 179, 180, -1, - -1, 183, 184, 185, 186, -1, 188, 189, 190, 191, - 192, 193, 194, -1, 196, 197, 198, 199, 200, -1, - -1, 203, 204, 205, 206, 207, 36, -1, -1, 211, - -1, 213, 214, 43, -1, -1, -1, -1, -1, -1, + 143, 144, 145, 146, -1, 148, 149, -1, 151, 152, + -1, 154, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, -1, -1, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 3, 4, 178, -1, 180, 181, -1, + -1, 184, 185, -1, 187, -1, 189, 190, 191, 192, + 193, 194, 195, -1, 197, 198, 199, 200, 201, -1, + -1, 204, 205, 206, 207, 208, 36, -1, -1, 212, + -1, 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, -1, 79, @@ -4691,16 +4684,68 @@ static const short yycheck[] = { 3, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, -1, -1, - 120, 121, 122, 123, -1, -1, -1, -1, -1, -1, + -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 142, 143, 144, 145, -1, 147, 148, -1, - 150, 151, -1, 153, -1, -1, 156, 157, 158, 159, - 160, -1, 162, 163, -1, -1, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 3, 4, 177, -1, 179, - 180, -1, 10, 183, 184, 185, 186, -1, 188, 189, - 190, 191, 192, 193, 194, -1, 196, 197, 198, 199, - 200, -1, -1, 203, 204, 205, 206, 207, 36, -1, - -1, 211, -1, 213, 214, 43, -1, -1, -1, -1, + -1, -1, -1, 143, 144, 145, 146, -1, 148, 149, + -1, 151, 152, -1, 154, -1, -1, 157, 158, 159, + 160, 161, -1, 163, 164, -1, -1, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 3, 4, 178, -1, + 180, 181, -1, -1, 184, 185, 186, 187, -1, 189, + 190, 191, 192, 193, 194, 195, -1, 197, 198, 199, + 200, 201, -1, -1, 204, 205, 206, 207, 208, 36, + -1, -1, 212, -1, 214, 215, 43, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, + -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, + -1, -1, 79, 80, 81, -1, -1, -1, -1, 86, + -1, -1, -1, -1, -1, 92, -1, 94, 95, -1, + -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, + 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, + -1, -1, -1, -1, 121, 122, 123, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, + -1, 148, 149, -1, 151, 152, -1, 154, -1, -1, + 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 3, + 4, 178, -1, 180, 181, -1, 10, 184, 185, 186, + 187, -1, 189, 190, 191, 192, 193, 194, 195, -1, + 197, 198, 199, 200, 201, -1, -1, 204, 205, 206, + 207, 208, 36, -1, -1, 212, -1, 214, 215, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, + -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, + -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, + 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, + 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, + 114, -1, -1, -1, -1, -1, -1, 121, 122, 123, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 143, + 144, 145, 146, -1, 148, 149, -1, 151, 152, -1, + 154, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, -1, -1, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 3, 4, 178, -1, 180, 181, -1, -1, + 184, 185, -1, 187, -1, 189, 190, 191, 192, 193, + 194, 195, -1, 197, 198, 199, 200, 201, -1, -1, + 204, 205, 206, 207, 208, 36, -1, -1, 212, -1, + 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, + -1, 72, 73, -1, -1, -1, -1, -1, 79, 80, + 81, -1, -1, -1, -1, 86, -1, -1, -1, -1, + -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, + -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, + -1, -1, 113, 114, -1, -1, -1, -1, -1, -1, + 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 143, 144, 145, 146, -1, 148, 149, -1, + 151, 152, -1, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, -1, -1, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 3, 4, 178, -1, 180, + 181, -1, -1, 184, 185, -1, 187, -1, 189, 190, + 191, 192, 193, 194, 195, -1, 197, 198, 199, 200, + 201, -1, -1, 204, 205, 206, 207, 208, 36, -1, + -1, 212, -1, 214, 215, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, -1, -1, @@ -4708,90 +4753,55 @@ static const short yycheck[] = { 3, -1, -1, -1, -1, 92, -1, 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, -1, -1, - -1, -1, 120, 121, 122, 123, -1, -1, -1, -1, + -1, -1, -1, 121, 122, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 142, 143, 144, 145, -1, 147, - 148, -1, 150, 151, -1, 153, -1, -1, 156, 157, - 158, 159, 160, -1, 162, 163, -1, -1, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 3, 4, 177, - -1, 179, 180, -1, -1, 183, 184, -1, 186, -1, - 188, 189, 190, 191, 192, 193, 194, -1, 196, 197, - 198, 199, 200, -1, -1, 203, 204, 205, 206, 207, - 36, -1, -1, 211, -1, 213, 214, 43, -1, -1, + -1, -1, -1, -1, -1, 143, 144, 145, 146, -1, + 148, 149, -1, 151, 152, -1, 154, -1, -1, 157, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, + 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, + 178, -1, 180, 181, -1, -1, 184, 185, -1, 187, + -1, 189, 190, 191, 192, 193, 194, 195, -1, 197, + 198, 199, 200, 201, 19, 20, 204, 205, 206, 207, + 208, -1, -1, -1, 212, -1, 214, 215, -1, -1, + -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, + 19, 20, -1, -1, -1, -1, 51, -1, 53, -1, + -1, -1, -1, -1, -1, -1, 61, 36, 37, -1, + -1, -1, 67, -1, 43, -1, -1, -1, -1, -1, + -1, -1, 51, -1, 53, 80, 81, -1, 83, -1, + 85, -1, 61, -1, -1, -1, 91, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 61, -1, -1, 64, -1, - -1, -1, -1, -1, -1, -1, 72, 73, -1, -1, - -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, - 86, -1, -1, -1, -1, -1, 92, -1, 94, 95, - -1, -1, -1, -1, -1, -1, -1, 103, 104, -1, - -1, 107, -1, 109, -1, -1, -1, 113, 114, -1, - -1, -1, -1, -1, 120, 121, 122, 123, -1, -1, + -1, 80, 81, -1, 83, -1, 85, -1, -1, 114, + 115, -1, 91, -1, -1, -1, 121, 122, -1, -1, + -1, -1, -1, -1, 129, -1, -1, 19, 20, -1, + -1, 136, -1, -1, -1, 114, -1, -1, 143, -1, + -1, 146, 121, 122, 36, 37, -1, -1, -1, -1, + 129, 43, -1, -1, -1, -1, -1, 136, -1, -1, + -1, 53, -1, -1, 143, -1, -1, 146, -1, 61, + -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, + -1, -1, -1, -1, 19, 20, -1, -1, 80, 81, + -1, 83, -1, 85, -1, -1, -1, 202, -1, 91, + -1, 36, 37, -1, -1, -1, -1, -1, 43, -1, + 215, 216, -1, 218, 219, 220, -1, -1, 53, -1, + -1, -1, 114, 202, -1, -1, 61, -1, -1, 121, + 122, -1, 67, -1, -1, -1, 215, 216, -1, 218, + 219, 220, -1, -1, 136, 80, 81, -1, 83, -1, + 85, 143, -1, -1, 146, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 142, 143, 144, 145, - -1, 147, 148, -1, 150, 151, -1, 153, -1, -1, - 156, 157, 158, 159, 160, -1, 162, 163, -1, -1, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 3, - 4, 177, -1, 179, 180, -1, -1, 183, 184, -1, - 186, -1, 188, 189, 190, 191, 192, 193, 194, -1, - 196, 197, 198, 199, 200, -1, -1, 203, 204, 205, - 206, 207, 36, -1, -1, 211, -1, 213, 214, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, + -1, -1, -1, -1, -1, -1, 121, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, - 64, -1, -1, -1, -1, -1, -1, -1, 72, 73, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, 86, -1, -1, -1, -1, -1, 92, -1, - 94, 95, -1, -1, -1, -1, -1, -1, -1, 103, - 104, -1, -1, 107, -1, 109, -1, -1, -1, 113, - 114, -1, -1, -1, -1, -1, 120, 121, 122, 123, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 142, 143, - 144, 145, -1, 147, 148, -1, 150, 151, -1, 153, - -1, -1, 156, 157, 158, 159, 160, -1, 162, 163, - -1, -1, 166, 167, 168, 169, 170, 171, 172, 173, - 174, -1, -1, 177, -1, 179, 180, -1, -1, 183, - 184, -1, 186, -1, 188, 189, 190, 191, 192, 193, - 194, -1, 196, 197, 198, 199, 200, 19, 20, 203, - 204, 205, 206, 207, -1, -1, -1, 211, -1, 213, - 214, -1, -1, -1, 36, 37, -1, -1, -1, -1, - -1, 43, -1, 19, 20, -1, -1, -1, -1, 51, - -1, 53, -1, -1, -1, -1, -1, -1, -1, 61, - 36, 37, -1, -1, -1, 67, -1, 43, -1, -1, - -1, -1, -1, -1, -1, 51, -1, 53, 80, 81, - -1, 83, -1, 85, -1, 61, -1, -1, -1, 91, - -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 80, 81, -1, 83, -1, 85, - -1, -1, 114, 115, -1, 91, -1, -1, 120, 121, - -1, -1, -1, -1, -1, -1, 128, -1, -1, 19, - 20, -1, -1, 135, -1, -1, -1, -1, 114, -1, - 142, -1, -1, 145, 120, 121, 36, 37, -1, -1, - -1, -1, 128, 43, -1, -1, -1, -1, -1, 135, - -1, -1, -1, 53, -1, -1, 142, -1, -1, 145, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, 81, -1, 83, -1, 85, -1, -1, -1, 201, - -1, 91, 19, 20, -1, -1, -1, -1, -1, -1, - -1, -1, 214, 215, -1, 217, 218, 219, -1, 36, - 37, -1, -1, -1, 114, 201, 43, -1, -1, -1, - 120, 121, -1, -1, -1, -1, 53, -1, 214, 215, - -1, 217, 218, 219, 61, 135, -1, -1, -1, -1, - 67, -1, 142, -1, -1, 145, -1, -1, -1, -1, - -1, -1, -1, 80, 81, -1, 83, -1, 85, -1, - -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 114, -1, -1, - -1, -1, -1, 120, 121, -1, -1, -1, -1, -1, - 200, 201, -1, -1, -1, -1, -1, -1, 135, -1, - -1, -1, -1, -1, 214, 142, -1, -1, 145, -1, + -1, 136, -1, -1, -1, -1, -1, -1, 143, 201, + 202, 146, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 215, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 201, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 214 + 215 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/misc/bison.simple" +#line 3 "/usr/local/bison/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -4984,7 +4994,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/share/misc/bison.simple" +#line 196 "/usr/local/bison/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -5655,6 +5665,7 @@ case 102: #line 752 "gram.y" { CreateStmt *n = makeNode(CreateStmt); + n->istemp = yyvsp[-6].boolean; n->relname = yyvsp[-4].str; n->tableElts = yyvsp[-2].list; n->inhRelnames = yyvsp[0].list; @@ -5664,6 +5675,14 @@ case 102: break;} case 103: #line 763 "gram.y" +{ yyval.boolean = TRUE; ; + break;} +case 104: +#line 764 "gram.y" +{ yyval.boolean = FALSE; ; + break;} +case 105: +#line 768 "gram.y" { if (yyvsp[0].node != NULL) yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); @@ -5671,8 +5690,8 @@ case 103: yyval.list = yyvsp[-2].list; ; break;} -case 104: -#line 770 "gram.y" +case 106: +#line 775 "gram.y" { if (yyvsp[0].node != NULL) yyval.list = lcons(yyvsp[0].node, NIL); @@ -5680,20 +5699,20 @@ case 104: yyval.list = NULL; ; break;} -case 105: -#line 776 "gram.y" -{ yyval.list = NULL; ; - break;} -case 106: -#line 779 "gram.y" -{ yyval.node = yyvsp[0].node; ; - break;} case 107: -#line 780 "gram.y" -{ yyval.node = yyvsp[0].node; ; +#line 781 "gram.y" +{ yyval.list = NULL; ; break;} case 108: #line 784 "gram.y" +{ yyval.node = yyvsp[0].node; ; + break;} +case 109: +#line 785 "gram.y" +{ yyval.node = yyvsp[0].node; ; + break;} +case 110: +#line 789 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = yyvsp[-2].str; @@ -5704,8 +5723,8 @@ case 108: yyval.node = (Node *)n; ; break;} -case 109: -#line 794 "gram.y" +case 111: +#line 799 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = yyvsp[-2].str; @@ -5719,16 +5738,16 @@ case 109: yyval.node = (Node *)n; ; break;} -case 110: -#line 808 "gram.y" -{ yyval.list = yyvsp[0].list; ; - break;} -case 111: -#line 809 "gram.y" -{ yyval.list = NULL; ; - break;} case 112: #line 813 "gram.y" +{ yyval.list = yyvsp[0].list; ; + break;} +case 113: +#line 814 "gram.y" +{ yyval.list = NULL; ; + break;} +case 114: +#line 818 "gram.y" { if (yyvsp[0].node != NULL) yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); @@ -5736,8 +5755,8 @@ case 112: yyval.list = yyvsp[-1].list; ; break;} -case 113: -#line 820 "gram.y" +case 115: +#line 825 "gram.y" { if (yyvsp[0].node != NULL) yyval.list = lcons(yyvsp[0].node, NIL); @@ -5745,8 +5764,8 @@ case 113: yyval.list = NULL; ; break;} -case 114: -#line 829 "gram.y" +case 116: +#line 834 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -5756,24 +5775,24 @@ case 114: yyval.list = lcons((Node *)n, NIL); ; break;} -case 115: -#line 837 "gram.y" +case 117: +#line 842 "gram.y" { yyval.list = NULL; ; break;} -case 116: -#line 842 "gram.y" +case 118: +#line 847 "gram.y" { Constraint *n = (Constraint *)yyvsp[0].node; if (n != NULL) n->name = fmtId(yyvsp[-1].str); yyval.node = yyvsp[0].node; ; break;} -case 117: -#line 848 "gram.y" +case 119: +#line 853 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 118: -#line 867 "gram.y" +case 120: +#line 872 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -5783,8 +5802,8 @@ case 118: yyval.node = (Node *)n; ; break;} -case 119: -#line 876 "gram.y" +case 121: +#line 881 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; @@ -5794,8 +5813,8 @@ case 119: yyval.node = (Node *)n; ; break;} -case 120: -#line 885 "gram.y" +case 122: +#line 890 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_DEFAULT; @@ -5805,8 +5824,8 @@ case 120: yyval.node = (Node *)n; ; break;} -case 121: -#line 894 "gram.y" +case 123: +#line 899 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_NOTNULL; @@ -5816,8 +5835,8 @@ case 121: yyval.node = (Node *)n; ; break;} -case 122: -#line 903 "gram.y" +case 124: +#line 908 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; @@ -5827,8 +5846,8 @@ case 122: yyval.node = (Node *)n; ; break;} -case 123: -#line 912 "gram.y" +case 125: +#line 917 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -5838,173 +5857,173 @@ case 123: yyval.node = (Node *)n; ; break;} -case 124: -#line 921 "gram.y" +case 126: +#line 926 "gram.y" { elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"); yyval.node = NULL; ; break;} -case 125: -#line 928 "gram.y" +case 127: +#line 933 "gram.y" { yyval.list = lappend(yyvsp[-2].list,makeString(",")); yyval.list = nconc(yyval.list, yyvsp[0].list); ; break;} -case 126: -#line 933 "gram.y" +case 128: +#line 938 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 127: -#line 946 "gram.y" +case 129: +#line 951 "gram.y" { yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ; break;} -case 128: -#line 948 "gram.y" +case 130: +#line 953 "gram.y" { yyval.list = lcons( makeString( "-"), yyvsp[0].list); ; break;} -case 129: -#line 950 "gram.y" +case 131: +#line 955 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ; break;} -case 130: -#line 952 "gram.y" +case 132: +#line 957 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ; break;} -case 131: -#line 954 "gram.y" +case 133: +#line 959 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ; break;} -case 132: -#line 956 "gram.y" +case 134: +#line 961 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ; break;} -case 133: -#line 958 "gram.y" -{ elog(ERROR,"boolean expressions not supported in DEFAULT"); ; - break;} -case 134: -#line 960 "gram.y" -{ elog(ERROR,"boolean expressions not supported in DEFAULT"); ; - break;} case 135: -#line 962 "gram.y" +#line 963 "gram.y" { elog(ERROR,"boolean expressions not supported in DEFAULT"); ; break;} case 136: -#line 964 "gram.y" -{ yyval.list = lcons( makeString( ":"), yyvsp[0].list); ; +#line 965 "gram.y" +{ elog(ERROR,"boolean expressions not supported in DEFAULT"); ; break;} case 137: -#line 966 "gram.y" -{ yyval.list = lcons( makeString( ";"), yyvsp[0].list); ; +#line 967 "gram.y" +{ elog(ERROR,"boolean expressions not supported in DEFAULT"); ; break;} case 138: -#line 968 "gram.y" -{ yyval.list = lcons( makeString( "|"), yyvsp[0].list); ; +#line 969 "gram.y" +{ yyval.list = lcons( makeString( ":"), yyvsp[0].list); ; break;} case 139: -#line 970 "gram.y" +#line 971 "gram.y" +{ yyval.list = lcons( makeString( ";"), yyvsp[0].list); ; + break;} +case 140: +#line 973 "gram.y" +{ yyval.list = lcons( makeString( "|"), yyvsp[0].list); ; + break;} +case 141: +#line 975 "gram.y" { yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name); yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1)); ; break;} -case 140: -#line 975 "gram.y" +case 142: +#line 980 "gram.y" { yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name); yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1)); ; break;} -case 141: -#line 980 "gram.y" +case 143: +#line 985 "gram.y" { yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ; break;} -case 142: -#line 982 "gram.y" +case 144: +#line 987 "gram.y" { yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1); yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 143: -#line 987 "gram.y" +case 145: +#line 992 "gram.y" { yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1); yyval.list = nconc( yyval.list, yyvsp[-1].list); yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 144: -#line 993 "gram.y" +case 146: +#line 998 "gram.y" { if (!strcmp("<=", yyvsp[-1].str) || !strcmp(">=", yyvsp[-1].str)) elog(ERROR,"boolean expressions not supported in DEFAULT"); yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list)); ; break;} -case 145: -#line 999 "gram.y" -{ yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ; - break;} -case 146: -#line 1001 "gram.y" -{ yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ; - break;} case 147: #line 1004 "gram.y" -{ yyval.list = lcons( makeString( "date( 'current'::datetime + '0 sec')"), NIL); ; +{ yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ; break;} case 148: #line 1006 "gram.y" -{ yyval.list = lcons( makeString( "'now'::time"), NIL); ; +{ yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ; break;} case 149: -#line 1008 "gram.y" +#line 1009 "gram.y" +{ yyval.list = lcons( makeString( "date( 'current'::datetime + '0 sec')"), NIL); ; + break;} +case 150: +#line 1011 "gram.y" +{ yyval.list = lcons( makeString( "'now'::time"), NIL); ; + break;} +case 151: +#line 1013 "gram.y" { if (yyvsp[-1].ival != 0) elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival); yyval.list = lcons( makeString( "'now'::time"), NIL); ; break;} -case 150: -#line 1014 "gram.y" +case 152: +#line 1019 "gram.y" { yyval.list = lcons( makeString( "now()"), NIL); ; break;} -case 151: -#line 1016 "gram.y" +case 153: +#line 1021 "gram.y" { if (yyvsp[-1].ival != 0) elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival); yyval.list = lcons( makeString( "now()"), NIL); ; break;} -case 152: -#line 1022 "gram.y" +case 154: +#line 1027 "gram.y" { yyval.list = lcons( makeString( "CURRENT_USER"), NIL); ; break;} -case 153: -#line 1024 "gram.y" +case 155: +#line 1029 "gram.y" { yyval.list = lcons( makeString( "USER"), NIL); ; break;} -case 154: -#line 1032 "gram.y" +case 156: +#line 1037 "gram.y" { Constraint *n = (Constraint *)yyvsp[0].node; if (n != NULL) n->name = fmtId(yyvsp[-1].str); yyval.node = yyvsp[0].node; ; break;} -case 155: -#line 1038 "gram.y" +case 157: +#line 1043 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 156: -#line 1042 "gram.y" +case 158: +#line 1047 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_CHECK; @@ -6013,8 +6032,8 @@ case 156: yyval.node = (Node *)n; ; break;} -case 157: -#line 1050 "gram.y" +case 159: +#line 1055 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_UNIQUE; @@ -6024,8 +6043,8 @@ case 157: yyval.node = (Node *)n; ; break;} -case 158: -#line 1059 "gram.y" +case 160: +#line 1064 "gram.y" { Constraint *n = makeNode(Constraint); n->contype = CONSTR_PRIMARY; @@ -6035,183 +6054,183 @@ case 158: yyval.node = (Node *)n; ; break;} -case 159: -#line 1068 "gram.y" +case 161: +#line 1073 "gram.y" { elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"); yyval.node = NULL; ; break;} -case 160: -#line 1075 "gram.y" +case 162: +#line 1080 "gram.y" { yyval.list = lappend(yyvsp[-2].list,makeString(",")); yyval.list = nconc(yyval.list, yyvsp[0].list); ; break;} -case 161: -#line 1080 "gram.y" +case 163: +#line 1085 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 162: -#line 1086 "gram.y" +case 164: +#line 1091 "gram.y" { yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ; break;} -case 163: -#line 1088 "gram.y" +case 165: +#line 1093 "gram.y" { yyval.list = lcons( makeString("NULL"), NIL); ; break;} -case 164: -#line 1090 "gram.y" +case 166: +#line 1095 "gram.y" { yyval.list = lcons( makeString(fmtId(yyvsp[0].str)), NIL); ; break;} -case 165: -#line 1094 "gram.y" +case 167: +#line 1099 "gram.y" { yyval.list = lcons( makeString( "-"), yyvsp[0].list); ; break;} -case 166: -#line 1096 "gram.y" +case 168: +#line 1101 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ; break;} -case 167: -#line 1098 "gram.y" +case 169: +#line 1103 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ; break;} -case 168: -#line 1100 "gram.y" +case 170: +#line 1105 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ; break;} -case 169: -#line 1102 "gram.y" +case 171: +#line 1107 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ; break;} -case 170: -#line 1104 "gram.y" +case 172: +#line 1109 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "="), yyvsp[0].list)); ; break;} -case 171: -#line 1106 "gram.y" +case 173: +#line 1111 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "<"), yyvsp[0].list)); ; break;} -case 172: -#line 1108 "gram.y" +case 174: +#line 1113 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( ">"), yyvsp[0].list)); ; break;} -case 173: -#line 1110 "gram.y" +case 175: +#line 1115 "gram.y" { yyval.list = lcons( makeString( ":"), yyvsp[0].list); ; break;} -case 174: -#line 1112 "gram.y" +case 176: +#line 1117 "gram.y" { yyval.list = lcons( makeString( ";"), yyvsp[0].list); ; break;} -case 175: -#line 1114 "gram.y" +case 177: +#line 1119 "gram.y" { yyval.list = lcons( makeString( "|"), yyvsp[0].list); ; break;} -case 176: -#line 1116 "gram.y" +case 178: +#line 1121 "gram.y" { yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name); yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1)); ; break;} -case 177: -#line 1121 "gram.y" +case 179: +#line 1126 "gram.y" { yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name); yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1)); ; break;} -case 178: -#line 1126 "gram.y" +case 180: +#line 1131 "gram.y" { yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ; break;} -case 179: -#line 1128 "gram.y" +case 181: +#line 1133 "gram.y" { yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1); yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 180: -#line 1133 "gram.y" +case 182: +#line 1138 "gram.y" { yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1); yyval.list = nconc( yyval.list, yyvsp[-1].list); yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 181: -#line 1139 "gram.y" +case 183: +#line 1144 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list)); ; break;} -case 182: -#line 1141 "gram.y" +case 184: +#line 1146 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "LIKE"), yyvsp[0].list)); ; break;} -case 183: -#line 1143 "gram.y" +case 185: +#line 1148 "gram.y" { yyval.list = nconc( yyvsp[-3].list, lcons( makeString( "NOT LIKE"), yyvsp[0].list)); ; break;} -case 184: -#line 1145 "gram.y" +case 186: +#line 1150 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "AND"), yyvsp[0].list)); ; break;} -case 185: -#line 1147 "gram.y" +case 187: +#line 1152 "gram.y" { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "OR"), yyvsp[0].list)); ; break;} -case 186: -#line 1149 "gram.y" +case 188: +#line 1154 "gram.y" { yyval.list = lcons( makeString( "NOT"), yyvsp[0].list); ; break;} -case 187: -#line 1151 "gram.y" +case 189: +#line 1156 "gram.y" { yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ; break;} -case 188: -#line 1153 "gram.y" +case 190: +#line 1158 "gram.y" { yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ; break;} -case 189: -#line 1155 "gram.y" +case 191: +#line 1160 "gram.y" { yyval.list = lappend( yyvsp[-1].list, makeString( "IS NULL")); ; break;} -case 190: -#line 1157 "gram.y" +case 192: +#line 1162 "gram.y" { yyval.list = lappend( yyvsp[-2].list, makeString( "IS NULL")); ; break;} -case 191: -#line 1159 "gram.y" +case 193: +#line 1164 "gram.y" { yyval.list = lappend( yyvsp[-1].list, makeString( "IS NOT NULL")); ; break;} -case 192: -#line 1161 "gram.y" +case 194: +#line 1166 "gram.y" { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT NULL")); ; break;} -case 193: -#line 1163 "gram.y" +case 195: +#line 1168 "gram.y" { yyval.list = lappend( yyvsp[-2].list, makeString( "IS TRUE")); ; break;} -case 194: -#line 1165 "gram.y" +case 196: +#line 1170 "gram.y" { yyval.list = lappend( yyvsp[-2].list, makeString( "IS FALSE")); ; break;} -case 195: -#line 1167 "gram.y" +case 197: +#line 1172 "gram.y" { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT TRUE")); ; break;} -case 196: -#line 1169 "gram.y" +case 198: +#line 1174 "gram.y" { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT FALSE")); ; break;} -case 197: -#line 1171 "gram.y" +case 199: +#line 1176 "gram.y" { yyval.list = lappend( yyvsp[-4].list, makeString("IN")); yyval.list = lappend( yyval.list, makeString("(")); @@ -6219,8 +6238,8 @@ case 197: yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 198: -#line 1178 "gram.y" +case 200: +#line 1183 "gram.y" { yyval.list = lappend( yyvsp[-5].list, makeString("NOT IN")); yyval.list = lappend( yyval.list, makeString("(")); @@ -6228,8 +6247,8 @@ case 198: yyval.list = lappend( yyval.list, makeString(")")); ; break;} -case 199: -#line 1185 "gram.y" +case 201: +#line 1190 "gram.y" { yyval.list = lappend( yyvsp[-4].list, makeString("BETWEEN")); yyval.list = nconc( yyval.list, yyvsp[-2].list); @@ -6237,8 +6256,8 @@ case 199: yyval.list = nconc( yyval.list, yyvsp[0].list); ; break;} -case 200: -#line 1192 "gram.y" +case 202: +#line 1197 "gram.y" { yyval.list = lappend( yyvsp[-5].list, makeString("NOT BETWEEN")); yyval.list = nconc( yyval.list, yyvsp[-2].list); @@ -6246,107 +6265,108 @@ case 200: yyval.list = nconc( yyval.list, yyvsp[0].list); ; break;} -case 201: -#line 1201 "gram.y" +case 203: +#line 1206 "gram.y" { yyval.list = lappend(yyvsp[-2].list, makeString(",")); yyval.list = nconc(yyval.list, yyvsp[0].list); ; break;} -case 202: -#line 1206 "gram.y" +case 204: +#line 1211 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 203: -#line 1212 "gram.y" +case 205: +#line 1217 "gram.y" { yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ; break;} -case 204: -#line 1215 "gram.y" -{ yyval.str = NULL; ; - break;} -case 205: -#line 1216 "gram.y" -{ yyval.str = NULL; ; - break;} case 206: -#line 1217 "gram.y" +#line 1220 "gram.y" { yyval.str = NULL; ; break;} case 207: -#line 1220 "gram.y" -{ yyval.list = NIL; ; +#line 1221 "gram.y" +{ yyval.str = NULL; ; break;} case 208: -#line 1221 "gram.y" -{ yyval.list = NIL; ; +#line 1222 "gram.y" +{ yyval.str = NULL; ; break;} case 209: -#line 1222 "gram.y" -{ yyval.list = NIL; ; - break;} -case 210: #line 1225 "gram.y" { yyval.list = NIL; ; break;} -case 211: +case 210: #line 1226 "gram.y" +{ yyval.list = NIL; ; + break;} +case 211: +#line 1227 "gram.y" { yyval.list = NIL; ; break;} case 212: -#line 1229 "gram.y" -{ yyval.str = NULL; ; +#line 1230 "gram.y" +{ yyval.list = NIL; ; break;} case 213: -#line 1230 "gram.y" -{ yyval.str = NULL; ; +#line 1231 "gram.y" +{ yyval.list = NIL; ; break;} case 214: -#line 1231 "gram.y" +#line 1234 "gram.y" { yyval.str = NULL; ; break;} case 215: -#line 1232 "gram.y" +#line 1235 "gram.y" { yyval.str = NULL; ; break;} case 216: -#line 1235 "gram.y" -{ yyval.list = yyvsp[-1].list; ; +#line 1236 "gram.y" +{ yyval.str = NULL; ; break;} case 217: -#line 1236 "gram.y" -{ yyval.list = NIL; ; +#line 1237 "gram.y" +{ yyval.str = NULL; ; break;} case 218: #line 1240 "gram.y" +{ yyval.list = yyvsp[-1].list; ; + break;} +case 219: +#line 1241 "gram.y" +{ yyval.list = NIL; ; + break;} +case 220: +#line 1245 "gram.y" { SelectStmt *n = (SelectStmt *)yyvsp[0].node; if (yyvsp[-2].list != NIL) mapTargetColumns(yyvsp[-2].list, n->targetList); + n->istemp = yyvsp[-5].boolean; n->into = yyvsp[-3].str; yyval.node = (Node *)n; ; break;} -case 219: -#line 1249 "gram.y" +case 221: +#line 1255 "gram.y" { yyval.list = yyvsp[-1].list; ; break;} -case 220: -#line 1250 "gram.y" +case 222: +#line 1256 "gram.y" { yyval.list = NULL; ; break;} -case 221: -#line 1253 "gram.y" +case 223: +#line 1259 "gram.y" { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; break;} -case 222: -#line 1254 "gram.y" +case 224: +#line 1260 "gram.y" { yyval.list = lcons(yyvsp[0].node, NIL); ; break;} -case 223: -#line 1258 "gram.y" +case 225: +#line 1264 "gram.y" { ColumnDef *n = makeNode(ColumnDef); n->colname = yyvsp[0].str; @@ -6357,8 +6377,8 @@ case 223: yyval.node = (Node *)n; ; break;} -case 224: -#line 1278 "gram.y" +case 226: +#line 1284 "gram.y" { CreateSeqStmt *n = makeNode(CreateSeqStmt); n->seqname = yyvsp[-1].str; @@ -6366,98 +6386,98 @@ case 224: yyval.node = (Node *)n; ; break;} -case 225: -#line 1287 "gram.y" +case 227: +#line 1293 "gram.y" { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].defelt); ; break;} -case 226: -#line 1288 "gram.y" +case 228: +#line 1294 "gram.y" { yyval.list = NIL; ; break;} -case 227: -#line 1292 "gram.y" +case 229: +#line 1298 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "cache"; yyval.defelt->arg = (Node *)yyvsp[0].value; ; break;} -case 228: -#line 1298 "gram.y" +case 230: +#line 1304 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "cycle"; yyval.defelt->arg = (Node *)NULL; ; break;} -case 229: -#line 1304 "gram.y" +case 231: +#line 1310 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "increment"; yyval.defelt->arg = (Node *)yyvsp[0].value; ; break;} -case 230: -#line 1310 "gram.y" +case 232: +#line 1316 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "maxvalue"; yyval.defelt->arg = (Node *)yyvsp[0].value; ; break;} -case 231: -#line 1316 "gram.y" +case 233: +#line 1322 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "minvalue"; yyval.defelt->arg = (Node *)yyvsp[0].value; ; break;} -case 232: -#line 1322 "gram.y" +case 234: +#line 1328 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "start"; yyval.defelt->arg = (Node *)yyvsp[0].value; ; break;} -case 233: -#line 1329 "gram.y" -{ yyval.value = yyvsp[0].value; ; - break;} -case 234: -#line 1330 "gram.y" -{ yyval.value = yyvsp[0].value; ; - break;} case 235: -#line 1333 "gram.y" +#line 1335 "gram.y" +{ yyval.value = yyvsp[0].value; ; + break;} +case 236: +#line 1336 "gram.y" +{ yyval.value = yyvsp[0].value; ; + break;} +case 237: +#line 1339 "gram.y" { yyval.value = makeFloat(yyvsp[0].dval); ; break;} -case 236: -#line 1337 "gram.y" +case 238: +#line 1343 "gram.y" { yyval.value = makeFloat(yyvsp[0].dval); yyval.value->val.dval = - yyval.value->val.dval; ; break;} -case 237: -#line 1344 "gram.y" +case 239: +#line 1350 "gram.y" { yyval.value = makeInteger(yyvsp[0].ival); ; break;} -case 238: -#line 1348 "gram.y" +case 240: +#line 1354 "gram.y" { yyval.value = makeInteger(yyvsp[0].ival); yyval.value->val.ival = - yyval.value->val.ival; ; break;} -case 239: -#line 1364 "gram.y" +case 241: +#line 1370 "gram.y" { CreatePLangStmt *n = makeNode(CreatePLangStmt); n->plname = yyvsp[-4].str; @@ -6467,24 +6487,24 @@ case 239: yyval.node = (Node *)n; ; break;} -case 240: -#line 1374 "gram.y" +case 242: +#line 1380 "gram.y" { yyval.boolean = TRUE; ; break;} -case 241: -#line 1375 "gram.y" +case 243: +#line 1381 "gram.y" { yyval.boolean = FALSE; ; break;} -case 242: -#line 1378 "gram.y" +case 244: +#line 1384 "gram.y" { DropPLangStmt *n = makeNode(DropPLangStmt); n->plname = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 243: -#line 1396 "gram.y" +case 245: +#line 1402 "gram.y" { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = yyvsp[-11].str; @@ -6497,108 +6517,108 @@ case 243: yyval.node = (Node *)n; ; break;} -case 244: -#line 1409 "gram.y" +case 246: +#line 1415 "gram.y" { yyval.boolean = TRUE; ; break;} -case 245: -#line 1410 "gram.y" +case 247: +#line 1416 "gram.y" { yyval.boolean = FALSE; ; break;} -case 246: -#line 1414 "gram.y" +case 248: +#line 1420 "gram.y" { char *e = palloc (4); e[0] = yyvsp[0].chr; e[1] = 0; yyval.str = e; ; break;} -case 247: -#line 1419 "gram.y" +case 249: +#line 1425 "gram.y" { char *e = palloc (4); e[0] = yyvsp[-2].chr; e[1] = yyvsp[0].chr; e[2] = 0; yyval.str = e; ; break;} -case 248: -#line 1424 "gram.y" +case 250: +#line 1430 "gram.y" { char *e = palloc (4); e[0] = yyvsp[-4].chr; e[1] = yyvsp[-2].chr; e[2] = yyvsp[0].chr; e[3] = 0; yyval.str = e; ; break;} -case 249: -#line 1431 "gram.y" +case 251: +#line 1437 "gram.y" { yyval.chr = 'i'; ; break;} -case 250: -#line 1432 "gram.y" +case 252: +#line 1438 "gram.y" { yyval.chr = 'd'; ; break;} -case 251: -#line 1433 "gram.y" +case 253: +#line 1439 "gram.y" { yyval.chr = 'u'; ; break;} -case 252: -#line 1437 "gram.y" +case 254: +#line 1443 "gram.y" { yyval.boolean = yyvsp[0].boolean; ; break;} -case 253: -#line 1442 "gram.y" -{ yyval.boolean = TRUE; ; - break;} -case 254: -#line 1443 "gram.y" -{ yyval.boolean = FALSE; ; - break;} case 255: -#line 1446 "gram.y" +#line 1448 "gram.y" { yyval.boolean = TRUE; ; break;} case 256: -#line 1447 "gram.y" +#line 1449 "gram.y" { yyval.boolean = FALSE; ; break;} case 257: -#line 1451 "gram.y" -{ yyval.list = lcons(yyvsp[0].str, NIL); ; +#line 1452 "gram.y" +{ yyval.boolean = TRUE; ; break;} case 258: #line 1453 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].str); ; +{ yyval.boolean = FALSE; ; break;} case 259: -#line 1455 "gram.y" -{ yyval.list = NIL; ; +#line 1457 "gram.y" +{ yyval.list = lcons(yyvsp[0].str, NIL); ; break;} case 260: #line 1459 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].str); ; + break;} +case 261: +#line 1461 "gram.y" +{ yyval.list = NIL; ; + break;} +case 262: +#line 1465 "gram.y" { char *s = (char *) palloc (256); sprintf (s, "%d", yyvsp[0].ival); yyval.str = s; ; break;} -case 261: -#line 1465 "gram.y" +case 263: +#line 1471 "gram.y" { char *s = (char *) palloc (256); sprintf (s, "%g", yyvsp[0].dval); yyval.str = s; ; break;} -case 262: -#line 1470 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 263: -#line 1471 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 264: -#line 1475 "gram.y" +#line 1476 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 265: +#line 1477 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 266: +#line 1481 "gram.y" { DropTrigStmt *n = makeNode(DropTrigStmt); n->trigname = yyvsp[-2].str; @@ -6606,107 +6626,107 @@ case 264: yyval.node = (Node *) n; ; break;} -case 265: -#line 1492 "gram.y" +case 267: +#line 1498 "gram.y" { yyvsp[0].dstmt->defType = yyvsp[-1].ival; yyval.node = (Node *)yyvsp[0].dstmt; ; break;} -case 266: -#line 1499 "gram.y" +case 268: +#line 1505 "gram.y" { yyval.dstmt = makeNode(DefineStmt); yyval.dstmt->defname = yyvsp[-1].str; yyval.dstmt->definition = yyvsp[0].list; ; break;} -case 267: -#line 1506 "gram.y" +case 269: +#line 1512 "gram.y" { yyval.ival = OPERATOR; ; break;} -case 268: -#line 1507 "gram.y" +case 270: +#line 1513 "gram.y" { yyval.ival = TYPE_P; ; break;} -case 269: -#line 1508 "gram.y" +case 271: +#line 1514 "gram.y" { yyval.ival = AGGREGATE; ; break;} -case 270: -#line 1511 "gram.y" +case 272: +#line 1517 "gram.y" { yyval.str = "procedure"; ; break;} -case 271: -#line 1512 "gram.y" +case 273: +#line 1518 "gram.y" { yyval.str = "join"; ; break;} -case 272: -#line 1513 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 273: -#line 1514 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 274: -#line 1515 "gram.y" +#line 1519 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 275: -#line 1518 "gram.y" -{ yyval.list = yyvsp[-1].list; ; +#line 1520 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 276: #line 1521 "gram.y" -{ yyval.list = lcons(yyvsp[0].defelt, NIL); ; +{ yyval.str = yyvsp[0].str; ; break;} case 277: -#line 1522 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].defelt); ; +#line 1524 "gram.y" +{ yyval.list = yyvsp[-1].list; ; break;} case 278: -#line 1526 "gram.y" +#line 1527 "gram.y" +{ yyval.list = lcons(yyvsp[0].defelt, NIL); ; + break;} +case 279: +#line 1528 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].defelt); ; + break;} +case 280: +#line 1532 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = yyvsp[-2].str; yyval.defelt->arg = (Node *)yyvsp[0].node; ; break;} -case 279: -#line 1532 "gram.y" +case 281: +#line 1538 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = yyvsp[0].str; yyval.defelt->arg = (Node *)NULL; ; break;} -case 280: -#line 1538 "gram.y" +case 282: +#line 1544 "gram.y" { yyval.defelt = makeNode(DefElem); yyval.defelt->defname = "default"; yyval.defelt->arg = (Node *)yyvsp[0].node; ; break;} -case 281: -#line 1545 "gram.y" -{ yyval.node = (Node *)makeString(yyvsp[0].str); ; - break;} -case 282: -#line 1546 "gram.y" -{ yyval.node = (Node *)makeString(yyvsp[0].str); ; - break;} case 283: -#line 1547 "gram.y" -{ yyval.node = (Node *)yyvsp[0].value; ; +#line 1551 "gram.y" +{ yyval.node = (Node *)makeString(yyvsp[0].str); ; break;} case 284: -#line 1548 "gram.y" +#line 1552 "gram.y" { yyval.node = (Node *)makeString(yyvsp[0].str); ; break;} case 285: -#line 1550 "gram.y" +#line 1553 "gram.y" +{ yyval.node = (Node *)yyvsp[0].value; ; + break;} +case 286: +#line 1554 "gram.y" +{ yyval.node = (Node *)makeString(yyvsp[0].str); ; + break;} +case 287: +#line 1556 "gram.y" { TypeName *n = makeNode(TypeName); n->name = yyvsp[0].str; @@ -6716,8 +6736,8 @@ case 285: yyval.node = (Node *)n; ; break;} -case 286: -#line 1569 "gram.y" +case 288: +#line 1575 "gram.y" { DestroyStmt *n = makeNode(DestroyStmt); n->relNames = yyvsp[0].list; @@ -6725,8 +6745,8 @@ case 286: yyval.node = (Node *)n; ; break;} -case 287: -#line 1576 "gram.y" +case 289: +#line 1582 "gram.y" { DestroyStmt *n = makeNode(DestroyStmt); n->relNames = yyvsp[0].list; @@ -6734,8 +6754,8 @@ case 287: yyval.node = (Node *)n; ; break;} -case 288: -#line 1595 "gram.y" +case 290: +#line 1601 "gram.y" { FetchStmt *n = makeNode(FetchStmt); if (yyvsp[-2].ival == RELATIVE) @@ -6756,8 +6776,8 @@ case 288: yyval.node = (Node *)n; ; break;} -case 289: -#line 1615 "gram.y" +case 291: +#line 1621 "gram.y" { FetchStmt *n = makeNode(FetchStmt); if (yyvsp[-1].ival < 0) @@ -6772,163 +6792,163 @@ case 289: yyval.node = (Node *)n; ; break;} -case 290: -#line 1630 "gram.y" +case 292: +#line 1636 "gram.y" { yyval.ival = FORWARD; ; break;} -case 291: -#line 1631 "gram.y" +case 293: +#line 1637 "gram.y" { yyval.ival = BACKWARD; ; break;} -case 292: -#line 1632 "gram.y" +case 294: +#line 1638 "gram.y" { yyval.ival = RELATIVE; ; break;} -case 293: -#line 1634 "gram.y" +case 295: +#line 1640 "gram.y" { elog(NOTICE,"FETCH/ABSOLUTE not supported, using RELATIVE"); yyval.ival = RELATIVE; ; break;} -case 294: -#line 1638 "gram.y" +case 296: +#line 1644 "gram.y" { yyval.ival = FORWARD; /* default */ ; break;} -case 295: -#line 1641 "gram.y" +case 297: +#line 1647 "gram.y" { yyval.ival = yyvsp[0].ival; ; break;} -case 296: -#line 1642 "gram.y" +case 298: +#line 1648 "gram.y" { yyval.ival = - yyvsp[0].ival; ; break;} -case 297: -#line 1643 "gram.y" +case 299: +#line 1649 "gram.y" { yyval.ival = 0; /* 0 means fetch all tuples*/ ; break;} -case 298: -#line 1644 "gram.y" +case 300: +#line 1650 "gram.y" { yyval.ival = 1; ; break;} -case 299: -#line 1645 "gram.y" +case 301: +#line 1651 "gram.y" { yyval.ival = -1; ; break;} -case 300: -#line 1646 "gram.y" +case 302: +#line 1652 "gram.y" { yyval.ival = 1; /*default*/ ; break;} -case 301: -#line 1649 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 302: -#line 1650 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 303: -#line 1651 "gram.y" -{ yyval.str = NULL; ; +#line 1655 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 304: -#line 1663 "gram.y" +#line 1656 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 305: +#line 1657 "gram.y" +{ yyval.str = NULL; ; + break;} +case 306: +#line 1669 "gram.y" { yyval.node = (Node*)makeAclStmt(yyvsp[-5].str,yyvsp[-3].list,yyvsp[-1].str,'+'); ; break;} -case 305: -#line 1669 "gram.y" -{ - yyval.str = aclmakepriv("rwaR",0); - ; - break;} -case 306: -#line 1673 "gram.y" -{ - yyval.str = aclmakepriv("rwaR",0); - ; - break;} case 307: -#line 1677 "gram.y" +#line 1675 "gram.y" +{ + yyval.str = aclmakepriv("rwaR",0); + ; + break;} +case 308: +#line 1679 "gram.y" +{ + yyval.str = aclmakepriv("rwaR",0); + ; + break;} +case 309: +#line 1683 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 308: -#line 1683 "gram.y" +case 310: +#line 1689 "gram.y" { yyval.str = aclmakepriv("",yyvsp[0].chr); ; break;} -case 309: -#line 1687 "gram.y" +case 311: +#line 1693 "gram.y" { yyval.str = aclmakepriv(yyvsp[-2].str,yyvsp[0].chr); ; break;} -case 310: -#line 1693 "gram.y" +case 312: +#line 1699 "gram.y" { yyval.chr = ACL_MODE_RD_CHR; ; break;} -case 311: -#line 1697 "gram.y" +case 313: +#line 1703 "gram.y" { yyval.chr = ACL_MODE_AP_CHR; ; break;} -case 312: -#line 1701 "gram.y" -{ - yyval.chr = ACL_MODE_WR_CHR; - ; - break;} -case 313: -#line 1705 "gram.y" -{ - yyval.chr = ACL_MODE_WR_CHR; - ; - break;} case 314: -#line 1709 "gram.y" +#line 1707 "gram.y" +{ + yyval.chr = ACL_MODE_WR_CHR; + ; + break;} +case 315: +#line 1711 "gram.y" +{ + yyval.chr = ACL_MODE_WR_CHR; + ; + break;} +case 316: +#line 1715 "gram.y" { yyval.chr = ACL_MODE_RU_CHR; ; break;} -case 315: -#line 1715 "gram.y" +case 317: +#line 1721 "gram.y" { yyval.str = aclmakeuser("A",""); ; break;} -case 316: -#line 1719 "gram.y" +case 318: +#line 1725 "gram.y" { yyval.str = aclmakeuser("G",yyvsp[0].str); ; break;} -case 317: -#line 1723 "gram.y" +case 319: +#line 1729 "gram.y" { yyval.str = aclmakeuser("U",yyvsp[0].str); ; break;} -case 318: -#line 1729 "gram.y" +case 320: +#line 1735 "gram.y" { yyerror("WITH GRANT OPTION is not supported. Only relation owners can set privileges"); ; break;} -case 320: -#line 1744 "gram.y" +case 322: +#line 1750 "gram.y" { yyval.node = (Node*)makeAclStmt(yyvsp[-4].str,yyvsp[-2].list,yyvsp[0].str,'-'); ; break;} -case 321: -#line 1762 "gram.y" +case 323: +#line 1768 "gram.y" { /* should check that access_method is valid, etc ... but doesn't */ @@ -6943,40 +6963,40 @@ case 321: yyval.node = (Node *)n; ; break;} -case 322: -#line 1777 "gram.y" +case 324: +#line 1783 "gram.y" { yyval.boolean = TRUE; ; break;} -case 323: -#line 1778 "gram.y" +case 325: +#line 1784 "gram.y" { yyval.boolean = FALSE; ; break;} -case 324: -#line 1781 "gram.y" +case 326: +#line 1787 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 325: -#line 1782 "gram.y" +case 327: +#line 1788 "gram.y" { yyval.str = "btree"; ; break;} -case 326: -#line 1785 "gram.y" +case 328: +#line 1791 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 327: -#line 1786 "gram.y" +case 329: +#line 1792 "gram.y" { yyval.list = lcons(yyvsp[0].ielem,NIL); ; break;} -case 328: -#line 1789 "gram.y" +case 330: +#line 1795 "gram.y" { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].ielem); ; break;} -case 329: -#line 1790 "gram.y" +case 331: +#line 1796 "gram.y" { yyval.list = lcons(yyvsp[0].ielem, NIL); ; break;} -case 330: -#line 1794 "gram.y" +case 332: +#line 1800 "gram.y" { yyval.ielem = makeNode(IndexElem); yyval.ielem->name = yyvsp[-5].str; @@ -6985,8 +7005,8 @@ case 330: yyval.ielem->typename = yyvsp[-1].typnam; ; break;} -case 331: -#line 1804 "gram.y" +case 333: +#line 1810 "gram.y" { yyval.ielem = makeNode(IndexElem); yyval.ielem->name = yyvsp[-2].str; @@ -6995,32 +7015,32 @@ case 331: yyval.ielem->typename = yyvsp[-1].typnam; ; break;} -case 332: -#line 1813 "gram.y" -{ yyval.typnam = yyvsp[0].typnam; ; - break;} -case 333: -#line 1814 "gram.y" -{ yyval.typnam = yyvsp[0].typnam; ; - break;} case 334: -#line 1815 "gram.y" -{ yyval.typnam = NULL; ; +#line 1819 "gram.y" +{ yyval.typnam = yyvsp[0].typnam; ; break;} case 335: -#line 1824 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 1820 "gram.y" +{ yyval.typnam = yyvsp[0].typnam; ; break;} case 336: -#line 1825 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 1821 "gram.y" +{ yyval.typnam = NULL; ; break;} case 337: -#line 1826 "gram.y" -{ yyval.str = NULL; ; +#line 1830 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 338: -#line 1838 "gram.y" +#line 1831 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 339: +#line 1832 "gram.y" +{ yyval.str = NULL; ; + break;} +case 340: +#line 1844 "gram.y" { ExtendStmt *n = makeNode(ExtendStmt); n->idxname = yyvsp[-1].str; @@ -7028,8 +7048,8 @@ case 338: yyval.node = (Node *)n; ; break;} -case 339: -#line 1855 "gram.y" +case 341: +#line 1861 "gram.y" { RecipeStmt *n; if (!IsTransactionBlock()) @@ -7040,8 +7060,8 @@ case 339: yyval.node = (Node *)n; ; break;} -case 340: -#line 1885 "gram.y" +case 342: +#line 1891 "gram.y" { ProcedureStmt *n = makeNode(ProcedureStmt); n->funcname = yyvsp[-8].str; @@ -7053,32 +7073,32 @@ case 340: yyval.node = (Node *)n; ; break;} -case 341: -#line 1896 "gram.y" +case 343: +#line 1902 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 342: -#line 1897 "gram.y" -{ yyval.list = NIL; ; - break;} -case 343: -#line 1900 "gram.y" -{ yyval.list = yyvsp[-1].list; ; - break;} case 344: -#line 1901 "gram.y" +#line 1903 "gram.y" { yyval.list = NIL; ; break;} case 345: -#line 1905 "gram.y" -{ yyval.list = lcons(makeString(yyvsp[0].str),NIL); ; +#line 1906 "gram.y" +{ yyval.list = yyvsp[-1].list; ; break;} case 346: #line 1907 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ; +{ yyval.list = NIL; ; break;} case 347: #line 1911 "gram.y" +{ yyval.list = lcons(makeString(yyvsp[0].str),NIL); ; + break;} +case 348: +#line 1913 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ; + break;} +case 349: +#line 1917 "gram.y" { TypeName *n = makeNode(TypeName); n->name = yyvsp[0].str; @@ -7087,16 +7107,16 @@ case 347: yyval.node = (Node *)n; ; break;} -case 348: -#line 1920 "gram.y" +case 350: +#line 1926 "gram.y" { yyval.boolean = TRUE; ; break;} -case 349: -#line 1921 "gram.y" +case 351: +#line 1927 "gram.y" { yyval.boolean = FALSE; ; break;} -case 350: -#line 1942 "gram.y" +case 352: +#line 1948 "gram.y" { RemoveStmt *n = makeNode(RemoveStmt); n->removeType = yyvsp[-1].ival; @@ -7104,24 +7124,24 @@ case 350: yyval.node = (Node *)n; ; break;} -case 351: -#line 1950 "gram.y" +case 353: +#line 1956 "gram.y" { yyval.ival = TYPE_P; ; break;} -case 352: -#line 1951 "gram.y" -{ yyval.ival = INDEX; ; - break;} -case 353: -#line 1952 "gram.y" -{ yyval.ival = RULE; ; - break;} case 354: -#line 1953 "gram.y" -{ yyval.ival = VIEW; ; +#line 1957 "gram.y" +{ yyval.ival = INDEX; ; break;} case 355: #line 1958 "gram.y" +{ yyval.ival = RULE; ; + break;} +case 356: +#line 1959 "gram.y" +{ yyval.ival = VIEW; ; + break;} +case 357: +#line 1964 "gram.y" { RemoveAggrStmt *n = makeNode(RemoveAggrStmt); n->aggname = yyvsp[-1].str; @@ -7129,16 +7149,16 @@ case 355: yyval.node = (Node *)n; ; break;} -case 356: -#line 1966 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 357: -#line 1967 "gram.y" -{ yyval.str = NULL; ; - break;} case 358: #line 1972 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 359: +#line 1973 "gram.y" +{ yyval.str = NULL; ; + break;} +case 360: +#line 1978 "gram.y" { RemoveFuncStmt *n = makeNode(RemoveFuncStmt); n->funcname = yyvsp[-1].str; @@ -7146,8 +7166,8 @@ case 358: yyval.node = (Node *)n; ; break;} -case 359: -#line 1982 "gram.y" +case 361: +#line 1988 "gram.y" { RemoveOperStmt *n = makeNode(RemoveOperStmt); n->opname = yyvsp[-3].str; @@ -7155,54 +7175,54 @@ case 359: yyval.node = (Node *)n; ; break;} -case 362: -#line 1992 "gram.y" +case 364: +#line 1998 "gram.y" { yyval.str = "+"; ; break;} -case 363: -#line 1993 "gram.y" +case 365: +#line 1999 "gram.y" { yyval.str = "-"; ; break;} -case 364: -#line 1994 "gram.y" +case 366: +#line 2000 "gram.y" { yyval.str = "*"; ; break;} -case 365: -#line 1995 "gram.y" +case 367: +#line 2001 "gram.y" { yyval.str = "/"; ; break;} -case 366: -#line 1996 "gram.y" +case 368: +#line 2002 "gram.y" { yyval.str = "<"; ; break;} -case 367: -#line 1997 "gram.y" +case 369: +#line 2003 "gram.y" { yyval.str = ">"; ; break;} -case 368: -#line 1998 "gram.y" +case 370: +#line 2004 "gram.y" { yyval.str = "="; ; break;} -case 369: -#line 2002 "gram.y" +case 371: +#line 2008 "gram.y" { elog(ERROR,"parser: argument type missing (use NONE for unary operators)"); ; break;} -case 370: -#line 2006 "gram.y" +case 372: +#line 2012 "gram.y" { yyval.list = makeList(makeString(yyvsp[-2].str), makeString(yyvsp[0].str), -1); ; break;} -case 371: -#line 2008 "gram.y" +case 373: +#line 2014 "gram.y" { yyval.list = makeList(NULL, makeString(yyvsp[0].str), -1); ; break;} -case 372: -#line 2010 "gram.y" +case 374: +#line 2016 "gram.y" { yyval.list = makeList(makeString(yyvsp[-2].str), NULL, -1); ; break;} -case 373: -#line 2024 "gram.y" +case 375: +#line 2030 "gram.y" { RenameStmt *n = makeNode(RenameStmt); n->relname = yyvsp[-6].str; @@ -7212,28 +7232,28 @@ case 373: yyval.node = (Node *)n; ; break;} -case 374: -#line 2034 "gram.y" +case 376: +#line 2040 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 375: -#line 2035 "gram.y" +case 377: +#line 2041 "gram.y" { yyval.str = NULL; ; break;} -case 376: -#line 2038 "gram.y" +case 378: +#line 2044 "gram.y" { yyval.ival = COLUMN; ; break;} -case 377: -#line 2039 "gram.y" +case 379: +#line 2045 "gram.y" { yyval.ival = 0; ; break;} -case 378: -#line 2053 "gram.y" +case 380: +#line 2059 "gram.y" { QueryIsRule=TRUE; ; break;} -case 379: -#line 2056 "gram.y" +case 381: +#line 2062 "gram.y" { RuleStmt *n = makeNode(RuleStmt); n->rulename = yyvsp[-10].str; @@ -7245,36 +7265,36 @@ case 379: yyval.node = (Node *)n; ; break;} -case 380: -#line 2068 "gram.y" +case 382: +#line 2074 "gram.y" { yyval.list = NIL; ; break;} -case 381: -#line 2069 "gram.y" -{ yyval.list = lcons(yyvsp[0].node, NIL); ; - break;} -case 382: -#line 2070 "gram.y" -{ yyval.list = yyvsp[-1].list; ; - break;} case 383: -#line 2078 "gram.y" -{ yyval.list = yyvsp[0].list; ; +#line 2075 "gram.y" +{ yyval.list = lcons(yyvsp[0].node, NIL); ; break;} case 384: -#line 2080 "gram.y" -{ yyval.list = lcons(yyvsp[0].node, NIL); ; +#line 2076 "gram.y" +{ yyval.list = yyvsp[-1].list; ; break;} case 385: #line 2084 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ; +{ yyval.list = yyvsp[0].list; ; break;} case 386: -#line 2093 "gram.y" -{ yyval.list = lcons(yyvsp[-1].node, NIL); ; +#line 2086 "gram.y" +{ yyval.list = lcons(yyvsp[0].node, NIL); ; break;} case 387: -#line 2097 "gram.y" +#line 2090 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ; + break;} +case 388: +#line 2099 "gram.y" +{ yyval.list = lcons(yyvsp[-1].node, NIL); ; + break;} +case 389: +#line 2103 "gram.y" { yyval.attr = makeNode(Attr); yyval.attr->relname = yyvsp[-2].str; @@ -7283,8 +7303,8 @@ case 387: yyval.attr->indirection = NIL; ; break;} -case 388: -#line 2105 "gram.y" +case 390: +#line 2111 "gram.y" { yyval.attr = makeNode(Attr); yyval.attr->relname = yyvsp[0].str; @@ -7293,87 +7313,79 @@ case 388: yyval.attr->indirection = NIL; ; break;} -case 389: -#line 2115 "gram.y" +case 391: +#line 2121 "gram.y" { yyval.ival = CMD_SELECT; ; break;} -case 390: -#line 2116 "gram.y" +case 392: +#line 2122 "gram.y" { yyval.ival = CMD_UPDATE; ; break;} -case 391: -#line 2117 "gram.y" +case 393: +#line 2123 "gram.y" { yyval.ival = CMD_DELETE; ; break;} -case 392: -#line 2118 "gram.y" +case 394: +#line 2124 "gram.y" { yyval.ival = CMD_INSERT; ; break;} -case 393: -#line 2121 "gram.y" +case 395: +#line 2127 "gram.y" { yyval.boolean = TRUE; ; break;} -case 394: -#line 2122 "gram.y" +case 396: +#line 2128 "gram.y" { yyval.boolean = FALSE; ; break;} -case 395: -#line 2135 "gram.y" +case 397: +#line 2141 "gram.y" { NotifyStmt *n = makeNode(NotifyStmt); n->relname = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 396: -#line 2143 "gram.y" +case 398: +#line 2149 "gram.y" { ListenStmt *n = makeNode(ListenStmt); n->relname = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 397: -#line 2151 "gram.y" +case 399: +#line 2157 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->relname = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 398: -#line 2157 "gram.y" +case 400: +#line 2163 "gram.y" { UnlistenStmt *n = makeNode(UnlistenStmt); n->relname = "*"; yyval.node = (Node *)n; ; break;} -case 399: -#line 2179 "gram.y" +case 401: +#line 2185 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->command = ABORT_TRANS; yyval.node = (Node *)n; ; break;} -case 400: -#line 2185 "gram.y" +case 402: +#line 2191 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->command = BEGIN_TRANS; yyval.node = (Node *)n; ; break;} -case 401: -#line 2191 "gram.y" -{ - TransactionStmt *n = makeNode(TransactionStmt); - n->command = END_TRANS; - yyval.node = (Node *)n; - ; - break;} -case 402: +case 403: #line 2197 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); @@ -7381,28 +7393,36 @@ case 402: yyval.node = (Node *)n; ; break;} -case 403: +case 404: #line 2203 "gram.y" +{ + TransactionStmt *n = makeNode(TransactionStmt); + n->command = END_TRANS; + yyval.node = (Node *)n; + ; + break;} +case 405: +#line 2209 "gram.y" { TransactionStmt *n = makeNode(TransactionStmt); n->command = ABORT_TRANS; yyval.node = (Node *)n; ; break;} -case 404: -#line 2210 "gram.y" -{ yyval.boolean = TRUE; ; - break;} -case 405: -#line 2211 "gram.y" -{ yyval.boolean = TRUE; ; - break;} case 406: -#line 2212 "gram.y" +#line 2216 "gram.y" { yyval.boolean = TRUE; ; break;} case 407: -#line 2224 "gram.y" +#line 2217 "gram.y" +{ yyval.boolean = TRUE; ; + break;} +case 408: +#line 2218 "gram.y" +{ yyval.boolean = TRUE; ; + break;} +case 409: +#line 2230 "gram.y" { ViewStmt *n = makeNode(ViewStmt); n->viewname = yyvsp[-2].str; @@ -7416,16 +7436,16 @@ case 407: yyval.node = (Node *)n; ; break;} -case 408: -#line 2247 "gram.y" +case 410: +#line 2253 "gram.y" { LoadStmt *n = makeNode(LoadStmt); n->filename = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 409: -#line 2263 "gram.y" +case 411: +#line 2269 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); if (yyvsp[-1].str == NULL && yyvsp[0].str == NULL) { @@ -7450,8 +7470,8 @@ case 409: yyval.node = (Node *)n; ; break;} -case 410: -#line 2287 "gram.y" +case 412: +#line 2293 "gram.y" { CreatedbStmt *n = makeNode(CreatedbStmt); n->dbname = yyvsp[0].str; @@ -7464,56 +7484,56 @@ case 410: yyval.node = (Node *)n; ; break;} -case 411: -#line 2300 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 412: -#line 2301 "gram.y" -{ yyval.str = NULL; ; - break;} case 413: -#line 2304 "gram.y" +#line 2306 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 414: -#line 2305 "gram.y" +#line 2307 "gram.y" { yyval.str = NULL; ; break;} case 415: -#line 2308 "gram.y" +#line 2310 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 416: -#line 2309 "gram.y" +#line 2311 "gram.y" { yyval.str = NULL; ; break;} case 417: -#line 2310 "gram.y" -{ yyval.str = NULL; ; - break;} -case 418: -#line 2313 "gram.y" +#line 2314 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 419: -#line 2314 "gram.y" -{ yyval.str = NULL; ; - break;} -case 420: +case 418: #line 2315 "gram.y" { yyval.str = NULL; ; break;} +case 419: +#line 2316 "gram.y" +{ yyval.str = NULL; ; + break;} +case 420: +#line 2319 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} case 421: -#line 2326 "gram.y" +#line 2320 "gram.y" +{ yyval.str = NULL; ; + break;} +case 422: +#line 2321 "gram.y" +{ yyval.str = NULL; ; + break;} +case 423: +#line 2332 "gram.y" { DestroydbStmt *n = makeNode(DestroydbStmt); n->dbname = yyvsp[0].str; yyval.node = (Node *)n; ; break;} -case 422: -#line 2342 "gram.y" +case 424: +#line 2348 "gram.y" { ClusterStmt *n = makeNode(ClusterStmt); n->relname = yyvsp[0].str; @@ -7521,8 +7541,8 @@ case 422: yyval.node = (Node*)n; ; break;} -case 423: -#line 2359 "gram.y" +case 425: +#line 2365 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->verbose = yyvsp[-1].boolean; @@ -7532,8 +7552,8 @@ case 423: yyval.node = (Node *)n; ; break;} -case 424: -#line 2368 "gram.y" +case 426: +#line 2374 "gram.y" { VacuumStmt *n = makeNode(VacuumStmt); n->verbose = yyvsp[-3].boolean; @@ -7545,40 +7565,40 @@ case 424: yyval.node = (Node *)n; ; break;} -case 425: -#line 2380 "gram.y" -{ yyval.boolean = TRUE; ; - break;} -case 426: -#line 2381 "gram.y" -{ yyval.boolean = FALSE; ; - break;} case 427: -#line 2384 "gram.y" +#line 2386 "gram.y" { yyval.boolean = TRUE; ; break;} case 428: -#line 2385 "gram.y" +#line 2387 "gram.y" { yyval.boolean = FALSE; ; break;} case 429: -#line 2388 "gram.y" -{ yyval.list = yyvsp[-1].list; ; +#line 2390 "gram.y" +{ yyval.boolean = TRUE; ; break;} case 430: -#line 2389 "gram.y" -{ yyval.list = NIL; ; +#line 2391 "gram.y" +{ yyval.boolean = FALSE; ; break;} case 431: -#line 2393 "gram.y" -{ yyval.list=lcons(yyvsp[0].str,NIL); ; +#line 2394 "gram.y" +{ yyval.list = yyvsp[-1].list; ; break;} case 432: #line 2395 "gram.y" -{ yyval.list=lappend(yyvsp[-2].list,yyvsp[0].str); ; +{ yyval.list = NIL; ; break;} case 433: -#line 2407 "gram.y" +#line 2399 "gram.y" +{ yyval.list=lcons(yyvsp[0].str,NIL); ; + break;} +case 434: +#line 2401 "gram.y" +{ yyval.list=lappend(yyvsp[-2].list,yyvsp[0].str); ; + break;} +case 435: +#line 2413 "gram.y" { ExplainStmt *n = makeNode(ExplainStmt); n->verbose = yyvsp[-1].boolean; @@ -7586,15 +7606,15 @@ case 433: yyval.node = (Node *)n; ; break;} -case 440: -#line 2450 "gram.y" +case 442: +#line 2456 "gram.y" { yyvsp[0].astmt->relname = yyvsp[-1].str; yyval.node = (Node *)yyvsp[0].astmt; ; break;} -case 441: -#line 2457 "gram.y" +case 443: +#line 2463 "gram.y" { yyval.astmt = makeNode(InsertStmt); yyval.astmt->cols = NULL; @@ -7607,8 +7627,8 @@ case 441: yyval.astmt->unionClause = NIL; ; break;} -case 442: -#line 2469 "gram.y" +case 444: +#line 2475 "gram.y" { yyval.astmt = makeNode(InsertStmt); yyval.astmt->unique = NULL; @@ -7622,8 +7642,8 @@ case 442: yyval.astmt->intersectClause = NIL; ; break;} -case 443: -#line 2485 "gram.y" +case 445: +#line 2491 "gram.y" { SelectStmt *n; @@ -7641,8 +7661,8 @@ case 443: yyval.astmt->forUpdate = n->forUpdate; ; break;} -case 444: -#line 2502 "gram.y" +case 446: +#line 2508 "gram.y" { yyval.astmt = makeNode(InsertStmt); yyval.astmt->cols = yyvsp[-5].list; @@ -7657,8 +7677,8 @@ case 444: yyval.astmt->intersectClause = NIL; ; break;} -case 445: -#line 2516 "gram.y" +case 447: +#line 2522 "gram.y" { SelectStmt *n; @@ -7675,24 +7695,24 @@ case 445: yyval.astmt->intersectClause = n->intersectClause; ; break;} -case 446: -#line 2533 "gram.y" -{ yyval.list = yyvsp[-1].list; ; - break;} -case 447: -#line 2534 "gram.y" -{ yyval.list = NIL; ; - break;} case 448: #line 2539 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; +{ yyval.list = yyvsp[-1].list; ; break;} case 449: -#line 2541 "gram.y" -{ yyval.list = lcons(yyvsp[0].node, NIL); ; +#line 2540 "gram.y" +{ yyval.list = NIL; ; break;} case 450: #line 2545 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; + break;} +case 451: +#line 2547 "gram.y" +{ yyval.list = lcons(yyvsp[0].node, NIL); ; + break;} +case 452: +#line 2551 "gram.y" { Ident *id = makeNode(Ident); id->name = yyvsp[-1].str; @@ -7700,8 +7720,8 @@ case 450: yyval.node = (Node *)id; ; break;} -case 451: -#line 2563 "gram.y" +case 453: +#line 2569 "gram.y" { DeleteStmt *n = makeNode(DeleteStmt); n->relname = yyvsp[-1].str; @@ -7709,8 +7729,8 @@ case 451: yyval.node = (Node *)n; ; break;} -case 452: -#line 2572 "gram.y" +case 454: +#line 2578 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -7719,8 +7739,8 @@ case 452: yyval.node = (Node *)n; ; break;} -case 453: -#line 2580 "gram.y" +case 455: +#line 2586 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -7747,8 +7767,8 @@ case 453: yyval.node = (Node *)n; ; break;} -case 454: -#line 2606 "gram.y" +case 456: +#line 2612 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -7766,8 +7786,8 @@ case 454: yyval.node = (Node *)n; ; break;} -case 455: -#line 2623 "gram.y" +case 457: +#line 2629 "gram.y" { LockStmt *n = makeNode(LockStmt); @@ -7783,16 +7803,16 @@ case 455: yyval.node = (Node *)n; ; break;} -case 456: -#line 2639 "gram.y" +case 458: +#line 2645 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 457: -#line 2640 "gram.y" +case 459: +#line 2646 "gram.y" { yyval.str = NULL; ; break;} -case 458: -#line 2654 "gram.y" +case 460: +#line 2660 "gram.y" { UpdateStmt *n = makeNode(UpdateStmt); n->relname = yyvsp[-4].str; @@ -7802,8 +7822,8 @@ case 458: yyval.node = (Node *)n; ; break;} -case 459: -#line 2673 "gram.y" +case 461: +#line 2679 "gram.y" { SelectStmt *n; @@ -7824,54 +7844,54 @@ case 459: yyval.node = (Node *)n; ; break;} -case 460: -#line 2694 "gram.y" +case 462: +#line 2700 "gram.y" { yyval.boolean = TRUE; ; break;} -case 461: -#line 2695 "gram.y" -{ yyval.boolean = FALSE; ; - break;} -case 462: -#line 2696 "gram.y" -{ yyval.boolean = FALSE; ; - break;} case 463: -#line 2697 "gram.y" +#line 2701 "gram.y" { yyval.boolean = FALSE; ; break;} case 464: -#line 2698 "gram.y" -{ yyval.boolean = FALSE; ; - break;} -case 465: -#line 2701 "gram.y" -{ yyval.boolean = yyvsp[0].boolean; ; - break;} -case 466: #line 2702 "gram.y" +{ yyval.boolean = FALSE; ; + break;} +case 465: +#line 2703 "gram.y" +{ yyval.boolean = FALSE; ; + break;} +case 466: +#line 2704 "gram.y" { yyval.boolean = FALSE; ; break;} case 467: -#line 2705 "gram.y" -{ yyval.boolean = TRUE; ; +#line 2707 "gram.y" +{ yyval.boolean = yyvsp[0].boolean; ; break;} case 468: -#line 2707 "gram.y" +#line 2708 "gram.y" +{ yyval.boolean = FALSE; ; + break;} +case 469: +#line 2711 "gram.y" +{ yyval.boolean = TRUE; ; + break;} +case 470: +#line 2713 "gram.y" { elog(ERROR,"DECLARE/UPDATE not supported;" " Cursors must be READ ONLY."); yyval.boolean = FALSE; ; break;} -case 469: -#line 2715 "gram.y" +case 471: +#line 2721 "gram.y" { yyval.boolean = FALSE; ; break;} -case 470: -#line 2732 "gram.y" +case 472: +#line 2738 "gram.y" { /* There were no set operations, so just attach the sortClause */ if IsA(yyvsp[-2].node, SelectStmt) @@ -7945,27 +7965,27 @@ case 470: elog(ERROR, "SELECT FOR UPDATE is not allowed in RULES"); ; break;} -case 471: -#line 2821 "gram.y" +case 473: +#line 2827 "gram.y" { yyval.node = yyvsp[-1].node; ; break;} -case 472: -#line 2825 "gram.y" +case 474: +#line 2831 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 473: -#line 2829 "gram.y" +case 475: +#line 2835 "gram.y" { yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node, makeA_Expr(NOT,NULL,NULL,yyvsp[0].node)); ; break;} -case 474: -#line 2834 "gram.y" +case 476: +#line 2840 "gram.y" { if (IsA(yyvsp[0].node, SelectStmt)) { @@ -7975,14 +7995,14 @@ case 474: yyval.node = (Node *)makeA_Expr(OR,NULL,yyvsp[-3].node,yyvsp[0].node); ; break;} -case 475: -#line 2843 "gram.y" +case 477: +#line 2849 "gram.y" { yyval.node = (Node *)makeA_Expr(AND,NULL,yyvsp[-2].node,yyvsp[0].node); ; break;} -case 476: -#line 2852 "gram.y" +case 478: +#line 2858 "gram.y" { SelectStmt *n = makeNode(SelectStmt); n->unique = yyvsp[-6].str; @@ -7996,8 +8016,9 @@ case 476: * want to create a new rule 'SubSelect1' including the * feature. If it makes troubles we will have to add * a new rule and change this to prevent INTOs in - * Subselects again */ - n->into = yyvsp[-4].str; + * Subselects again */ + n->istemp = (bool)((A_Const *)lfirst(yyvsp[-4].list))->val.val.ival; + n->into = (char *)lnext(yyvsp[-4].list); n->fromClause = yyvsp[-3].list; n->whereClause = yyvsp[-2].node; @@ -8006,259 +8027,259 @@ case 476: yyval.node = (Node *)n; ; break;} -case 477: -#line 2876 "gram.y" -{ yyval.str= yyvsp[0].str; ; - break;} -case 478: -#line 2877 "gram.y" -{ yyval.str = NULL; ; - break;} case 479: -#line 2880 "gram.y" -{ yyval.boolean = TRUE; ; +#line 2884 "gram.y" +{ yyval.list = lcons(makeInteger(yyvsp[-2].boolean), (List *)yyvsp[0].str); ; break;} case 480: -#line 2881 "gram.y" -{ yyval.boolean = FALSE; ; +#line 2885 "gram.y" +{ yyval.list = lcons(makeInteger(false), NIL); ; break;} case 481: -#line 2884 "gram.y" +#line 2888 "gram.y" { yyval.boolean = TRUE; ; break;} case 482: -#line 2885 "gram.y" +#line 2889 "gram.y" { yyval.boolean = FALSE; ; break;} case 483: -#line 2888 "gram.y" -{ yyval.str = "*"; ; +#line 2892 "gram.y" +{ yyval.boolean = TRUE; ; break;} case 484: -#line 2889 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 2893 "gram.y" +{ yyval.boolean = FALSE; ; break;} case 485: -#line 2890 "gram.y" -{ yyval.str = NULL; ; +#line 2896 "gram.y" +{ yyval.str = "*"; ; break;} case 486: -#line 2891 "gram.y" -{ yyval.str = NULL; ; +#line 2897 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 487: -#line 2894 "gram.y" -{ yyval.list = yyvsp[0].list; ; +#line 2898 "gram.y" +{ yyval.str = NULL; ; break;} case 488: -#line 2895 "gram.y" -{ yyval.list = NIL; ; +#line 2899 "gram.y" +{ yyval.str = NULL; ; break;} case 489: -#line 2898 "gram.y" -{ yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ; +#line 2902 "gram.y" +{ yyval.list = yyvsp[0].list; ; break;} case 490: -#line 2899 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ; +#line 2903 "gram.y" +{ yyval.list = NIL; ; break;} case 491: -#line 2903 "gram.y" +#line 2906 "gram.y" +{ yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ; + break;} +case 492: +#line 2907 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ; + break;} +case 493: +#line 2911 "gram.y" { yyval.sortgroupby = makeNode(SortGroupBy); yyval.sortgroupby->node = yyvsp[-1].node; yyval.sortgroupby->useOp = yyvsp[0].str; ; break;} -case 492: -#line 2910 "gram.y" +case 494: +#line 2918 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 493: -#line 2911 "gram.y" -{ yyval.str = "<"; ; - break;} -case 494: -#line 2912 "gram.y" -{ yyval.str = ">"; ; - break;} case 495: -#line 2913 "gram.y" +#line 2919 "gram.y" { yyval.str = "<"; ; break;} case 496: -#line 2914 "gram.y" +#line 2920 "gram.y" { yyval.str = ">"; ; break;} case 497: -#line 2915 "gram.y" -{ yyval.str = "<"; /*default*/ ; +#line 2921 "gram.y" +{ yyval.str = "<"; ; break;} case 498: -#line 2925 "gram.y" -{ yyval.boolean = TRUE; ; +#line 2922 "gram.y" +{ yyval.str = ">"; ; break;} case 499: -#line 2926 "gram.y" -{ yyval.boolean = FALSE; ; +#line 2923 "gram.y" +{ yyval.str = "<"; /*default*/ ; + break;} +case 500: +#line 2933 "gram.y" +{ yyval.boolean = TRUE; ; break;} case 501: -#line 2932 "gram.y" -{ yyval.list = lcons(makeString(yyvsp[0].str),NIL); ; - break;} -case 502: #line 2934 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ; +{ yyval.boolean = FALSE; ; break;} case 503: -#line 2937 "gram.y" -{ yyval.list = yyvsp[0].list; ; +#line 2940 "gram.y" +{ yyval.list = lcons(makeString(yyvsp[0].str),NIL); ; break;} case 504: -#line 2938 "gram.y" -{ yyval.list = NIL; ; +#line 2942 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ; break;} case 505: -#line 2942 "gram.y" -{ - yyval.node = yyvsp[0].node; - ; +#line 2945 "gram.y" +{ yyval.list = yyvsp[0].list; ; break;} case 506: -#line 2945 "gram.y" -{ yyval.node = NULL; ; +#line 2946 "gram.y" +{ yyval.list = NIL; ; break;} case 507: #line 2950 "gram.y" { - yyval.list = lcons(NULL, NULL); - ; + yyval.node = yyvsp[0].node; + ; break;} case 508: -#line 2954 "gram.y" -{ - yyval.list = yyvsp[0].list; - ; +#line 2953 "gram.y" +{ yyval.node = NULL; ; break;} case 509: #line 2958 "gram.y" { - yyval.list = NULL; + yyval.list = lcons(NULL, NULL); ; break;} case 510: -#line 2972 "gram.y" +#line 2962 "gram.y" +{ + yyval.list = yyvsp[0].list; + ; + break;} +case 511: +#line 2966 "gram.y" +{ + yyval.list = NULL; + ; + break;} +case 512: +#line 2980 "gram.y" { yyval.list = NIL; elog(ERROR,"JOIN not yet implemented"); ; break;} -case 511: -#line 2976 "gram.y" +case 513: +#line 2984 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 512: -#line 2977 "gram.y" +case 514: +#line 2985 "gram.y" { yyval.list = NIL; ; break;} -case 513: -#line 2981 "gram.y" +case 515: +#line 2989 "gram.y" { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].range); ; break;} -case 514: -#line 2983 "gram.y" +case 516: +#line 2991 "gram.y" { elog(ERROR,"CROSS JOIN not yet implemented"); ; break;} -case 515: -#line 2985 "gram.y" +case 517: +#line 2993 "gram.y" { yyval.list = lcons(yyvsp[0].range, NIL); ; break;} -case 516: -#line 2989 "gram.y" +case 518: +#line 2997 "gram.y" { yyval.range = makeNode(RangeVar); yyval.range->relExpr = yyvsp[-2].relexp; yyval.range->name = yyvsp[0].str; ; break;} -case 517: -#line 2995 "gram.y" +case 519: +#line 3003 "gram.y" { yyval.range = makeNode(RangeVar); yyval.range->relExpr = yyvsp[-1].relexp; yyval.range->name = yyvsp[0].str; ; break;} -case 518: -#line 3001 "gram.y" +case 520: +#line 3009 "gram.y" { yyval.range = makeNode(RangeVar); yyval.range->relExpr = yyvsp[0].relexp; yyval.range->name = NULL; ; break;} -case 519: -#line 3008 "gram.y" +case 521: +#line 3016 "gram.y" { yyval.str = NULL; ; break;} -case 520: -#line 3010 "gram.y" +case 522: +#line 3018 "gram.y" { elog(ERROR,"FULL OUTER JOIN not yet implemented"); ; break;} -case 521: -#line 3012 "gram.y" +case 523: +#line 3020 "gram.y" { elog(ERROR,"LEFT OUTER JOIN not yet implemented"); ; break;} -case 522: -#line 3014 "gram.y" +case 524: +#line 3022 "gram.y" { elog(ERROR,"RIGHT OUTER JOIN not yet implemented"); ; break;} -case 523: -#line 3016 "gram.y" +case 525: +#line 3024 "gram.y" { elog(ERROR,"OUTER JOIN not yet implemented"); ; break;} -case 524: -#line 3018 "gram.y" -{ elog(ERROR,"INNER JOIN not yet implemented"); ; - break;} -case 525: -#line 3020 "gram.y" -{ elog(ERROR,"UNION JOIN not yet implemented"); ; - break;} case 526: -#line 3022 "gram.y" +#line 3026 "gram.y" { elog(ERROR,"INNER JOIN not yet implemented"); ; break;} case 527: -#line 3025 "gram.y" -{ yyval.str = NULL; ; +#line 3028 "gram.y" +{ elog(ERROR,"UNION JOIN not yet implemented"); ; break;} case 528: -#line 3026 "gram.y" -{ yyval.str = NULL; /* no qualifiers */ ; +#line 3030 "gram.y" +{ elog(ERROR,"INNER JOIN not yet implemented"); ; break;} case 529: -#line 3029 "gram.y" +#line 3033 "gram.y" { yyval.str = NULL; ; break;} case 530: -#line 3030 "gram.y" -{ yyval.str = NULL; ; - break;} -case 531: -#line 3031 "gram.y" +#line 3034 "gram.y" { yyval.str = NULL; /* no qualifiers */ ; break;} +case 531: +#line 3037 "gram.y" +{ yyval.str = NULL; ; + break;} case 532: -#line 3034 "gram.y" -{ yyval.list = lcons(yyvsp[0].joinusing, NIL); ; +#line 3038 "gram.y" +{ yyval.str = NULL; ; break;} case 533: -#line 3035 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].joinusing); ; +#line 3039 "gram.y" +{ yyval.str = NULL; /* no qualifiers */ ; break;} case 534: -#line 3047 "gram.y" +#line 3042 "gram.y" +{ yyval.list = lcons(yyvsp[0].joinusing, NIL); ; + break;} +case 535: +#line 3043 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].joinusing); ; + break;} +case 536: +#line 3055 "gram.y" { yyval.joinusing = makeNode(JoinUsing); yyval.joinusing->resno = 0; @@ -8266,8 +8287,8 @@ case 534: yyval.joinusing->name = yyvsp[0].str; ; break;} -case 535: -#line 3054 "gram.y" +case 537: +#line 3062 "gram.y" { yyval.joinusing = makeNode(JoinUsing); yyval.joinusing->resno = 0; @@ -8275,8 +8296,8 @@ case 535: yyval.joinusing->name = yyvsp[0].str; ; break;} -case 536: -#line 3061 "gram.y" +case 538: +#line 3069 "gram.y" { yyval.joinusing = makeNode(JoinUsing); yyval.joinusing->resno = yyvsp[0].ival; @@ -8284,16 +8305,16 @@ case 536: yyval.joinusing->name = NULL; ; break;} -case 537: -#line 3069 "gram.y" +case 539: +#line 3077 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 538: -#line 3070 "gram.y" +case 540: +#line 3078 "gram.y" { yyval.node = NULL; /* no qualifiers */ ; break;} -case 539: -#line 3074 "gram.y" +case 541: +#line 3082 "gram.y" { /* normal relations */ yyval.relexp = makeNode(RelExpr); @@ -8301,8 +8322,8 @@ case 539: yyval.relexp->inh = FALSE; ; break;} -case 540: -#line 3081 "gram.y" +case 542: +#line 3089 "gram.y" { /* inheritance query */ yyval.relexp = makeNode(RelExpr); @@ -8310,32 +8331,32 @@ case 540: yyval.relexp->inh = TRUE; ; break;} -case 541: -#line 3089 "gram.y" -{ yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ; - break;} -case 542: -#line 3091 "gram.y" -{ yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ; - break;} case 543: -#line 3093 "gram.y" -{ yyval.list = NIL; ; - break;} -case 544: #line 3097 "gram.y" { yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ; break;} -case 545: +case 544: #line 3099 "gram.y" { yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ; break;} -case 546: +case 545: #line 3101 "gram.y" { yyval.list = NIL; ; break;} +case 546: +#line 3105 "gram.y" +{ yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ; + break;} case 547: -#line 3116 "gram.y" +#line 3107 "gram.y" +{ yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ; + break;} +case 548: +#line 3109 "gram.y" +{ yyval.list = NIL; ; + break;} +case 549: +#line 3124 "gram.y" { yyval.typnam = yyvsp[-1].typnam; yyval.typnam->arrayBounds = yyvsp[0].list; @@ -8358,78 +8379,78 @@ case 547: yyval.typnam->setof = FALSE; ; break;} -case 549: -#line 3139 "gram.y" +case 551: +#line 3147 "gram.y" { yyval.typnam = yyvsp[0].typnam; yyval.typnam->setof = TRUE; ; break;} -case 553: -#line 3151 "gram.y" -{ - yyval.typnam = makeNode(TypeName); - yyval.typnam->name = xlateSqlType(yyvsp[0].str); - yyval.typnam->typmod = -1; - ; - break;} -case 554: -#line 3158 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 555: #line 3159 "gram.y" -{ yyval.str = xlateSqlType("type"); ; - break;} -case 556: -#line 3168 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType(yyvsp[0].str); yyval.typnam->typmod = -1; ; break;} +case 556: +#line 3166 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} case 557: -#line 3174 "gram.y" +#line 3167 "gram.y" +{ yyval.str = xlateSqlType("type"); ; + break;} +case 558: +#line 3176 "gram.y" +{ + yyval.typnam = makeNode(TypeName); + yyval.typnam->name = xlateSqlType(yyvsp[0].str); + yyval.typnam->typmod = -1; + ; + break;} +case 559: +#line 3182 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("float"); ; break;} -case 558: -#line 3179 "gram.y" +case 560: +#line 3187 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("numeric"); yyval.typnam->typmod = -1; ; break;} -case 559: -#line 3185 "gram.y" +case 561: +#line 3193 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("numeric"); yyval.typnam->typmod = yyvsp[0].ival; ; break;} -case 560: -#line 3193 "gram.y" -{ yyval.str = xlateSqlType("float8"); ; - break;} -case 561: -#line 3195 "gram.y" -{ yyval.str = xlateSqlType("float8"); ; - break;} case 562: -#line 3197 "gram.y" -{ yyval.str = xlateSqlType("numeric"); ; +#line 3201 "gram.y" +{ yyval.str = xlateSqlType("float8"); ; break;} case 563: -#line 3199 "gram.y" -{ yyval.str = xlateSqlType("numeric"); ; +#line 3203 "gram.y" +{ yyval.str = xlateSqlType("float8"); ; break;} case 564: -#line 3203 "gram.y" +#line 3205 "gram.y" +{ yyval.str = xlateSqlType("numeric"); ; + break;} +case 565: +#line 3207 "gram.y" +{ yyval.str = xlateSqlType("numeric"); ; + break;} +case 566: +#line 3211 "gram.y" { if (yyvsp[-1].ival < 1) elog(ERROR,"precision for FLOAT must be at least 1"); @@ -8441,14 +8462,14 @@ case 564: elog(ERROR,"precision for FLOAT must be less than 16"); ; break;} -case 565: -#line 3214 "gram.y" +case 567: +#line 3222 "gram.y" { yyval.str = xlateSqlType("float8"); ; break;} -case 566: -#line 3220 "gram.y" +case 568: +#line 3228 "gram.y" { if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION) elog(ERROR,"NUMERIC precision %d must be beween 1 and %d", @@ -8460,8 +8481,8 @@ case 566: yyval.ival = ((yyvsp[-3].ival << 16) | yyvsp[-1].ival) + VARHDRSZ; ; break;} -case 567: -#line 3231 "gram.y" +case 569: +#line 3239 "gram.y" { if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION) elog(ERROR,"NUMERIC precision %d must be beween 1 and %d", @@ -8470,14 +8491,14 @@ case 567: yyval.ival = (yyvsp[-1].ival << 16) + VARHDRSZ; ; break;} -case 568: -#line 3239 "gram.y" +case 570: +#line 3247 "gram.y" { yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ; ; break;} -case 569: -#line 3245 "gram.y" +case 571: +#line 3253 "gram.y" { if (yyvsp[-3].ival < 1 || yyvsp[-3].ival > NUMERIC_MAX_PRECISION) elog(ERROR,"DECIMAL precision %d must be beween 1 and %d", @@ -8489,8 +8510,8 @@ case 569: yyval.ival = ((yyvsp[-3].ival << 16) | yyvsp[-1].ival) + VARHDRSZ; ; break;} -case 570: -#line 3256 "gram.y" +case 572: +#line 3264 "gram.y" { if (yyvsp[-1].ival < 1 || yyvsp[-1].ival > NUMERIC_MAX_PRECISION) elog(ERROR,"DECIMAL precision %d must be beween 1 and %d", @@ -8499,14 +8520,14 @@ case 570: yyval.ival = (yyvsp[-1].ival << 16) + VARHDRSZ; ; break;} -case 571: -#line 3264 "gram.y" +case 573: +#line 3272 "gram.y" { yyval.ival = ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE) + VARHDRSZ; ; break;} -case 572: -#line 3278 "gram.y" +case 574: +#line 3286 "gram.y" { yyval.typnam = makeNode(TypeName); if (strcasecmp(yyvsp[-3].str, "char") == 0) @@ -8534,8 +8555,8 @@ case 572: yyval.typnam->typmod = VARHDRSZ + yyvsp[-1].ival; ; break;} -case 573: -#line 3305 "gram.y" +case 575: +#line 3313 "gram.y" { yyval.typnam = makeNode(TypeName); /* Let's try to make all single-character types into bpchar(1) @@ -8553,8 +8574,8 @@ case 573: } ; break;} -case 574: -#line 3324 "gram.y" +case 576: +#line 3332 "gram.y" { char *type, *c; if ((yyvsp[-1].str == NULL) || (strcasecmp(yyvsp[-1].str, "sql_text") == 0)) { @@ -8575,56 +8596,56 @@ case 574: yyval.str = type; ; break;} -case 575: -#line 3343 "gram.y" -{ yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ; - break;} -case 576: -#line 3344 "gram.y" -{ yyval.str = xlateSqlType("varchar"); ; - break;} case 577: -#line 3345 "gram.y" +#line 3351 "gram.y" { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ; break;} case 578: -#line 3346 "gram.y" -{ yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ; +#line 3352 "gram.y" +{ yyval.str = xlateSqlType("varchar"); ; break;} case 579: -#line 3349 "gram.y" -{ yyval.boolean = TRUE; ; +#line 3353 "gram.y" +{ yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ; break;} case 580: -#line 3350 "gram.y" -{ yyval.boolean = FALSE; ; +#line 3354 "gram.y" +{ yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ; break;} case 581: -#line 3353 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 3357 "gram.y" +{ yyval.boolean = TRUE; ; break;} case 582: -#line 3354 "gram.y" -{ yyval.str = NULL; ; +#line 3358 "gram.y" +{ yyval.boolean = FALSE; ; break;} case 583: -#line 3357 "gram.y" +#line 3361 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 584: -#line 3358 "gram.y" +#line 3362 "gram.y" { yyval.str = NULL; ; break;} case 585: -#line 3362 "gram.y" +#line 3365 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 586: +#line 3366 "gram.y" +{ yyval.str = NULL; ; + break;} +case 587: +#line 3370 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType(yyvsp[0].str); yyval.typnam->typmod = -1; ; break;} -case 586: -#line 3368 "gram.y" +case 588: +#line 3376 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("timestamp"); @@ -8632,104 +8653,104 @@ case 586: yyval.typnam->typmod = -1; ; break;} -case 587: -#line 3375 "gram.y" +case 589: +#line 3383 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("time"); yyval.typnam->typmod = -1; ; break;} -case 588: -#line 3381 "gram.y" +case 590: +#line 3389 "gram.y" { yyval.typnam = makeNode(TypeName); yyval.typnam->name = xlateSqlType("interval"); yyval.typnam->typmod = -1; ; break;} -case 589: -#line 3388 "gram.y" +case 591: +#line 3396 "gram.y" { yyval.str = "year"; ; break;} -case 590: -#line 3389 "gram.y" +case 592: +#line 3397 "gram.y" { yyval.str = "month"; ; break;} -case 591: -#line 3390 "gram.y" +case 593: +#line 3398 "gram.y" { yyval.str = "day"; ; break;} -case 592: -#line 3391 "gram.y" +case 594: +#line 3399 "gram.y" { yyval.str = "hour"; ; break;} -case 593: -#line 3392 "gram.y" +case 595: +#line 3400 "gram.y" { yyval.str = "minute"; ; break;} -case 594: -#line 3393 "gram.y" +case 596: +#line 3401 "gram.y" { yyval.str = "second"; ; break;} -case 595: -#line 3396 "gram.y" +case 597: +#line 3404 "gram.y" { yyval.boolean = TRUE; ; break;} -case 596: -#line 3397 "gram.y" +case 598: +#line 3405 "gram.y" { yyval.boolean = FALSE; ; break;} -case 597: -#line 3400 "gram.y" +case 599: +#line 3408 "gram.y" { yyval.list = lcons(yyvsp[0].str, NIL); ; break;} -case 598: -#line 3401 "gram.y" -{ yyval.list = NIL; ; - break;} -case 599: -#line 3402 "gram.y" -{ yyval.list = NIL; ; - break;} case 600: -#line 3403 "gram.y" +#line 3409 "gram.y" { yyval.list = NIL; ; break;} case 601: -#line 3404 "gram.y" +#line 3410 "gram.y" { yyval.list = NIL; ; break;} case 602: -#line 3405 "gram.y" +#line 3411 "gram.y" { yyval.list = NIL; ; break;} case 603: -#line 3406 "gram.y" +#line 3412 "gram.y" { yyval.list = NIL; ; break;} case 604: -#line 3407 "gram.y" +#line 3413 "gram.y" { yyval.list = NIL; ; break;} case 605: -#line 3408 "gram.y" +#line 3414 "gram.y" { yyval.list = NIL; ; break;} case 606: -#line 3419 "gram.y" -{ yyval.node = yyvsp[0].node; ; +#line 3415 "gram.y" +{ yyval.list = NIL; ; break;} case 607: -#line 3421 "gram.y" +#line 3416 "gram.y" +{ yyval.list = NIL; ; + break;} +case 608: +#line 3427 "gram.y" +{ yyval.node = yyvsp[0].node; ; + break;} +case 609: +#line 3429 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_Null; yyval.node = (Node *)n; ; break;} -case 608: -#line 3438 "gram.y" +case 610: +#line 3446 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = yyvsp[-5].list; @@ -8740,8 +8761,8 @@ case 608: yyval.node = (Node *)n; ; break;} -case 609: -#line 3448 "gram.y" +case 611: +#line 3456 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = yyvsp[-6].list; @@ -8752,8 +8773,8 @@ case 609: yyval.node = (Node *)n; ; break;} -case 610: -#line 3458 "gram.y" +case 612: +#line 3466 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = yyvsp[-6].list; @@ -8767,8 +8788,8 @@ case 610: yyval.node = (Node *)n; ; break;} -case 611: -#line 3471 "gram.y" +case 613: +#line 3479 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = yyvsp[-5].list; @@ -8782,87 +8803,87 @@ case 611: yyval.node = (Node *)n; ; break;} -case 612: -#line 3484 "gram.y" +case 614: +#line 3492 "gram.y" { yyval.node = makeRowExpr(yyvsp[-3].str, yyvsp[-5].list, yyvsp[-1].list); ; break;} -case 613: -#line 3490 "gram.y" -{ - yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); - ; - break;} -case 614: -#line 3496 "gram.y" -{ - yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); - ; - break;} case 615: -#line 3500 "gram.y" +#line 3498 "gram.y" +{ + yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); + ; + break;} +case 616: +#line 3504 "gram.y" +{ + yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); + ; + break;} +case 617: +#line 3508 "gram.y" { yyval.list = lcons(yyvsp[0].node, NIL); ; break;} -case 616: -#line 3505 "gram.y" +case 618: +#line 3513 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 617: -#line 3506 "gram.y" +case 619: +#line 3514 "gram.y" { yyval.str = "<"; ; break;} -case 618: -#line 3507 "gram.y" +case 620: +#line 3515 "gram.y" { yyval.str = "="; ; break;} -case 619: -#line 3508 "gram.y" +case 621: +#line 3516 "gram.y" { yyval.str = ">"; ; break;} -case 620: -#line 3509 "gram.y" +case 622: +#line 3517 "gram.y" { yyval.str = "+"; ; break;} -case 621: -#line 3510 "gram.y" +case 623: +#line 3518 "gram.y" { yyval.str = "-"; ; break;} -case 622: -#line 3511 "gram.y" +case 624: +#line 3519 "gram.y" { yyval.str = "*"; ; break;} -case 623: -#line 3512 "gram.y" +case 625: +#line 3520 "gram.y" { yyval.str = "/"; ; break;} -case 624: -#line 3515 "gram.y" +case 626: +#line 3523 "gram.y" { yyval.ival = ANY_SUBLINK; ; break;} -case 625: -#line 3516 "gram.y" +case 627: +#line 3524 "gram.y" { yyval.ival = ALL_SUBLINK; ; break;} -case 626: -#line 3528 "gram.y" +case 628: +#line 3536 "gram.y" { yyvsp[-1].attr->indirection = yyvsp[0].list; yyval.node = (Node *)yyvsp[-1].attr; ; break;} -case 627: -#line 3533 "gram.y" -{ yyval.node = yyvsp[0].node; ; - break;} -case 628: -#line 3535 "gram.y" -{ yyval.node = yyvsp[0].node; ; - break;} case 629: -#line 3537 "gram.y" +#line 3541 "gram.y" +{ yyval.node = yyvsp[0].node; ; + break;} +case 630: +#line 3543 "gram.y" +{ yyval.node = yyvsp[0].node; ; + break;} +case 631: +#line 3545 "gram.y" { /* could be a column name or a relation_name */ Ident *n = makeNode(Ident); @@ -8871,52 +8892,52 @@ case 629: yyval.node = (Node *)n; ; break;} -case 630: -#line 3545 "gram.y" +case 632: +#line 3553 "gram.y" { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ; break;} -case 631: -#line 3547 "gram.y" +case 633: +#line 3555 "gram.y" { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 632: -#line 3549 "gram.y" +case 634: +#line 3557 "gram.y" { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 633: -#line 3551 "gram.y" +case 635: +#line 3559 "gram.y" { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 634: -#line 3553 "gram.y" +case 636: +#line 3561 "gram.y" { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 635: -#line 3555 "gram.y" +case 637: +#line 3563 "gram.y" { yyval.node = makeA_Expr(OP, "<", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 636: -#line 3557 "gram.y" +case 638: +#line 3565 "gram.y" { yyval.node = makeA_Expr(OP, ">", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 637: -#line 3559 "gram.y" +case 639: +#line 3567 "gram.y" { yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 638: -#line 3561 "gram.y" +case 640: +#line 3569 "gram.y" { yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ; break;} -case 639: -#line 3563 "gram.y" +case 641: +#line 3571 "gram.y" { yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ; break;} -case 640: -#line 3565 "gram.y" +case 642: +#line 3573 "gram.y" { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ; break;} -case 641: -#line 3567 "gram.y" +case 643: +#line 3575 "gram.y" { yyval.node = (Node *)yyvsp[-2].node; /* AexprConst can be either A_Const or ParamNo */ @@ -8933,8 +8954,8 @@ case 641: } ; break;} -case 642: -#line 3583 "gram.y" +case 644: +#line 3591 "gram.y" { yyval.node = (Node *)yyvsp[-3].node; /* AexprConst can be either A_Const or ParamNo */ @@ -8951,32 +8972,32 @@ case 642: } ; break;} -case 643: -#line 3599 "gram.y" +case 645: +#line 3607 "gram.y" { yyval.node = yyvsp[-1].node; ; break;} -case 644: -#line 3601 "gram.y" +case 646: +#line 3609 "gram.y" { yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ; break;} -case 645: -#line 3603 "gram.y" +case 647: +#line 3611 "gram.y" { yyval.node = makeIndexable("~~", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 646: -#line 3605 "gram.y" +case 648: +#line 3613 "gram.y" { yyval.node = makeA_Expr(OP, "!~~", yyvsp[-3].node, yyvsp[0].node); ; break;} -case 647: -#line 3607 "gram.y" +case 649: +#line 3615 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ; break;} -case 648: -#line 3609 "gram.y" +case 650: +#line 3617 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ; break;} -case 649: -#line 3611 "gram.y" +case 651: +#line 3619 "gram.y" { /* cheap hack for aggregate (eg. count) */ FuncCall *n = makeNode(FuncCall); @@ -8989,8 +9010,8 @@ case 649: yyval.node = (Node *)n; ; break;} -case 650: -#line 3623 "gram.y" +case 652: +#line 3631 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-2].str; @@ -8998,8 +9019,8 @@ case 650: yyval.node = (Node *)n; ; break;} -case 651: -#line 3630 "gram.y" +case 653: +#line 3638 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-3].str; @@ -9007,8 +9028,8 @@ case 651: yyval.node = (Node *)n; ; break;} -case 652: -#line 3637 "gram.y" +case 654: +#line 3645 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9024,8 +9045,8 @@ case 652: yyval.node = (Node *)n; ; break;} -case 653: -#line 3652 "gram.y" +case 655: +#line 3660 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9041,8 +9062,8 @@ case 653: yyval.node = (Node *)n; ; break;} -case 654: -#line 3667 "gram.y" +case 656: +#line 3675 "gram.y" { FuncCall *n = makeNode(FuncCall); A_Const *s = makeNode(A_Const); @@ -9065,8 +9086,8 @@ case 654: yyval.node = (Node *)n; ; break;} -case 655: -#line 3689 "gram.y" +case 657: +#line 3697 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9082,8 +9103,8 @@ case 655: yyval.node = (Node *)n; ; break;} -case 656: -#line 3704 "gram.y" +case 658: +#line 3712 "gram.y" { FuncCall *n = makeNode(FuncCall); A_Const *s = makeNode(A_Const); @@ -9106,26 +9127,26 @@ case 656: yyval.node = (Node *)n; ; break;} -case 657: -#line 3726 "gram.y" -{ - FuncCall *n = makeNode(FuncCall); - n->funcname = "getpgusername"; - n->args = NIL; - yyval.node = (Node *)n; - ; - break;} -case 658: -#line 3733 "gram.y" -{ - FuncCall *n = makeNode(FuncCall); - n->funcname = "getpgusername"; - n->args = NIL; - yyval.node = (Node *)n; - ; - break;} case 659: -#line 3740 "gram.y" +#line 3734 "gram.y" +{ + FuncCall *n = makeNode(FuncCall); + n->funcname = "getpgusername"; + n->args = NIL; + yyval.node = (Node *)n; + ; + break;} +case 660: +#line 3741 "gram.y" +{ + FuncCall *n = makeNode(FuncCall); + n->funcname = "getpgusername"; + n->args = NIL; + yyval.node = (Node *)n; + ; + break;} +case 661: +#line 3748 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = NIL; @@ -9136,8 +9157,8 @@ case 659: yyval.node = (Node *)n; ; break;} -case 660: -#line 3750 "gram.y" +case 662: +#line 3758 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "date_part"; @@ -9145,8 +9166,8 @@ case 660: yyval.node = (Node *)n; ; break;} -case 661: -#line 3757 "gram.y" +case 663: +#line 3765 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "strpos"; @@ -9154,8 +9175,8 @@ case 661: yyval.node = (Node *)n; ; break;} -case 662: -#line 3764 "gram.y" +case 664: +#line 3772 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "substr"; @@ -9163,8 +9184,8 @@ case 662: yyval.node = (Node *)n; ; break;} -case 663: -#line 3772 "gram.y" +case 665: +#line 3780 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -9172,8 +9193,8 @@ case 663: yyval.node = (Node *)n; ; break;} -case 664: -#line 3779 "gram.y" +case 666: +#line 3787 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "ltrim"; @@ -9181,8 +9202,8 @@ case 664: yyval.node = (Node *)n; ; break;} -case 665: -#line 3786 "gram.y" +case 667: +#line 3794 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "rtrim"; @@ -9190,8 +9211,8 @@ case 665: yyval.node = (Node *)n; ; break;} -case 666: -#line 3793 "gram.y" +case 668: +#line 3801 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -9199,52 +9220,28 @@ case 666: yyval.node = (Node *)n; ; break;} -case 667: -#line 3800 "gram.y" +case 669: +#line 3808 "gram.y" { yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-1].node, NULL); ; break;} -case 668: -#line 3802 "gram.y" +case 670: +#line 3810 "gram.y" { yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ; break;} -case 669: -#line 3804 "gram.y" +case 671: +#line 3812 "gram.y" { yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-1].node, NULL); ; break;} -case 670: -#line 3806 "gram.y" +case 672: +#line 3814 "gram.y" { yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-3].node, NULL); ; break;} -case 671: -#line 3813 "gram.y" -{ - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = "t"; - n->typename = makeNode(TypeName); - n->typename->name = xlateSqlType("bool"); - n->typename->typmod = -1; - yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node,(Node *)n); - ; - break;} -case 672: -#line 3823 "gram.y" -{ - A_Const *n = makeNode(A_Const); - n->val.type = T_String; - n->val.val.str = "t"; - n->typename = makeNode(TypeName); - n->typename->name = xlateSqlType("bool"); - n->typename->typmod = -1; - yyval.node = makeA_Expr(OP, "=", yyvsp[-3].node,(Node *)n); - ; - break;} case 673: -#line 3833 "gram.y" +#line 3821 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; - n->val.val.str = "f"; + n->val.val.str = "t"; n->typename = makeNode(TypeName); n->typename->name = xlateSqlType("bool"); n->typename->typmod = -1; @@ -9252,7 +9249,31 @@ case 673: ; break;} case 674: -#line 3843 "gram.y" +#line 3831 "gram.y" +{ + A_Const *n = makeNode(A_Const); + n->val.type = T_String; + n->val.val.str = "t"; + n->typename = makeNode(TypeName); + n->typename->name = xlateSqlType("bool"); + n->typename->typmod = -1; + yyval.node = makeA_Expr(OP, "=", yyvsp[-3].node,(Node *)n); + ; + break;} +case 675: +#line 3841 "gram.y" +{ + A_Const *n = makeNode(A_Const); + n->val.type = T_String; + n->val.val.str = "f"; + n->typename = makeNode(TypeName); + n->typename->name = xlateSqlType("bool"); + n->typename->typmod = -1; + yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node,(Node *)n); + ; + break;} +case 676: +#line 3851 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; @@ -9263,28 +9284,28 @@ case 674: yyval.node = makeA_Expr(OP, "=", yyvsp[-3].node,(Node *)n); ; break;} -case 675: -#line 3853 "gram.y" +case 677: +#line 3861 "gram.y" { yyval.node = makeA_Expr(AND, NULL, makeA_Expr(OP, ">=", yyvsp[-4].node, yyvsp[-2].node), makeA_Expr(OP, "<=", yyvsp[-4].node, yyvsp[0].node)); ; break;} -case 676: -#line 3859 "gram.y" +case 678: +#line 3867 "gram.y" { yyval.node = makeA_Expr(OR, NULL, makeA_Expr(OP, "<", yyvsp[-5].node, yyvsp[-2].node), makeA_Expr(OP, ">", yyvsp[-5].node, yyvsp[0].node)); ; break;} -case 677: -#line 3864 "gram.y" +case 679: +#line 3872 "gram.y" { saved_In_Expr = lcons(yyvsp[-1].node,saved_In_Expr); ; break;} -case 678: -#line 3865 "gram.y" +case 680: +#line 3873 "gram.y" { saved_In_Expr = lnext(saved_In_Expr); if (nodeTag(yyvsp[-1].node) == T_SubLink) @@ -9299,12 +9320,12 @@ case 678: else yyval.node = yyvsp[-1].node; ; break;} -case 679: -#line 3878 "gram.y" +case 681: +#line 3886 "gram.y" { saved_In_Expr = lcons(yyvsp[-2].node,saved_In_Expr); ; break;} -case 680: -#line 3879 "gram.y" +case 682: +#line 3887 "gram.y" { saved_In_Expr = lnext(saved_In_Expr); if (nodeTag(yyvsp[-1].node) == T_SubLink) @@ -9319,8 +9340,8 @@ case 680: else yyval.node = yyvsp[-1].node; ; break;} -case 681: -#line 3893 "gram.y" +case 683: +#line 3901 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); @@ -9331,8 +9352,8 @@ case 681: yyval.node = (Node *)n; ; break;} -case 682: -#line 3903 "gram.y" +case 684: +#line 3911 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); @@ -9343,36 +9364,12 @@ case 682: yyval.node = (Node *)n; ; break;} -case 683: -#line 3913 "gram.y" -{ - SubLink *n = makeNode(SubLink); - n->lefthand = lcons(yyvsp[-4].node, NULL); - n->oper = lcons("-",NIL); - n->useor = false; - n->subLinkType = EXPR_SUBLINK; - n->subselect = yyvsp[-1].node; - yyval.node = (Node *)n; - ; - break;} -case 684: -#line 3923 "gram.y" -{ - SubLink *n = makeNode(SubLink); - n->lefthand = lcons(yyvsp[-4].node, NULL); - n->oper = lcons("/",NIL); - n->useor = false; - n->subLinkType = EXPR_SUBLINK; - n->subselect = yyvsp[-1].node; - yyval.node = (Node *)n; - ; - break;} case 685: -#line 3933 "gram.y" +#line 3921 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); - n->oper = lcons("*",NIL); + n->oper = lcons("-",NIL); n->useor = false; n->subLinkType = EXPR_SUBLINK; n->subselect = yyvsp[-1].node; @@ -9380,11 +9377,11 @@ case 685: ; break;} case 686: -#line 3943 "gram.y" +#line 3931 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); - n->oper = lcons("<",NIL); + n->oper = lcons("/",NIL); n->useor = false; n->subLinkType = EXPR_SUBLINK; n->subselect = yyvsp[-1].node; @@ -9392,11 +9389,11 @@ case 686: ; break;} case 687: -#line 3953 "gram.y" +#line 3941 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); - n->oper = lcons(">",NIL); + n->oper = lcons("*",NIL); n->useor = false; n->subLinkType = EXPR_SUBLINK; n->subselect = yyvsp[-1].node; @@ -9404,7 +9401,31 @@ case 687: ; break;} case 688: -#line 3963 "gram.y" +#line 3951 "gram.y" +{ + SubLink *n = makeNode(SubLink); + n->lefthand = lcons(yyvsp[-4].node, NULL); + n->oper = lcons("<",NIL); + n->useor = false; + n->subLinkType = EXPR_SUBLINK; + n->subselect = yyvsp[-1].node; + yyval.node = (Node *)n; + ; + break;} +case 689: +#line 3961 "gram.y" +{ + SubLink *n = makeNode(SubLink); + n->lefthand = lcons(yyvsp[-4].node, NULL); + n->oper = lcons(">",NIL); + n->useor = false; + n->subLinkType = EXPR_SUBLINK; + n->subselect = yyvsp[-1].node; + yyval.node = (Node *)n; + ; + break;} +case 690: +#line 3971 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-4].node, NULL); @@ -9415,8 +9436,8 @@ case 688: yyval.node = (Node *)n; ; break;} -case 689: -#line 3973 "gram.y" +case 691: +#line 3981 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9427,32 +9448,32 @@ case 689: yyval.node = (Node *)n; ; break;} -case 690: -#line 3983 "gram.y" -{ - SubLink *n = makeNode(SubLink); - n->lefthand = lcons(yyvsp[-5].node,NIL); - n->oper = lcons("+",NIL); - n->useor = false; - n->subLinkType = ANY_SUBLINK; - n->subselect = yyvsp[-1].node; - yyval.node = (Node *)n; - ; - break;} -case 691: -#line 3993 "gram.y" -{ - SubLink *n = makeNode(SubLink); - n->lefthand = lcons(yyvsp[-5].node,NIL); - n->oper = lcons("-",NIL); - n->useor = false; - n->subLinkType = ANY_SUBLINK; - n->subselect = yyvsp[-1].node; - yyval.node = (Node *)n; - ; - break;} case 692: -#line 4003 "gram.y" +#line 3991 "gram.y" +{ + SubLink *n = makeNode(SubLink); + n->lefthand = lcons(yyvsp[-5].node,NIL); + n->oper = lcons("+",NIL); + n->useor = false; + n->subLinkType = ANY_SUBLINK; + n->subselect = yyvsp[-1].node; + yyval.node = (Node *)n; + ; + break;} +case 693: +#line 4001 "gram.y" +{ + SubLink *n = makeNode(SubLink); + n->lefthand = lcons(yyvsp[-5].node,NIL); + n->oper = lcons("-",NIL); + n->useor = false; + n->subLinkType = ANY_SUBLINK; + n->subselect = yyvsp[-1].node; + yyval.node = (Node *)n; + ; + break;} +case 694: +#line 4011 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9463,8 +9484,8 @@ case 692: yyval.node = (Node *)n; ; break;} -case 693: -#line 4013 "gram.y" +case 695: +#line 4021 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9475,8 +9496,8 @@ case 693: yyval.node = (Node *)n; ; break;} -case 694: -#line 4023 "gram.y" +case 696: +#line 4031 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9487,8 +9508,8 @@ case 694: yyval.node = (Node *)n; ; break;} -case 695: -#line 4033 "gram.y" +case 697: +#line 4041 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9499,8 +9520,8 @@ case 695: yyval.node = (Node *)n; ; break;} -case 696: -#line 4043 "gram.y" +case 698: +#line 4051 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node,NIL); @@ -9511,8 +9532,8 @@ case 696: yyval.node = (Node *)n; ; break;} -case 697: -#line 4053 "gram.y" +case 699: +#line 4061 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9523,8 +9544,8 @@ case 697: yyval.node = (Node *)n; ; break;} -case 698: -#line 4063 "gram.y" +case 700: +#line 4071 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9535,8 +9556,8 @@ case 698: yyval.node = (Node *)n; ; break;} -case 699: -#line 4073 "gram.y" +case 701: +#line 4081 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9547,8 +9568,8 @@ case 699: yyval.node = (Node *)n; ; break;} -case 700: -#line 4083 "gram.y" +case 702: +#line 4091 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9559,8 +9580,8 @@ case 700: yyval.node = (Node *)n; ; break;} -case 701: -#line 4093 "gram.y" +case 703: +#line 4101 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9571,8 +9592,8 @@ case 701: yyval.node = (Node *)n; ; break;} -case 702: -#line 4103 "gram.y" +case 704: +#line 4111 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9583,8 +9604,8 @@ case 702: yyval.node = (Node *)n; ; break;} -case 703: -#line 4113 "gram.y" +case 705: +#line 4121 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9595,8 +9616,8 @@ case 703: yyval.node = (Node *)n; ; break;} -case 704: -#line 4123 "gram.y" +case 706: +#line 4131 "gram.y" { SubLink *n = makeNode(SubLink); n->lefthand = lcons(yyvsp[-5].node, NULL); @@ -9607,35 +9628,35 @@ case 704: yyval.node = (Node *)n; ; break;} -case 705: -#line 4133 "gram.y" +case 707: +#line 4141 "gram.y" { yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, yyvsp[0].node); ; break;} -case 706: -#line 4135 "gram.y" +case 708: +#line 4143 "gram.y" { yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, yyvsp[0].node); ; break;} -case 707: -#line 4137 "gram.y" +case 709: +#line 4145 "gram.y" { yyval.node = makeA_Expr(NOT, NULL, NULL, yyvsp[0].node); ; break;} -case 708: -#line 4139 "gram.y" +case 710: +#line 4147 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 709: -#line 4148 "gram.y" +case 711: +#line 4156 "gram.y" { yyvsp[-1].attr->indirection = yyvsp[0].list; yyval.node = (Node *)yyvsp[-1].attr; ; break;} -case 710: -#line 4153 "gram.y" +case 712: +#line 4161 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 711: -#line 4155 "gram.y" +case 713: +#line 4163 "gram.y" { /* could be a column name or a relation_name */ Ident *n = makeNode(Ident); @@ -9644,40 +9665,40 @@ case 711: yyval.node = (Node *)n; ; break;} -case 712: -#line 4163 "gram.y" +case 714: +#line 4171 "gram.y" { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ; break;} -case 713: -#line 4165 "gram.y" +case 715: +#line 4173 "gram.y" { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 714: -#line 4167 "gram.y" +case 716: +#line 4175 "gram.y" { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 715: -#line 4169 "gram.y" +case 717: +#line 4177 "gram.y" { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 716: -#line 4171 "gram.y" +case 718: +#line 4179 "gram.y" { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 717: -#line 4173 "gram.y" +case 719: +#line 4181 "gram.y" { yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ; break;} -case 718: -#line 4175 "gram.y" +case 720: +#line 4183 "gram.y" { yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ; break;} -case 719: -#line 4177 "gram.y" +case 721: +#line 4185 "gram.y" { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ; break;} -case 720: -#line 4179 "gram.y" +case 722: +#line 4187 "gram.y" { yyval.node = (Node *)yyvsp[-2].node; /* AexprConst can be either A_Const or ParamNo */ @@ -9694,8 +9715,8 @@ case 720: } ; break;} -case 721: -#line 4195 "gram.y" +case 723: +#line 4203 "gram.y" { yyval.node = (Node *)yyvsp[-3].node; /* AexprConst can be either A_Const or ParamNo */ @@ -9712,24 +9733,24 @@ case 721: } ; break;} -case 722: -#line 4211 "gram.y" +case 724: +#line 4219 "gram.y" { yyval.node = yyvsp[-1].node; ; break;} -case 723: -#line 4213 "gram.y" +case 725: +#line 4221 "gram.y" { yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ; break;} -case 724: -#line 4215 "gram.y" +case 726: +#line 4223 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ; break;} -case 725: -#line 4217 "gram.y" +case 727: +#line 4225 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ; break;} -case 726: -#line 4219 "gram.y" +case 728: +#line 4227 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-2].str; @@ -9737,8 +9758,8 @@ case 726: yyval.node = (Node *)n; ; break;} -case 727: -#line 4226 "gram.y" +case 729: +#line 4234 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-3].str; @@ -9746,8 +9767,8 @@ case 727: yyval.node = (Node *)n; ; break;} -case 728: -#line 4233 "gram.y" +case 730: +#line 4241 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9763,8 +9784,8 @@ case 728: yyval.node = (Node *)n; ; break;} -case 729: -#line 4248 "gram.y" +case 731: +#line 4256 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9780,8 +9801,8 @@ case 729: yyval.node = (Node *)n; ; break;} -case 730: -#line 4263 "gram.y" +case 732: +#line 4271 "gram.y" { FuncCall *n = makeNode(FuncCall); A_Const *s = makeNode(A_Const); @@ -9804,8 +9825,8 @@ case 730: yyval.node = (Node *)n; ; break;} -case 731: -#line 4285 "gram.y" +case 733: +#line 4293 "gram.y" { A_Const *n = makeNode(A_Const); TypeName *t = makeNode(TypeName); @@ -9821,8 +9842,8 @@ case 731: yyval.node = (Node *)n; ; break;} -case 732: -#line 4300 "gram.y" +case 734: +#line 4308 "gram.y" { FuncCall *n = makeNode(FuncCall); A_Const *s = makeNode(A_Const); @@ -9845,26 +9866,26 @@ case 732: yyval.node = (Node *)n; ; break;} -case 733: -#line 4322 "gram.y" -{ - FuncCall *n = makeNode(FuncCall); - n->funcname = "getpgusername"; - n->args = NIL; - yyval.node = (Node *)n; - ; - break;} -case 734: -#line 4329 "gram.y" -{ - FuncCall *n = makeNode(FuncCall); - n->funcname = "getpgusername"; - n->args = NIL; - yyval.node = (Node *)n; - ; - break;} case 735: -#line 4336 "gram.y" +#line 4330 "gram.y" +{ + FuncCall *n = makeNode(FuncCall); + n->funcname = "getpgusername"; + n->args = NIL; + yyval.node = (Node *)n; + ; + break;} +case 736: +#line 4337 "gram.y" +{ + FuncCall *n = makeNode(FuncCall); + n->funcname = "getpgusername"; + n->args = NIL; + yyval.node = (Node *)n; + ; + break;} +case 737: +#line 4344 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "strpos"; @@ -9872,8 +9893,8 @@ case 735: yyval.node = (Node *)n; ; break;} -case 736: -#line 4343 "gram.y" +case 738: +#line 4351 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "substr"; @@ -9881,8 +9902,8 @@ case 736: yyval.node = (Node *)n; ; break;} -case 737: -#line 4351 "gram.y" +case 739: +#line 4359 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -9890,8 +9911,8 @@ case 737: yyval.node = (Node *)n; ; break;} -case 738: -#line 4358 "gram.y" +case 740: +#line 4366 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "ltrim"; @@ -9899,8 +9920,8 @@ case 738: yyval.node = (Node *)n; ; break;} -case 739: -#line 4365 "gram.y" +case 741: +#line 4373 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "rtrim"; @@ -9908,8 +9929,8 @@ case 739: yyval.node = (Node *)n; ; break;} -case 740: -#line 4372 "gram.y" +case 742: +#line 4380 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -9917,8 +9938,8 @@ case 740: yyval.node = (Node *)n; ; break;} -case 741: -#line 4381 "gram.y" +case 743: +#line 4389 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->lidx = NULL; @@ -9926,8 +9947,8 @@ case 741: yyval.list = lcons(ai, yyvsp[0].list); ; break;} -case 742: -#line 4388 "gram.y" +case 744: +#line 4396 "gram.y" { A_Indices *ai = makeNode(A_Indices); ai->lidx = yyvsp[-4].node; @@ -9935,24 +9956,24 @@ case 742: yyval.list = lcons(ai, yyvsp[0].list); ; break;} -case 743: -#line 4395 "gram.y" +case 745: +#line 4403 "gram.y" { yyval.list = NIL; ; break;} -case 744: -#line 4399 "gram.y" +case 746: +#line 4407 "gram.y" { yyval.list = lcons(yyvsp[0].node, NIL); ; break;} -case 745: -#line 4401 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; - break;} -case 746: -#line 4403 "gram.y" -{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; - break;} case 747: -#line 4407 "gram.y" +#line 4409 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; + break;} +case 748: +#line 4411 "gram.y" +{ yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ; + break;} +case 749: +#line 4415 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; @@ -9960,67 +9981,67 @@ case 747: yyval.list = lappend(lcons((Node *)n,NIL), yyvsp[0].node); ; break;} -case 748: -#line 4414 "gram.y" -{ yyval.list = NIL; ; - break;} -case 749: -#line 4417 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 750: -#line 4418 "gram.y" -{ yyval.str = "tz_hour"; ; +#line 4422 "gram.y" +{ yyval.list = NIL; ; break;} case 751: -#line 4419 "gram.y" -{ yyval.str = "tz_minute"; ; +#line 4425 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 752: -#line 4423 "gram.y" -{ yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ; +#line 4426 "gram.y" +{ yyval.str = "tz_hour"; ; break;} case 753: -#line 4425 "gram.y" -{ yyval.list = NIL; ; +#line 4427 "gram.y" +{ yyval.str = "tz_minute"; ; break;} case 754: -#line 4429 "gram.y" +#line 4431 "gram.y" +{ yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ; + break;} +case 755: +#line 4433 "gram.y" +{ yyval.list = NIL; ; + break;} +case 756: +#line 4437 "gram.y" { yyvsp[-1].attr->indirection = yyvsp[0].list; yyval.node = (Node *)yyvsp[-1].attr; ; break;} -case 755: -#line 4434 "gram.y" +case 757: +#line 4442 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 756: -#line 4436 "gram.y" +case 758: +#line 4444 "gram.y" { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ; break;} -case 757: -#line 4438 "gram.y" +case 759: +#line 4446 "gram.y" { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 758: -#line 4440 "gram.y" +case 760: +#line 4448 "gram.y" { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 759: -#line 4442 "gram.y" +case 761: +#line 4450 "gram.y" { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 760: -#line 4444 "gram.y" +case 762: +#line 4452 "gram.y" { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ; break;} -case 761: -#line 4446 "gram.y" +case 763: +#line 4454 "gram.y" { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ; break;} -case 762: -#line 4448 "gram.y" +case 764: +#line 4456 "gram.y" { yyval.node = (Node *)yyvsp[-2].node; /* AexprConst can be either A_Const or ParamNo */ @@ -10037,8 +10058,8 @@ case 762: } ; break;} -case 763: -#line 4464 "gram.y" +case 765: +#line 4472 "gram.y" { yyval.node = (Node *)yyvsp[-3].node; /* AexprConst can be either A_Const or ParamNo */ @@ -10055,24 +10076,24 @@ case 763: } ; break;} -case 764: -#line 4480 "gram.y" +case 766: +#line 4488 "gram.y" { yyval.node = yyvsp[-1].node; ; break;} -case 765: -#line 4482 "gram.y" +case 767: +#line 4490 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[-1].str, yyvsp[-2].node, yyvsp[0].node); ; break;} -case 766: -#line 4484 "gram.y" +case 768: +#line 4492 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ; break;} -case 767: -#line 4486 "gram.y" +case 769: +#line 4494 "gram.y" { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ; break;} -case 768: -#line 4488 "gram.y" +case 770: +#line 4496 "gram.y" { /* could be a column name or a relation_name */ Ident *n = makeNode(Ident); @@ -10081,8 +10102,8 @@ case 768: yyval.node = (Node *)n; ; break;} -case 769: -#line 4496 "gram.y" +case 771: +#line 4504 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-2].str; @@ -10090,8 +10111,8 @@ case 769: yyval.node = (Node *)n; ; break;} -case 770: -#line 4503 "gram.y" +case 772: +#line 4511 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = yyvsp[-3].str; @@ -10099,8 +10120,8 @@ case 770: yyval.node = (Node *)n; ; break;} -case 771: -#line 4510 "gram.y" +case 773: +#line 4518 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "strpos"; @@ -10108,8 +10129,8 @@ case 771: yyval.node = (Node *)n; ; break;} -case 772: -#line 4517 "gram.y" +case 774: +#line 4525 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "substr"; @@ -10117,8 +10138,8 @@ case 772: yyval.node = (Node *)n; ; break;} -case 773: -#line 4525 "gram.y" +case 775: +#line 4533 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -10126,8 +10147,8 @@ case 773: yyval.node = (Node *)n; ; break;} -case 774: -#line 4532 "gram.y" +case 776: +#line 4540 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "ltrim"; @@ -10135,8 +10156,8 @@ case 774: yyval.node = (Node *)n; ; break;} -case 775: -#line 4539 "gram.y" +case 777: +#line 4547 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "rtrim"; @@ -10144,8 +10165,8 @@ case 775: yyval.node = (Node *)n; ; break;} -case 776: -#line 4546 "gram.y" +case 778: +#line 4554 "gram.y" { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; @@ -10153,22 +10174,22 @@ case 776: yyval.node = (Node *)n; ; break;} -case 777: -#line 4555 "gram.y" +case 779: +#line 4563 "gram.y" { yyval.list = nconc(nconc(yyvsp[-2].list,yyvsp[-1].list),yyvsp[0].list); ; break;} -case 778: -#line 4559 "gram.y" +case 780: +#line 4567 "gram.y" { yyval.list = NIL; ; break;} -case 779: -#line 4563 "gram.y" +case 781: +#line 4571 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 780: -#line 4565 "gram.y" +case 782: +#line 4573 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_Integer; @@ -10176,72 +10197,72 @@ case 780: yyval.list = lcons((Node *)n,NIL); ; break;} -case 781: -#line 4574 "gram.y" +case 783: +#line 4582 "gram.y" { yyval.list = yyvsp[0].list; ; break;} -case 782: -#line 4576 "gram.y" +case 784: +#line 4584 "gram.y" { yyval.list = NIL; ; break;} -case 783: -#line 4580 "gram.y" +case 785: +#line 4588 "gram.y" { yyval.list = lappend(yyvsp[0].list, yyvsp[-2].node); ; break;} -case 784: -#line 4582 "gram.y" -{ yyval.list = yyvsp[0].list; ; - break;} -case 785: -#line 4584 "gram.y" -{ yyval.list = yyvsp[0].list; ; - break;} case 786: -#line 4588 "gram.y" +#line 4590 "gram.y" +{ yyval.list = yyvsp[0].list; ; + break;} +case 787: +#line 4592 "gram.y" +{ yyval.list = yyvsp[0].list; ; + break;} +case 788: +#line 4596 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = yyvsp[0].node; yyval.node = (Node *)n; ; break;} -case 787: -#line 4594 "gram.y" +case 789: +#line 4602 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 788: -#line 4598 "gram.y" +case 790: +#line 4606 "gram.y" { yyval.node = makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node); ; break;} -case 789: -#line 4600 "gram.y" +case 791: +#line 4608 "gram.y" { yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node)); ; break;} -case 790: -#line 4606 "gram.y" +case 792: +#line 4614 "gram.y" { SubLink *n = makeNode(SubLink); n->subselect = yyvsp[0].node; yyval.node = (Node *)n; ; break;} -case 791: -#line 4612 "gram.y" +case 793: +#line 4620 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 792: -#line 4616 "gram.y" +case 794: +#line 4624 "gram.y" { yyval.node = makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node); ; break;} -case 793: -#line 4618 "gram.y" +case 795: +#line 4626 "gram.y" { yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node)); ; break;} -case 794: -#line 4639 "gram.y" +case 796: +#line 4647 "gram.y" { CaseExpr *c = makeNode(CaseExpr); c->arg = yyvsp[-3].node; @@ -10250,8 +10271,8 @@ case 794: yyval.node = (Node *)c; ; break;} -case 795: -#line 4647 "gram.y" +case 797: +#line 4655 "gram.y" { CaseExpr *c = makeNode(CaseExpr); CaseWhen *w = makeNode(CaseWhen); @@ -10263,8 +10284,8 @@ case 795: elog(NOTICE,"NULLIF() not yet fully implemented"); ; break;} -case 796: -#line 4658 "gram.y" +case 798: +#line 4666 "gram.y" { CaseExpr *c = makeNode(CaseExpr); CaseWhen *w; @@ -10281,16 +10302,16 @@ case 796: elog(NOTICE,"COALESCE() not yet fully implemented"); ; break;} -case 797: -#line 4676 "gram.y" +case 799: +#line 4684 "gram.y" { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ; break;} -case 798: -#line 4678 "gram.y" +case 800: +#line 4686 "gram.y" { yyval.list = lcons(yyvsp[0].node, NIL); ; break;} -case 799: -#line 4682 "gram.y" +case 801: +#line 4690 "gram.y" { CaseWhen *w = makeNode(CaseWhen); w->expr = yyvsp[-2].node; @@ -10298,23 +10319,23 @@ case 799: yyval.node = (Node *)w; ; break;} -case 800: -#line 4690 "gram.y" +case 802: +#line 4698 "gram.y" { yyval.node = yyvsp[0].node; ; break;} -case 801: -#line 4691 "gram.y" +case 803: +#line 4699 "gram.y" { yyval.node = NULL; ; break;} -case 802: -#line 4695 "gram.y" +case 804: +#line 4703 "gram.y" { yyvsp[-1].attr->indirection = yyvsp[0].list; yyval.node = (Node *)yyvsp[-1].attr; ; break;} -case 803: -#line 4700 "gram.y" +case 805: +#line 4708 "gram.y" { /* could be a column name or a relation_name */ Ident *n = makeNode(Ident); @@ -10323,12 +10344,12 @@ case 803: yyval.node = (Node *)n; ; break;} -case 804: -#line 4708 "gram.y" +case 806: +#line 4716 "gram.y" { yyval.node = NULL; ; break;} -case 805: -#line 4712 "gram.y" +case 807: +#line 4720 "gram.y" { yyval.attr = makeNode(Attr); yyval.attr->relname = yyvsp[-2].str; @@ -10337,8 +10358,8 @@ case 805: yyval.attr->indirection = NULL; ; break;} -case 806: -#line 4720 "gram.y" +case 808: +#line 4728 "gram.y" { yyval.attr = makeNode(Attr); yyval.attr->relname = NULL; @@ -10347,28 +10368,28 @@ case 806: yyval.attr->indirection = NULL; ; break;} -case 807: -#line 4730 "gram.y" +case 809: +#line 4738 "gram.y" { yyval.list = lcons(makeString(yyvsp[0].str), NIL); ; break;} -case 808: -#line 4732 "gram.y" +case 810: +#line 4740 "gram.y" { yyval.list = lappend(yyvsp[-2].list, makeString(yyvsp[0].str)); ; break;} -case 809: -#line 4734 "gram.y" +case 811: +#line 4742 "gram.y" { yyval.list = lappend(yyvsp[-2].list, makeString("*")); ; break;} -case 810: -#line 4745 "gram.y" +case 812: +#line 4753 "gram.y" { yyval.list = lappend(yyvsp[-2].list,yyvsp[0].target); ; break;} -case 811: -#line 4747 "gram.y" +case 813: +#line 4755 "gram.y" { yyval.list = lcons(yyvsp[0].target, NIL); ; break;} -case 812: -#line 4749 "gram.y" +case 814: +#line 4757 "gram.y" { ResTarget *rt = makeNode(ResTarget); Attr *att = makeNode(Attr); @@ -10382,8 +10403,8 @@ case 812: yyval.list = lcons(rt, NIL); ; break;} -case 813: -#line 4764 "gram.y" +case 815: +#line 4772 "gram.y" { yyval.target = makeNode(ResTarget); yyval.target->name = yyvsp[-3].str; @@ -10391,8 +10412,8 @@ case 813: yyval.target->val = (Node *)yyvsp[0].node; ; break;} -case 814: -#line 4771 "gram.y" +case 816: +#line 4779 "gram.y" { yyval.target = makeNode(ResTarget); yyval.target->name = NULL; @@ -10400,8 +10421,8 @@ case 814: yyval.target->val = (Node *)yyvsp[-1].attr; ; break;} -case 815: -#line 4778 "gram.y" +case 817: +#line 4786 "gram.y" { Attr *att = makeNode(Attr); att->relname = yyvsp[-2].str; @@ -10414,16 +10435,16 @@ case 815: yyval.target->val = (Node *)att; ; break;} -case 816: -#line 4797 "gram.y" +case 818: +#line 4805 "gram.y" { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].target); ; break;} -case 817: -#line 4799 "gram.y" +case 819: +#line 4807 "gram.y" { yyval.list = lcons(yyvsp[0].target, NIL); ; break;} -case 818: -#line 4804 "gram.y" +case 820: +#line 4812 "gram.y" { yyval.target = makeNode(ResTarget); yyval.target->name = yyvsp[0].str; @@ -10431,8 +10452,8 @@ case 818: yyval.target->val = (Node *)yyvsp[-2].node; ; break;} -case 819: -#line 4811 "gram.y" +case 821: +#line 4819 "gram.y" { yyval.target = makeNode(ResTarget); yyval.target->name = NULL; @@ -10440,8 +10461,8 @@ case 819: yyval.target->val = (Node *)yyvsp[0].node; ; break;} -case 820: -#line 4818 "gram.y" +case 822: +#line 4826 "gram.y" { Attr *att = makeNode(Attr); att->relname = yyvsp[-2].str; @@ -10454,8 +10475,8 @@ case 820: yyval.target->val = (Node *)att; ; break;} -case 821: -#line 4830 "gram.y" +case 823: +#line 4838 "gram.y" { Attr *att = makeNode(Attr); att->relname = "*"; @@ -10468,23 +10489,23 @@ case 821: yyval.target->val = (Node *)att; ; break;} -case 822: -#line 4843 "gram.y" +case 824: +#line 4851 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 823: -#line 4844 "gram.y" +case 825: +#line 4852 "gram.y" { yyval.str = NULL; ; break;} -case 824: -#line 4848 "gram.y" +case 826: +#line 4856 "gram.y" { yyval.str = yyvsp[0].str; StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN); ; break;} -case 825: -#line 4853 "gram.y" +case 827: +#line 4861 "gram.y" { /* disallow refs to variable system tables */ if (strcmp(LogRelationName, yyvsp[0].str) == 0 @@ -10495,44 +10516,44 @@ case 825: StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN); ; break;} -case 826: -#line 4864 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 827: -#line 4865 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 828: -#line 4866 "gram.y" +#line 4872 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 829: -#line 4867 "gram.y" +#line 4873 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 830: -#line 4868 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 831: #line 4874 "gram.y" { yyval.str = yyvsp[0].str; ; break;} -case 832: +case 831: #line 4875 "gram.y" -{ yyval.str = xlateSqlFunc(yyvsp[0].str); ; +{ yyval.str = yyvsp[0].str; ; + break;} +case 832: +#line 4876 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 833: -#line 4877 "gram.y" +#line 4882 "gram.y" { yyval.str = yyvsp[0].str; ; break;} case 834: -#line 4878 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 4883 "gram.y" +{ yyval.str = xlateSqlFunc(yyvsp[0].str); ; break;} case 835: -#line 4884 "gram.y" +#line 4885 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 836: +#line 4886 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 837: +#line 4892 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_Integer; @@ -10540,8 +10561,8 @@ case 835: yyval.node = (Node *)n; ; break;} -case 836: -#line 4891 "gram.y" +case 838: +#line 4899 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_Float; @@ -10549,8 +10570,8 @@ case 836: yyval.node = (Node *)n; ; break;} -case 837: -#line 4898 "gram.y" +case 839: +#line 4906 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; @@ -10558,8 +10579,8 @@ case 837: yyval.node = (Node *)n; ; break;} -case 838: -#line 4905 "gram.y" +case 840: +#line 4913 "gram.y" { A_Const *n = makeNode(A_Const); n->typename = yyvsp[-1].typnam; @@ -10568,12 +10589,12 @@ case 838: yyval.node = (Node *)n; ; break;} -case 839: -#line 4913 "gram.y" +case 841: +#line 4921 "gram.y" { yyval.node = (Node *)yyvsp[0].paramno; ; break;} -case 840: -#line 4915 "gram.y" +case 842: +#line 4923 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; @@ -10584,8 +10605,8 @@ case 840: yyval.node = (Node *)n; ; break;} -case 841: -#line 4925 "gram.y" +case 843: +#line 4933 "gram.y" { A_Const *n = makeNode(A_Const); n->val.type = T_String; @@ -10596,480 +10617,480 @@ case 841: yyval.node = (Node *)n; ; break;} -case 842: -#line 4937 "gram.y" +case 844: +#line 4945 "gram.y" { yyval.paramno = makeNode(ParamNo); yyval.paramno->number = yyvsp[-1].ival; yyval.paramno->indirection = yyvsp[0].list; ; break;} -case 843: -#line 4944 "gram.y" +case 845: +#line 4952 "gram.y" { yyval.ival = yyvsp[0].ival; ; break;} -case 844: -#line 4945 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} -case 845: -#line 4946 "gram.y" -{ yyval.str = yyvsp[0].str; ; - break;} case 846: -#line 4954 "gram.y" -{ yyval.str = xlateSqlType(yyvsp[0].str); ; +#line 4953 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 847: -#line 4956 "gram.y" -{ yyval.str = xlateSqlType(yyvsp[0].str); ; +#line 4954 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 848: -#line 4958 "gram.y" +#line 4962 "gram.y" { yyval.str = xlateSqlType(yyvsp[0].str); ; break;} case 849: -#line 4968 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 4964 "gram.y" +{ yyval.str = xlateSqlType(yyvsp[0].str); ; break;} case 850: -#line 4969 "gram.y" -{ yyval.str = yyvsp[0].str; ; +#line 4966 "gram.y" +{ yyval.str = xlateSqlType(yyvsp[0].str); ; break;} case 851: -#line 4970 "gram.y" -{ yyval.str = "absolute"; ; - break;} -case 852: -#line 4971 "gram.y" -{ yyval.str = "action"; ; - break;} -case 853: -#line 4972 "gram.y" -{ yyval.str = "after"; ; - break;} -case 854: -#line 4973 "gram.y" -{ yyval.str = "aggregate"; ; - break;} -case 855: -#line 4974 "gram.y" -{ yyval.str = "backward"; ; - break;} -case 856: -#line 4975 "gram.y" -{ yyval.str = "before"; ; - break;} -case 857: #line 4976 "gram.y" -{ yyval.str = "cache"; ; - break;} -case 858: -#line 4977 "gram.y" -{ yyval.str = "createdb"; ; - break;} -case 859: -#line 4978 "gram.y" -{ yyval.str = "createuser"; ; - break;} -case 860: -#line 4979 "gram.y" -{ yyval.str = "cycle"; ; - break;} -case 861: -#line 4980 "gram.y" -{ yyval.str = "database"; ; - break;} -case 862: -#line 4981 "gram.y" -{ yyval.str = "delimiters"; ; - break;} -case 863: -#line 4982 "gram.y" -{ yyval.str = "double"; ; - break;} -case 864: -#line 4983 "gram.y" -{ yyval.str = "each"; ; - break;} -case 865: -#line 4984 "gram.y" -{ yyval.str = "encoding"; ; - break;} -case 866: -#line 4985 "gram.y" -{ yyval.str = "forward"; ; - break;} -case 867: -#line 4986 "gram.y" -{ yyval.str = "function"; ; - break;} -case 868: -#line 4987 "gram.y" -{ yyval.str = "handler"; ; - break;} -case 869: -#line 4988 "gram.y" -{ yyval.str = "increment"; ; - break;} -case 870: -#line 4989 "gram.y" -{ yyval.str = "index"; ; - break;} -case 871: -#line 4990 "gram.y" -{ yyval.str = "inherits"; ; - break;} -case 872: -#line 4991 "gram.y" -{ yyval.str = "insensitive"; ; - break;} -case 873: -#line 4992 "gram.y" -{ yyval.str = "instead"; ; - break;} -case 874: -#line 4993 "gram.y" -{ yyval.str = "isnull"; ; - break;} -case 875: -#line 4994 "gram.y" -{ yyval.str = "key"; ; - break;} -case 876: -#line 4995 "gram.y" -{ yyval.str = "language"; ; - break;} -case 877: -#line 4996 "gram.y" -{ yyval.str = "lancompiler"; ; - break;} -case 878: -#line 4997 "gram.y" -{ yyval.str = "location"; ; - break;} -case 879: -#line 4998 "gram.y" -{ yyval.str = "match"; ; - break;} -case 880: -#line 4999 "gram.y" -{ yyval.str = "maxvalue"; ; - break;} -case 881: -#line 5000 "gram.y" -{ yyval.str = "minvalue"; ; - break;} -case 882: -#line 5001 "gram.y" -{ yyval.str = "next"; ; - break;} -case 883: -#line 5002 "gram.y" -{ yyval.str = "nocreatedb"; ; - break;} -case 884: -#line 5003 "gram.y" -{ yyval.str = "nocreateuser"; ; - break;} -case 885: -#line 5004 "gram.y" -{ yyval.str = "nothing"; ; - break;} -case 886: -#line 5005 "gram.y" -{ yyval.str = "notnull"; ; - break;} -case 887: -#line 5006 "gram.y" -{ yyval.str = "of"; ; - break;} -case 888: -#line 5007 "gram.y" -{ yyval.str = "oids"; ; - break;} -case 889: -#line 5008 "gram.y" -{ yyval.str = "only"; ; - break;} -case 890: -#line 5009 "gram.y" -{ yyval.str = "operator"; ; - break;} -case 891: -#line 5010 "gram.y" -{ yyval.str = "option"; ; - break;} -case 892: -#line 5011 "gram.y" -{ yyval.str = "password"; ; - break;} -case 893: -#line 5012 "gram.y" -{ yyval.str = "prior"; ; - break;} -case 894: -#line 5013 "gram.y" -{ yyval.str = "privileges"; ; - break;} -case 895: -#line 5014 "gram.y" -{ yyval.str = "procedural"; ; - break;} -case 896: -#line 5015 "gram.y" -{ yyval.str = "read"; ; - break;} -case 897: -#line 5016 "gram.y" -{ yyval.str = "recipe"; ; - break;} -case 898: -#line 5017 "gram.y" -{ yyval.str = "relative"; ; - break;} -case 899: -#line 5018 "gram.y" -{ yyval.str = "rename"; ; - break;} -case 900: -#line 5019 "gram.y" -{ yyval.str = "returns"; ; - break;} -case 901: -#line 5020 "gram.y" -{ yyval.str = "row"; ; - break;} -case 902: -#line 5021 "gram.y" -{ yyval.str = "rule"; ; - break;} -case 903: -#line 5022 "gram.y" -{ yyval.str = "scroll"; ; - break;} -case 904: -#line 5023 "gram.y" -{ yyval.str = "sequence"; ; - break;} -case 905: -#line 5024 "gram.y" -{ yyval.str = "serial"; ; - break;} -case 906: -#line 5025 "gram.y" -{ yyval.str = "start"; ; - break;} -case 907: -#line 5026 "gram.y" -{ yyval.str = "statement"; ; - break;} -case 908: -#line 5027 "gram.y" -{ yyval.str = "stdin"; ; - break;} -case 909: -#line 5028 "gram.y" -{ yyval.str = "stdout"; ; - break;} -case 910: -#line 5029 "gram.y" -{ yyval.str = "time"; ; - break;} -case 911: -#line 5030 "gram.y" -{ yyval.str = "timestamp"; ; - break;} -case 912: -#line 5031 "gram.y" -{ yyval.str = "timezone_hour"; ; - break;} -case 913: -#line 5032 "gram.y" -{ yyval.str = "timezone_minute"; ; - break;} -case 914: -#line 5033 "gram.y" -{ yyval.str = "trigger"; ; - break;} -case 915: -#line 5034 "gram.y" -{ yyval.str = "trusted"; ; - break;} -case 916: -#line 5035 "gram.y" -{ yyval.str = "type"; ; - break;} -case 917: -#line 5036 "gram.y" -{ yyval.str = "valid"; ; - break;} -case 918: -#line 5037 "gram.y" -{ yyval.str = "version"; ; - break;} -case 919: -#line 5038 "gram.y" -{ yyval.str = "zone"; ; - break;} -case 920: -#line 5051 "gram.y" { yyval.str = yyvsp[0].str; ; break;} +case 852: +#line 4977 "gram.y" +{ yyval.str = yyvsp[0].str; ; + break;} +case 853: +#line 4978 "gram.y" +{ yyval.str = "absolute"; ; + break;} +case 854: +#line 4979 "gram.y" +{ yyval.str = "action"; ; + break;} +case 855: +#line 4980 "gram.y" +{ yyval.str = "after"; ; + break;} +case 856: +#line 4981 "gram.y" +{ yyval.str = "aggregate"; ; + break;} +case 857: +#line 4982 "gram.y" +{ yyval.str = "backward"; ; + break;} +case 858: +#line 4983 "gram.y" +{ yyval.str = "before"; ; + break;} +case 859: +#line 4984 "gram.y" +{ yyval.str = "cache"; ; + break;} +case 860: +#line 4985 "gram.y" +{ yyval.str = "createdb"; ; + break;} +case 861: +#line 4986 "gram.y" +{ yyval.str = "createuser"; ; + break;} +case 862: +#line 4987 "gram.y" +{ yyval.str = "cycle"; ; + break;} +case 863: +#line 4988 "gram.y" +{ yyval.str = "database"; ; + break;} +case 864: +#line 4989 "gram.y" +{ yyval.str = "delimiters"; ; + break;} +case 865: +#line 4990 "gram.y" +{ yyval.str = "double"; ; + break;} +case 866: +#line 4991 "gram.y" +{ yyval.str = "each"; ; + break;} +case 867: +#line 4992 "gram.y" +{ yyval.str = "encoding"; ; + break;} +case 868: +#line 4993 "gram.y" +{ yyval.str = "forward"; ; + break;} +case 869: +#line 4994 "gram.y" +{ yyval.str = "function"; ; + break;} +case 870: +#line 4995 "gram.y" +{ yyval.str = "handler"; ; + break;} +case 871: +#line 4996 "gram.y" +{ yyval.str = "increment"; ; + break;} +case 872: +#line 4997 "gram.y" +{ yyval.str = "index"; ; + break;} +case 873: +#line 4998 "gram.y" +{ yyval.str = "inherits"; ; + break;} +case 874: +#line 4999 "gram.y" +{ yyval.str = "insensitive"; ; + break;} +case 875: +#line 5000 "gram.y" +{ yyval.str = "instead"; ; + break;} +case 876: +#line 5001 "gram.y" +{ yyval.str = "isnull"; ; + break;} +case 877: +#line 5002 "gram.y" +{ yyval.str = "key"; ; + break;} +case 878: +#line 5003 "gram.y" +{ yyval.str = "language"; ; + break;} +case 879: +#line 5004 "gram.y" +{ yyval.str = "lancompiler"; ; + break;} +case 880: +#line 5005 "gram.y" +{ yyval.str = "location"; ; + break;} +case 881: +#line 5006 "gram.y" +{ yyval.str = "match"; ; + break;} +case 882: +#line 5007 "gram.y" +{ yyval.str = "maxvalue"; ; + break;} +case 883: +#line 5008 "gram.y" +{ yyval.str = "minvalue"; ; + break;} +case 884: +#line 5009 "gram.y" +{ yyval.str = "next"; ; + break;} +case 885: +#line 5010 "gram.y" +{ yyval.str = "nocreatedb"; ; + break;} +case 886: +#line 5011 "gram.y" +{ yyval.str = "nocreateuser"; ; + break;} +case 887: +#line 5012 "gram.y" +{ yyval.str = "nothing"; ; + break;} +case 888: +#line 5013 "gram.y" +{ yyval.str = "notnull"; ; + break;} +case 889: +#line 5014 "gram.y" +{ yyval.str = "of"; ; + break;} +case 890: +#line 5015 "gram.y" +{ yyval.str = "oids"; ; + break;} +case 891: +#line 5016 "gram.y" +{ yyval.str = "only"; ; + break;} +case 892: +#line 5017 "gram.y" +{ yyval.str = "operator"; ; + break;} +case 893: +#line 5018 "gram.y" +{ yyval.str = "option"; ; + break;} +case 894: +#line 5019 "gram.y" +{ yyval.str = "password"; ; + break;} +case 895: +#line 5020 "gram.y" +{ yyval.str = "prior"; ; + break;} +case 896: +#line 5021 "gram.y" +{ yyval.str = "privileges"; ; + break;} +case 897: +#line 5022 "gram.y" +{ yyval.str = "procedural"; ; + break;} +case 898: +#line 5023 "gram.y" +{ yyval.str = "read"; ; + break;} +case 899: +#line 5024 "gram.y" +{ yyval.str = "recipe"; ; + break;} +case 900: +#line 5025 "gram.y" +{ yyval.str = "relative"; ; + break;} +case 901: +#line 5026 "gram.y" +{ yyval.str = "rename"; ; + break;} +case 902: +#line 5027 "gram.y" +{ yyval.str = "returns"; ; + break;} +case 903: +#line 5028 "gram.y" +{ yyval.str = "row"; ; + break;} +case 904: +#line 5029 "gram.y" +{ yyval.str = "rule"; ; + break;} +case 905: +#line 5030 "gram.y" +{ yyval.str = "scroll"; ; + break;} +case 906: +#line 5031 "gram.y" +{ yyval.str = "sequence"; ; + break;} +case 907: +#line 5032 "gram.y" +{ yyval.str = "serial"; ; + break;} +case 908: +#line 5033 "gram.y" +{ yyval.str = "start"; ; + break;} +case 909: +#line 5034 "gram.y" +{ yyval.str = "statement"; ; + break;} +case 910: +#line 5035 "gram.y" +{ yyval.str = "stdin"; ; + break;} +case 911: +#line 5036 "gram.y" +{ yyval.str = "stdout"; ; + break;} +case 912: +#line 5037 "gram.y" +{ yyval.str = "time"; ; + break;} +case 913: +#line 5038 "gram.y" +{ yyval.str = "timestamp"; ; + break;} +case 914: +#line 5039 "gram.y" +{ yyval.str = "timezone_hour"; ; + break;} +case 915: +#line 5040 "gram.y" +{ yyval.str = "timezone_minute"; ; + break;} +case 916: +#line 5041 "gram.y" +{ yyval.str = "trigger"; ; + break;} +case 917: +#line 5042 "gram.y" +{ yyval.str = "trusted"; ; + break;} +case 918: +#line 5043 "gram.y" +{ yyval.str = "type"; ; + break;} +case 919: +#line 5044 "gram.y" +{ yyval.str = "valid"; ; + break;} +case 920: +#line 5045 "gram.y" +{ yyval.str = "version"; ; + break;} case 921: -#line 5052 "gram.y" -{ yyval.str = "abort"; ; +#line 5046 "gram.y" +{ yyval.str = "zone"; ; break;} case 922: -#line 5053 "gram.y" -{ yyval.str = "analyze"; ; +#line 5059 "gram.y" +{ yyval.str = yyvsp[0].str; ; break;} case 923: -#line 5054 "gram.y" -{ yyval.str = "binary"; ; +#line 5060 "gram.y" +{ yyval.str = "abort"; ; break;} case 924: -#line 5055 "gram.y" -{ yyval.str = "case"; ; +#line 5061 "gram.y" +{ yyval.str = "analyze"; ; break;} case 925: -#line 5056 "gram.y" -{ yyval.str = "cluster"; ; +#line 5062 "gram.y" +{ yyval.str = "binary"; ; break;} case 926: -#line 5057 "gram.y" -{ yyval.str = "coalesce"; ; +#line 5063 "gram.y" +{ yyval.str = "case"; ; break;} case 927: -#line 5058 "gram.y" -{ yyval.str = "constraint"; ; +#line 5064 "gram.y" +{ yyval.str = "cluster"; ; break;} case 928: -#line 5059 "gram.y" -{ yyval.str = "copy"; ; +#line 5065 "gram.y" +{ yyval.str = "coalesce"; ; break;} case 929: -#line 5060 "gram.y" -{ yyval.str = "cross"; ; +#line 5066 "gram.y" +{ yyval.str = "constraint"; ; break;} case 930: -#line 5061 "gram.y" -{ yyval.str = "current"; ; +#line 5067 "gram.y" +{ yyval.str = "copy"; ; break;} case 931: -#line 5062 "gram.y" -{ yyval.str = "do"; ; +#line 5068 "gram.y" +{ yyval.str = "cross"; ; break;} case 932: -#line 5063 "gram.y" -{ yyval.str = "else"; ; +#line 5069 "gram.y" +{ yyval.str = "current"; ; break;} case 933: -#line 5064 "gram.y" -{ yyval.str = "end"; ; +#line 5070 "gram.y" +{ yyval.str = "do"; ; break;} case 934: -#line 5065 "gram.y" -{ yyval.str = "explain"; ; +#line 5071 "gram.y" +{ yyval.str = "else"; ; break;} case 935: -#line 5066 "gram.y" -{ yyval.str = "extend"; ; +#line 5072 "gram.y" +{ yyval.str = "end"; ; break;} case 936: -#line 5067 "gram.y" -{ yyval.str = "false"; ; +#line 5073 "gram.y" +{ yyval.str = "explain"; ; break;} case 937: -#line 5068 "gram.y" -{ yyval.str = "foreign"; ; +#line 5074 "gram.y" +{ yyval.str = "extend"; ; break;} case 938: -#line 5069 "gram.y" -{ yyval.str = "group"; ; +#line 5075 "gram.y" +{ yyval.str = "false"; ; break;} case 939: -#line 5070 "gram.y" -{ yyval.str = "listen"; ; +#line 5076 "gram.y" +{ yyval.str = "foreign"; ; break;} case 940: -#line 5071 "gram.y" -{ yyval.str = "load"; ; +#line 5077 "gram.y" +{ yyval.str = "group"; ; break;} case 941: -#line 5072 "gram.y" -{ yyval.str = "lock"; ; +#line 5078 "gram.y" +{ yyval.str = "listen"; ; break;} case 942: -#line 5073 "gram.y" -{ yyval.str = "move"; ; +#line 5079 "gram.y" +{ yyval.str = "load"; ; break;} case 943: -#line 5074 "gram.y" -{ yyval.str = "new"; ; +#line 5080 "gram.y" +{ yyval.str = "lock"; ; break;} case 944: -#line 5075 "gram.y" -{ yyval.str = "none"; ; +#line 5081 "gram.y" +{ yyval.str = "move"; ; break;} case 945: -#line 5076 "gram.y" -{ yyval.str = "nullif"; ; +#line 5082 "gram.y" +{ yyval.str = "new"; ; break;} case 946: -#line 5077 "gram.y" -{ yyval.str = "order"; ; +#line 5083 "gram.y" +{ yyval.str = "none"; ; break;} case 947: -#line 5078 "gram.y" -{ yyval.str = "position"; ; +#line 5084 "gram.y" +{ yyval.str = "nullif"; ; break;} case 948: -#line 5079 "gram.y" -{ yyval.str = "precision"; ; +#line 5085 "gram.y" +{ yyval.str = "order"; ; break;} case 949: -#line 5080 "gram.y" -{ yyval.str = "reset"; ; +#line 5086 "gram.y" +{ yyval.str = "position"; ; break;} case 950: -#line 5081 "gram.y" -{ yyval.str = "setof"; ; +#line 5087 "gram.y" +{ yyval.str = "precision"; ; break;} case 951: -#line 5082 "gram.y" -{ yyval.str = "show"; ; +#line 5088 "gram.y" +{ yyval.str = "reset"; ; break;} case 952: -#line 5083 "gram.y" -{ yyval.str = "table"; ; +#line 5089 "gram.y" +{ yyval.str = "setof"; ; break;} case 953: -#line 5084 "gram.y" -{ yyval.str = "then"; ; +#line 5090 "gram.y" +{ yyval.str = "show"; ; break;} case 954: -#line 5085 "gram.y" -{ yyval.str = "transaction"; ; +#line 5091 "gram.y" +{ yyval.str = "table"; ; break;} case 955: -#line 5086 "gram.y" -{ yyval.str = "true"; ; +#line 5092 "gram.y" +{ yyval.str = "then"; ; break;} case 956: -#line 5087 "gram.y" -{ yyval.str = "vacuum"; ; +#line 5093 "gram.y" +{ yyval.str = "transaction"; ; break;} case 957: -#line 5088 "gram.y" -{ yyval.str = "verbose"; ; +#line 5094 "gram.y" +{ yyval.str = "true"; ; break;} case 958: -#line 5089 "gram.y" -{ yyval.str = "when"; ; +#line 5095 "gram.y" +{ yyval.str = "vacuum"; ; break;} case 959: -#line 5093 "gram.y" +#line 5096 "gram.y" +{ yyval.str = "verbose"; ; + break;} +case 960: +#line 5097 "gram.y" +{ yyval.str = "when"; ; + break;} +case 961: +#line 5101 "gram.y" { if (QueryIsRule) yyval.str = "*CURRENT*"; @@ -11077,8 +11098,8 @@ case 959: elog(ERROR,"CURRENT used in non-rule query"); ; break;} -case 960: -#line 5100 "gram.y" +case 962: +#line 5108 "gram.y" { if (QueryIsRule) yyval.str = "*NEW*"; @@ -11088,7 +11109,7 @@ case 960: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/share/misc/bison.simple" +#line 498 "/usr/local/bison/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -11284,7 +11305,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 5108 "gram.y" +#line 5116 "gram.y" static Node * diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 0ba01fe14c..374206304a 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.49 1999/01/25 12:01:13 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.50 1999/02/02 03:44:42 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -154,13 +154,13 @@ Oid param_type(int t); /* used in parse_expr.c */ %type opt_id, opt_portal_name, all_Op, MathOp, opt_name, opt_unique, - result, OptUseOp, opt_class, SpecialRuleRelation + OptUseOp, opt_class, SpecialRuleRelation %type privileges, operation_commalist, grantee %type operation, TriggerOneEvent %type stmtblock, stmtmulti, - relation_name_list, OptTableElementList, + result, relation_name_list, OptTableElementList, OptInherit, definition, opt_with, func_args, func_args_list, oper_argtypes, OptStmtList, OptStmtBlock, OptStmtMulti, @@ -173,7 +173,7 @@ Oid param_type(int t); /* used in parse_expr.c */ %type func_return %type set_opt -%type TriggerForOpt, TriggerForType +%type TriggerForOpt, TriggerForType, OptTemp %type for_update_clause %type join_list @@ -283,7 +283,7 @@ Oid param_type(int t); /* used in parse_expr.c */ PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK, SCROLL, SECOND_P, SELECT, SET, SUBSTRING, - TABLE, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, + TABLE, TEMP, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIM, TRUE_P, UNION, UNIQUE, UPDATE, USER, USING, VALUES, VARCHAR, VARYING, VIEW, @@ -747,18 +747,23 @@ copy_delimiter: USING DELIMITERS Sconst { $$ = $3; } * *****************************************************************************/ -CreateStmt: CREATE TABLE relation_name '(' OptTableElementList ')' +CreateStmt: CREATE OptTemp TABLE relation_name '(' OptTableElementList ')' OptInherit { CreateStmt *n = makeNode(CreateStmt); - n->relname = $3; - n->tableElts = $5; - n->inhRelnames = $7; + n->istemp = $2; + n->relname = $4; + n->tableElts = $6; + n->inhRelnames = $8; n->constraints = NIL; $$ = (Node *)n; } ; +OptTemp: TEMP { $$ = TRUE; } + | /*EMPTY*/ { $$ = FALSE; } + ; + OptTableElementList: OptTableElementList ',' OptTableElement { if ($3 != NULL) @@ -1236,12 +1241,13 @@ OptInherit: INHERITS '(' relation_name_list ')' { $$ = $3; } | /*EMPTY*/ { $$ = NIL; } ; -CreateAsStmt: CREATE TABLE relation_name OptCreateAs AS SubSelect +CreateAsStmt: CREATE OptTemp TABLE relation_name OptCreateAs AS SubSelect { - SelectStmt *n = (SelectStmt *)$6; - if ($4 != NIL) - mapTargetColumns($4, n->targetList); - n->into = $3; + SelectStmt *n = (SelectStmt *)$7; + if ($5 != NIL) + mapTargetColumns($5, n->targetList); + n->istemp = $2; + n->into = $4; $$ = (Node *)n; } ; @@ -2862,8 +2868,9 @@ SubSelect: SELECT opt_unique res_target_list2 * want to create a new rule 'SubSelect1' including the * feature. If it makes troubles we will have to add * a new rule and change this to prevent INTOs in - * Subselects again */ - n->into = $4; + * Subselects again */ + n->istemp = (bool)((A_Const *)lfirst($4))->val.val.ival; + n->into = (char *)lnext($4); n->fromClause = $5; n->whereClause = $6; @@ -2873,8 +2880,9 @@ SubSelect: SELECT opt_unique res_target_list2 } ; -result: INTO opt_table relation_name { $$= $3; } - | /*EMPTY*/ { $$ = NULL; } + /* easy way to return two values. Can someone improve this? bjm */ +result: INTO OptTemp opt_table relation_name { $$ = lcons(makeInteger($2), (List *)$4); } + | /*EMPTY*/ { $$ = lcons(makeInteger(false), NIL); } ; opt_table: TABLE { $$ = TRUE; } diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c index b7a9d003df..f1e59781ff 100644 --- a/src/backend/parser/keywords.c +++ b/src/backend/parser/keywords.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.51 1999/01/18 00:09:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.52 1999/02/02 03:44:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -213,6 +213,7 @@ static ScanKeyword ScanKeywords[] = { {"stdout", STDOUT}, {"substring", SUBSTRING}, {"table", TABLE}, + {"temp", TEMP}, {"then", THEN}, {"time", TIME}, {"timestamp", TIMESTAMP}, diff --git a/src/backend/parser/parse.h b/src/backend/parser/parse.h index febd140360..aea51130a5 100644 --- a/src/backend/parser/parse.h +++ b/src/backend/parser/parse.h @@ -145,110 +145,111 @@ typedef union #define SET 371 #define SUBSTRING 372 #define TABLE 373 -#define THEN 374 -#define TIME 375 -#define TIMESTAMP 376 -#define TIMEZONE_HOUR 377 -#define TIMEZONE_MINUTE 378 -#define TO 379 -#define TRAILING 380 -#define TRANSACTION 381 -#define TRIM 382 -#define TRUE_P 383 -#define UNION 384 -#define UNIQUE 385 -#define UPDATE 386 -#define USER 387 -#define USING 388 -#define VALUES 389 -#define VARCHAR 390 -#define VARYING 391 -#define VIEW 392 -#define WHEN 393 -#define WHERE 394 -#define WITH 395 -#define WORK 396 -#define YEAR_P 397 -#define ZONE 398 -#define TRIGGER 399 -#define TYPE_P 400 -#define ABORT_TRANS 401 -#define AFTER 402 -#define AGGREGATE 403 -#define ANALYZE 404 -#define BACKWARD 405 -#define BEFORE 406 -#define BINARY 407 -#define CACHE 408 -#define CLUSTER 409 -#define COPY 410 -#define CREATEDB 411 -#define CREATEUSER 412 -#define CYCLE 413 -#define DATABASE 414 -#define DELIMITERS 415 -#define DO 416 -#define EACH 417 -#define ENCODING 418 -#define EXPLAIN 419 -#define EXTEND 420 -#define FORWARD 421 -#define FUNCTION 422 -#define HANDLER 423 -#define INCREMENT 424 -#define INDEX 425 -#define INHERITS 426 -#define INSTEAD 427 -#define ISNULL 428 -#define LANCOMPILER 429 -#define LISTEN 430 -#define LOAD 431 -#define LOCATION 432 -#define LOCK_P 433 -#define MAXVALUE 434 -#define MINVALUE 435 -#define MOVE 436 -#define NEW 437 -#define NOCREATEDB 438 -#define NOCREATEUSER 439 -#define NONE 440 -#define NOTHING 441 -#define NOTIFY 442 -#define NOTNULL 443 -#define OIDS 444 -#define OPERATOR 445 -#define PASSWORD 446 -#define PROCEDURAL 447 -#define RECIPE 448 -#define RENAME 449 -#define RESET 450 -#define RETURNS 451 -#define ROW 452 -#define RULE 453 -#define SEQUENCE 454 -#define SERIAL 455 -#define SETOF 456 -#define SHOW 457 -#define START 458 -#define STATEMENT 459 -#define STDIN 460 -#define STDOUT 461 -#define TRUSTED 462 -#define UNLISTEN 463 -#define UNTIL 464 -#define VACUUM 465 -#define VALID 466 -#define VERBOSE 467 -#define VERSION 468 -#define IDENT 469 -#define SCONST 470 -#define Op 471 -#define ICONST 472 -#define PARAM 473 -#define FCONST 474 -#define OP 475 -#define UMINUS 476 -#define TYPECAST 477 +#define TEMP 374 +#define THEN 375 +#define TIME 376 +#define TIMESTAMP 377 +#define TIMEZONE_HOUR 378 +#define TIMEZONE_MINUTE 379 +#define TO 380 +#define TRAILING 381 +#define TRANSACTION 382 +#define TRIM 383 +#define TRUE_P 384 +#define UNION 385 +#define UNIQUE 386 +#define UPDATE 387 +#define USER 388 +#define USING 389 +#define VALUES 390 +#define VARCHAR 391 +#define VARYING 392 +#define VIEW 393 +#define WHEN 394 +#define WHERE 395 +#define WITH 396 +#define WORK 397 +#define YEAR_P 398 +#define ZONE 399 +#define TRIGGER 400 +#define TYPE_P 401 +#define ABORT_TRANS 402 +#define AFTER 403 +#define AGGREGATE 404 +#define ANALYZE 405 +#define BACKWARD 406 +#define BEFORE 407 +#define BINARY 408 +#define CACHE 409 +#define CLUSTER 410 +#define COPY 411 +#define CREATEDB 412 +#define CREATEUSER 413 +#define CYCLE 414 +#define DATABASE 415 +#define DELIMITERS 416 +#define DO 417 +#define EACH 418 +#define ENCODING 419 +#define EXPLAIN 420 +#define EXTEND 421 +#define FORWARD 422 +#define FUNCTION 423 +#define HANDLER 424 +#define INCREMENT 425 +#define INDEX 426 +#define INHERITS 427 +#define INSTEAD 428 +#define ISNULL 429 +#define LANCOMPILER 430 +#define LISTEN 431 +#define LOAD 432 +#define LOCATION 433 +#define LOCK_P 434 +#define MAXVALUE 435 +#define MINVALUE 436 +#define MOVE 437 +#define NEW 438 +#define NOCREATEDB 439 +#define NOCREATEUSER 440 +#define NONE 441 +#define NOTHING 442 +#define NOTIFY 443 +#define NOTNULL 444 +#define OIDS 445 +#define OPERATOR 446 +#define PASSWORD 447 +#define PROCEDURAL 448 +#define RECIPE 449 +#define RENAME 450 +#define RESET 451 +#define RETURNS 452 +#define ROW 453 +#define RULE 454 +#define SEQUENCE 455 +#define SERIAL 456 +#define SETOF 457 +#define SHOW 458 +#define START 459 +#define STATEMENT 460 +#define STDIN 461 +#define STDOUT 462 +#define TRUSTED 463 +#define UNLISTEN 464 +#define UNTIL 465 +#define VACUUM 466 +#define VALID 467 +#define VERBOSE 468 +#define VERSION 469 +#define IDENT 470 +#define SCONST 471 +#define Op 472 +#define ICONST 473 +#define PARAM 474 +#define FCONST 475 +#define OP 476 +#define UMINUS 477 +#define TYPECAST 478 extern YYSTYPE yylval; diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index 2af5f52fd4..31b9a43694 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.32 1999/01/25 18:02:20 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.33 1999/02/02 03:44:45 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1135,6 +1135,7 @@ modifyAggrefMakeSublink(Expr *origexp, Query *parsetree) subquery->into = NULL; subquery->isPortal = FALSE; subquery->isBinary = FALSE; + subquery->isTemp = FALSE; subquery->unionall = FALSE; subquery->uniqueFlag = NULL; subquery->sortClause = NULL; @@ -2767,7 +2768,7 @@ Except_Intersect_Rewrite (Query *parsetree) List *union_list = NIL, *sortClause; List *left_expr, *right_expr, *resnames = NIL; char *op, *uniqueFlag, *into; - bool isBinary, isPortal; + bool isBinary, isPortal, isTemp; CmdType commandType = CMD_SELECT; List *rtable_insert = NIL; @@ -2811,7 +2812,8 @@ Except_Intersect_Rewrite (Query *parsetree) into = parsetree->into; isBinary = parsetree->isBinary; isPortal = parsetree->isPortal; - + isTemp = parsetree->isTemp; + /* The operator tree attached to parsetree->intersectClause is still 'raw' * ( = the leaf nodes are still SelectStmt nodes instead of Query nodes) * So step through the tree and transform the nodes using parse_analyze(). @@ -2959,6 +2961,8 @@ Except_Intersect_Rewrite (Query *parsetree) result->into = into; result->isPortal = isPortal; result->isBinary = isBinary; + result->isTemp = isTemp; + /* The relation to insert into is attached to the range table * of the new top node */ if (commandType == CMD_INSERT) diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index d5fa26b603..96232c9d79 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.45 1998/12/15 12:46:19 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.46 1999/02/02 03:44:46 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -231,7 +231,7 @@ ReadBufferWithBufferLock(Relation reln, bool isLocalBuf; extend = (blockNum == P_NEW); - isLocalBuf = reln->rd_islocal; + isLocalBuf = reln->rd_myxactonly; if (isLocalBuf) { @@ -1374,7 +1374,7 @@ BlockNumber RelationGetNumberOfBlocks(Relation relation) { return - ((relation->rd_islocal) ? relation->rd_nblocks : + ((relation->rd_myxactonly) ? relation->rd_nblocks : smgrnblocks(DEFAULT_SMGR, relation)); } @@ -1395,7 +1395,7 @@ ReleaseRelationBuffers(Relation rel) int holding = 0; BufferDesc *buf; - if (rel->rd_islocal) + if (rel->rd_myxactonly) { for (i = 0; i < NLocBuffer; i++) { @@ -1564,7 +1564,7 @@ BlowawayRelationBuffers(Relation rel, BlockNumber block) int i; BufferDesc *buf; - if (rel->rd_islocal) + if (rel->rd_myxactonly) { for (i = 0; i < NLocBuffer; i++) { diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c index 255b05c7c1..7e2a0b3723 100644 --- a/src/backend/storage/large_object/inv_api.c +++ b/src/backend/storage/large_object/inv_api.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.45 1999/01/21 22:48:09 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.46 1999/02/02 03:44:50 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -47,7 +47,6 @@ #include "utils/builtins.h" /* for namestrcpy() */ #include "utils/rel.h" #include "utils/relcache.h" -#include "utils/syscache.h" /* * Warning, Will Robinson... In order to pack data into an inversion @@ -120,20 +119,16 @@ inv_create(int flags) sprintf(objname, "xinv%d", file_oid); sprintf(indname, "xinx%d", file_oid); - if (SearchSysCacheTuple(RELNAME, - PointerGetDatum(objname), - 0, 0, 0) != NULL) + if (RelnameFindRelid(objname) != InvalidOid) { elog(ERROR, "internal error: %s already exists -- cannot create large obj", objname); } - if (SearchSysCacheTuple(RELNAME, - PointerGetDatum(indname), - 0, 0, 0) != NULL) + if (RelnameFindRelid(indname) != InvalidOid) { elog(ERROR, - "internal error: %s already exists -- cannot create large obj", + "internal error: %s already exists -- cannot create large obj", indname); } @@ -153,7 +148,7 @@ inv_create(int flags) * be located on whatever storage manager the user requested. */ - heap_create_with_catalog(objname, tupdesc, RELKIND_LOBJECT); + heap_create_with_catalog(objname, tupdesc, RELKIND_LOBJECT, false); /* make the relation visible in this transaction */ CommandCounterIncrement(); diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index f50dfee7d6..961c76ccba 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.97 1999/01/18 00:09:56 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.98 1999/02/02 03:44:51 momjian Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -72,6 +72,7 @@ #include "utils/mcxt.h" #include "utils/rel.h" #include "utils/ps_status.h" +#include "utils/temprel.h" #if FALSE #include "nodes/relation.h" @@ -1502,6 +1503,8 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) if (!TransactionFlushEnabled()) on_shmem_exit(FlushBufferPool, NULL); + on_shmem_exit(remove_all_temp_relations, NULL); + /* ---------------- * Set up handler for cancel-request signal, and * send this backend's cancellation info to the frontend. @@ -1535,7 +1538,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) if (!IsUnderPostmaster) { puts("\nPOSTGRES backend interactive interface "); - puts("$Revision: 1.97 $ $Date: 1999/01/18 00:09:56 $\n"); + puts("$Revision: 1.98 $ $Date: 1999/02/02 03:44:51 $\n"); } /* ---------------- diff --git a/src/backend/utils/cache/Makefile b/src/backend/utils/cache/Makefile index 5df81fca13..9034f85812 100644 --- a/src/backend/utils/cache/Makefile +++ b/src/backend/utils/cache/Makefile @@ -4,7 +4,7 @@ # Makefile for utils/cache # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/backend/utils/cache/Makefile,v 1.9 1998/08/24 01:13:52 momjian Exp $ +# $Header: /cvsroot/pgsql/src/backend/utils/cache/Makefile,v 1.10 1999/02/02 03:44:54 momjian Exp $ # #------------------------------------------------------------------------- @@ -13,7 +13,8 @@ include ../../../Makefile.global CFLAGS += -I../.. -OBJS = catcache.o inval.o rel.o relcache.o syscache.o lsyscache.o fcache.o +OBJS = catcache.o inval.o rel.o relcache.o syscache.o lsyscache.o \ + fcache.o temprel.o all: SUBSYS.o diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index bb87291fdc..0c431edc6d 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.36 1998/11/27 19:52:26 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.37 1999/02/02 03:44:58 momjian Exp $ * * Notes: * XXX This needs to use exception.h to handle recovery when @@ -196,7 +196,6 @@ CatalogCacheInitializeCache(struct catcache * cache, if (cache->cc_key[i] > 0) { - /* * Yoiks. The implementation of the hashing code and the * implementation of int28's are at loggerheads. The right diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index dc53399b5d..844ea968d6 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.18 1998/11/27 19:52:28 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.19 1999/02/02 03:45:01 momjian Exp $ * * Note - this code is real crufty... * @@ -20,6 +20,7 @@ #include "access/heapam.h" /* XXX to support hacks below */ #include "access/htup.h" #include "catalog/catalog.h" +#include "catalog/heap.h" #include "storage/bufpage.h" #include "storage/buf.h" /* XXX for InvalidBuffer */ #include "storage/ipc.h" @@ -244,31 +245,17 @@ RelationIdRegisterLocalInvalid(Oid relationId, Oid objectId) static void getmyrelids() { - HeapTuple tuple; + MyRelationRelationId = RelnameFindRelid(RelationRelationName); + Assert(RelationRelationName != InvalidOid); - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(RelationRelationName), - 0, 0, 0); - Assert(HeapTupleIsValid(tuple)); - MyRelationRelationId = tuple->t_data->t_oid; + MyAttributeRelationId = RelnameFindRelid(AttributeRelationName); + Assert(AttributeRelationName != InvalidOid); - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(AttributeRelationName), - 0, 0, 0); - Assert(HeapTupleIsValid(tuple)); - MyAttributeRelationId = tuple->t_data->t_oid; + MyAMRelationId = RelnameFindRelid(AccessMethodRelationName); + Assert(MyAMRelationId != InvalidOid); - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(AccessMethodRelationName), - 0, 0, 0); - Assert(HeapTupleIsValid(tuple)); - MyAMRelationId = tuple->t_data->t_oid; - - tuple = SearchSysCacheTuple(RELNAME, - PointerGetDatum(AccessMethodOperatorRelationName), - 0, 0, 0); - Assert(HeapTupleIsValid(tuple)); - MyAMOPRelationId = tuple->t_data->t_oid; + MyAMOPRelationId = RelnameFindRelid(AccessMethodOperatorRelationName); + Assert(MyAMOPRelationId != InvalidOid); } /* -------------------------------- @@ -614,10 +601,6 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple) */ RelationInvalidateHeapTuple_DEBUG1; - /* ---------------- - * - * ---------------- - */ RelationInvalidateCatalogCacheTuple(relation, tuple, CacheIdRegisterLocalInvalid); @@ -625,12 +608,4 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple) RelationInvalidateRelationCache(relation, tuple, RelationIdRegisterLocalInvalid); - -#ifdef NOT_USED - if (RefreshWhenInvalidate) - /* what does this do? bjm 1998/08/20 */ - RelationInvalidateCatalogCacheTuple(relation, - tuple, - (void (*) ()) NULL); -#endif } diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 43fd18f83c..4babd01289 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.55 1999/01/22 18:47:37 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.56 1999/02/02 03:45:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -404,7 +404,7 @@ scan_pg_rel_ind(RelationBuildDescInfo buildinfo) switch (buildinfo.infotype) { case INFO_RELID: - return_tuple = ClassOidIndexScan(pg_class_desc, buildinfo.i.info_id); + return_tuple = ClassOidIndexScan(pg_class_desc,buildinfo.i.info_id); break; case INFO_RELNAME: @@ -821,7 +821,6 @@ RelationBuildDesc(RelationBuildDescInfo buildinfo) */ if (!HeapTupleIsValid(pg_class_tuple)) { - MemoryContextSwitchTo(oldcxt); return NULL; @@ -867,8 +866,7 @@ RelationBuildDesc(RelationBuildDescInfo buildinfo) */ if (OidIsValid(relam)) { - relation->rd_am = (Form_pg_am) - AccessMethodObjectIdGetForm(relam); + relation->rd_am = (Form_pg_am) AccessMethodObjectIdGetForm(relam); } /* ---------------- @@ -927,7 +925,6 @@ RelationBuildDesc(RelationBuildDescInfo buildinfo) * restore memory context and return the new reldesc. * ---------------- */ - RelationCacheInsert(relation); /* ------------------- @@ -1197,8 +1194,7 @@ RelationIdGetRelation(Oid relationId) buildinfo.i.info_id = relationId; rd = RelationBuildDesc(buildinfo); - return - rd; + return rd; } /* -------------------------------- @@ -1332,8 +1328,9 @@ RelationFlushRelation(Relation *relationPtr, /* -------------------------------- * RelationForgetRelation - - * RelationFlushRelation + if the relation is local then get rid of - * the relation descriptor from the newly created relation list. + * RelationFlushRelation + if the relation is myxactonly then + * get rid of the relation descriptor from the newly created + * relation list. * -------------------------------- */ void @@ -1342,37 +1339,39 @@ RelationForgetRelation(Oid rid) Relation relation; RelationIdCacheLookup(rid, relation); - Assert(PointerIsValid(relation)); - if (relation->rd_islocal) + if (PointerIsValid(relation)) { - MemoryContext oldcxt; - List *curr; - List *prev = NIL; - - oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); - - foreach(curr, newlyCreatedRelns) + if (relation->rd_myxactonly) { - Relation reln = lfirst(curr); - - Assert(reln != NULL && reln->rd_islocal); - if (RelationGetRelid(reln) == rid) - break; - prev = curr; + MemoryContext oldcxt; + List *curr; + List *prev = NIL; + + oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); + + foreach(curr, newlyCreatedRelns) + { + Relation reln = lfirst(curr); + + Assert(reln != NULL && reln->rd_myxactonly); + if (RelationGetRelid(reln) == rid) + break; + prev = curr; + } + if (curr == NIL) + elog(FATAL, "Local relation %s not found in list", + (RelationGetRelationName(relation))->data); + if (prev == NIL) + newlyCreatedRelns = lnext(newlyCreatedRelns); + else + lnext(prev) = lnext(curr); + pfree(curr); + MemoryContextSwitchTo(oldcxt); } - if (curr == NIL) - elog(FATAL, "Local relation %s not found in list", - (RelationGetRelationName(relation))->data); - if (prev == NIL) - newlyCreatedRelns = lnext(newlyCreatedRelns); - else - lnext(prev) = lnext(curr); - pfree(curr); - MemoryContextSwitchTo(oldcxt); + + RelationFlushRelation(&relation, false); } - - RelationFlushRelation(&relation, false); } /* -------------------------------- @@ -1393,9 +1392,8 @@ RelationIdInvalidateRelationCacheByRelationId(Oid relationId) * BufferSync also? But I'll leave it for now since I don't want to * break anything.) - ay 3/95 */ - if (PointerIsValid(relation) && !relation->rd_islocal) + if (PointerIsValid(relation) && !relation->rd_myxactonly) { - /* * The boolean onlyFlushReferenceCountZero in RelationFlushReln() * should be set to true when we are incrementing the command @@ -1502,13 +1500,13 @@ RelationRegisterRelation(Relation relation) /* * we've just created the relation. It is invisible to anyone else - * before the transaction is committed. Setting rd_islocal allows us + * before the transaction is committed. Setting rd_myxactonly allows us * to use the local buffer manager for select/insert/etc before the * end of transaction. (We also need to keep track of relations * created during a transaction and does the necessary clean up at the * end of the transaction.) - ay 3/95 */ - relation->rd_islocal = TRUE; + relation->rd_myxactonly = TRUE; newlyCreatedRelns = lcons(relation, newlyCreatedRelns); MemoryContextSwitchTo(oldcxt); @@ -1516,7 +1514,7 @@ RelationRegisterRelation(Relation relation) /* * RelationPurgeLocalRelation - - * find all the Relation descriptors marked rd_islocal and reset them. + * find all the Relation descriptors marked rd_myxactonly and reset them. * This should be called at the end of a transaction (commit/abort) when * the "local" relations will become visible to others and the multi-user * buffer pool should be used. @@ -1536,7 +1534,7 @@ RelationPurgeLocalRelation(bool xactCommitted) List *l = newlyCreatedRelns; Relation reln = lfirst(l); - Assert(reln != NULL && reln->rd_islocal); + Assert(reln != NULL && reln->rd_myxactonly); if (!xactCommitted) { @@ -1545,18 +1543,18 @@ RelationPurgeLocalRelation(bool xactCommitted) * remove the file if we abort. This is so that files for * tables created inside a transaction block get removed. */ - if (reln->rd_istemp) + if (reln->rd_isnoname) { - if (!(reln->rd_tmpunlinked)) + if (!(reln->rd_nonameunlinked)) { smgrunlink(DEFAULT_SMGR, reln); - reln->rd_tmpunlinked = TRUE; + reln->rd_nonameunlinked = TRUE; } } else smgrunlink(DEFAULT_SMGR, reln); } - else if (!IsBootstrapProcessingMode() && !(reln->rd_istemp)) + else if (!IsBootstrapProcessingMode() && !(reln->rd_isnoname)) /* * RelationFlushRelation () below will flush relation @@ -1568,7 +1566,7 @@ RelationPurgeLocalRelation(bool xactCommitted) */ smgrclose(DEFAULT_SMGR, reln); - reln->rd_islocal = FALSE; + reln->rd_myxactonly = FALSE; if (!IsBootstrapProcessingMode()) RelationFlushRelation(&reln, FALSE); diff --git a/src/backend/utils/cache/temprel.c b/src/backend/utils/cache/temprel.c new file mode 100644 index 0000000000..99c75dbe54 --- /dev/null +++ b/src/backend/utils/cache/temprel.c @@ -0,0 +1,165 @@ +/*------------------------------------------------------------------------- + * + * temprel.c-- + * POSTGRES temporary relation handling + * + * Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.1 1999/02/02 03:45:03 momjian Exp $ + * + *------------------------------------------------------------------------- + */ + +/* + * This implements temp tables by modifying the relname cache lookups + * of pg_class. + * When a temp table is created, a linked list of temp table tuples is + * stored here. When a relname cache lookup is done, references to user-named + * temp tables are converted to the internal temp table names. + * + */ + +#include +#include +#include + +#include "postgres.h" +#include "miscadmin.h" +#include "nodes/pg_list.h" +#include "utils/mcxt.h" +#include "utils/temprel.h" +#include "access/htup.h" +#include "access/heapam.h" +#include "catalog/heap.h" +#include "catalog/index.h" +#include "catalog/pg_class.h" + +GlobalMemory CacheCxt; + +/* ---------------- + * global variables + * ---------------- + */ + +static List *temp_rels = NIL; + +typedef struct TempTable +{ + char *user_relname; + HeapTuple pg_class_tuple; +} TempTable; + + +void +create_temp_relation(char *relname, HeapTuple pg_class_tuple) +{ + MemoryContext oldcxt; + TempTable *temp_rel; + + oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); + + temp_rel = palloc(sizeof(TempTable)); + temp_rel->user_relname = palloc(NAMEDATALEN); + + /* save user-supplied name */ + strcpy(temp_rel->user_relname, relname); + + temp_rel->pg_class_tuple = heap_copytuple(pg_class_tuple); + + temp_rels = lcons(temp_rel, temp_rels); + + MemoryContextSwitchTo(oldcxt); +} + +void +remove_all_temp_relations(void) +{ + List *l, *next; + + l = temp_rels; + while (l != NIL) + { + TempTable *temp_rel = lfirst(l); + Form_pg_class classtuple; + + classtuple = (Form_pg_class)GETSTRUCT(temp_rel->pg_class_tuple); + + next = lnext(l); /* do this first, l is deallocated */ + + if (classtuple->relkind != RELKIND_INDEX) + { + char relname[NAMEDATALEN]; + + /* safe from deallocation */ + strcpy(relname, temp_rel->user_relname); + heap_destroy_with_catalog(relname); + } + else + index_destroy(temp_rel->pg_class_tuple->t_data->t_oid); + + l = next; + } +} + +/* we don't have the relname for indexes, so we just pass the oid */ +void +remove_temp_relation(Oid relid) +{ + + MemoryContext oldcxt; + List *l, *prev; + + oldcxt = MemoryContextSwitchTo((MemoryContext) CacheCxt); + + prev = NIL; + l = temp_rels; + while (l != NIL) + { + TempTable *temp_rel = lfirst(l); + + if (temp_rel->pg_class_tuple->t_data->t_oid == relid) + { + pfree(temp_rel->user_relname); + pfree(temp_rel->pg_class_tuple); + pfree(temp_rel); + /* remove from linked list */ + if (prev != NIL) + { + lnext(prev) = lnext(l); + pfree(l); + l = lnext(prev); + } + else + { + temp_rels = lnext(l); + pfree(l); + l = temp_rels; + } + } + else + { + prev = l; + l = lnext(l); + } + + } + + MemoryContextSwitchTo(oldcxt); +} + +HeapTuple +get_temp_rel_by_name(char *user_relname) +{ + List *l; + + foreach(l, temp_rels) + { + TempTable *temp_rel = lfirst(l); + + if (strcmp(temp_rel->user_relname, user_relname) == 0) + return temp_rel->pg_class_tuple; + } + return NULL; +} diff --git a/src/backend/utils/init/enbl.c b/src/backend/utils/init/enbl.c index 7312c4fa70..06a2d47455 100644 --- a/src/backend/utils/init/enbl.c +++ b/src/backend/utils/init/enbl.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/init/Attic/enbl.c,v 1.4 1998/09/01 03:26:49 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/init/Attic/enbl.c,v 1.5 1999/02/02 03:45:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,7 +38,7 @@ BypassEnable(int *enableCountInOutP, bool on) return (bool) (*enableCountInOutP >= 2); } - AssertState(*enableCountInOutP >= 1); + Assert(*enableCountInOutP >= 1); *enableCountInOutP -= 1; diff --git a/src/backend/utils/sort/psort.c b/src/backend/utils/sort/psort.c index 09bbd877ef..9d6a9f3664 100644 --- a/src/backend/utils/sort/psort.c +++ b/src/backend/utils/sort/psort.c @@ -4,7 +4,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: psort.c,v 1.47 1999/01/17 06:19:02 momjian Exp $ + * $Id: psort.c,v 1.48 1999/02/02 03:45:12 momjian Exp $ * * NOTES * Sorts the first relation into the second relation. @@ -1019,9 +1019,8 @@ gettape() tp = (struct tapelst *) palloc((unsigned) sizeof(struct tapelst)); - snprintf(uniqueName, MAXPGPATH - 1, "%spg_psort.%d.%d", - TEMPDIR, (int) MyProcPid, uniqueFileId); - uniqueFileId++; + snprintf(uniqueName, MAXPGPATH - 1, "%spg_psort.%d.%u", + TEMPDIR, (int) MyProcPid, uniqueFileId++); tapeinit = 1; diff --git a/src/bin/psql/psqlHelp.h b/src/bin/psql/psqlHelp.h index 7e3399332f..833e6defc9 100644 --- a/src/bin/psql/psqlHelp.h +++ b/src/bin/psql/psqlHelp.h @@ -5,7 +5,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: psqlHelp.h,v 1.54 1998/10/14 05:10:02 momjian Exp $ + * $Id: psqlHelp.h,v 1.55 1999/02/02 03:45:15 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -124,7 +124,7 @@ static struct _helpStruct QL_HELP[] = { {"create table", "create a new table", "\ -\tCREATE TABLE class_name\n\ +\tCREATE [TEMP] TABLE class_name\n\ \t(attr1 type1 [DEFAULT expression] [NOT NULL], ...attrN)\n\ \t[INHERITS (class_name1, ...class_nameN)\n\ \t[[CONSTRAINT name] CHECK condition1, ...conditionN] ]\n\ @@ -315,7 +315,7 @@ static struct _helpStruct QL_HELP[] = { "retrieve tuples", "\ \tSELECT [DISTINCT [ON attrN]] expr1 [AS attr1], ...exprN\n\ -\t[INTO [TABLE] class_name]\n\ +\t[INTO [TEMP] [TABLE] class_name]\n\ \t[FROM from_list]\n\ \t[WHERE qual]\n\ \t[GROUP BY group_list]\n\ diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h index 545bc7c5b8..efba3d2cb0 100644 --- a/src/include/catalog/heap.h +++ b/src/include/catalog/heap.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: heap.h,v 1.16 1998/09/01 04:34:41 momjian Exp $ + * $Id: heap.h,v 1.17 1999/02/02 03:45:16 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -15,15 +15,17 @@ #include -extern Relation heap_create(char *relname, TupleDesc att); +extern Oid RelnameFindRelid(char *relname); +extern Relation heap_create(char *relname, TupleDesc att, + bool isnoname, bool istemp); extern Oid heap_create_with_catalog(char *relname, - TupleDesc tupdesc, char relkind); + TupleDesc tupdesc, char relkind, bool istemp); extern void heap_destroy_with_catalog(char *relname); extern void heap_destroy(Relation rel); -extern void InitTempRelList(void); -extern void DestroyTempRels(void); +extern void InitNoNameRelList(void); +extern void DestroyNoNameRels(void); #endif /* HEAP_H */ diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 32fd65c69e..116476c876 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: parsenodes.h,v 1.68 1999/01/21 22:48:20 momjian Exp $ + * $Id: parsenodes.h,v 1.69 1999/02/02 03:45:21 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -43,6 +43,7 @@ typedef struct Query char *into; /* portal (cursor) name */ bool isPortal; /* is this a retrieve into portal? */ bool isBinary; /* binary portal? */ + bool isTemp; /* is 'into' a temp table? */ bool unionall; /* union without unique sort */ bool hasAggs; /* has aggregates in target list */ bool hasSubLinks; /* has subquery SubLink */ @@ -138,6 +139,7 @@ typedef struct CopyStmt typedef struct CreateStmt { NodeTag type; + bool istemp; /* is this a temp table? */ char *relname; /* the relation to create */ List *tableElts; /* column definitions list of Column */ List *inhRelnames; /* relations to inherit from list of Value @@ -662,6 +664,7 @@ typedef struct SelectStmt List *sortClause; /* sort clause (a list of SortGroupBy's) */ char *portalname; /* the portal (cursor) to create */ bool binary; /* a binary (internal) portal? */ + bool istemp; /* into is a temp table */ bool unionall; /* union without unique sort */ Node *limitOffset; /* # of result tuples to skip */ Node *limitCount; /* # of result tuples to return */ diff --git a/src/include/optimizer/internal.h b/src/include/optimizer/internal.h index 0ebcffc78a..76327c0327 100644 --- a/src/include/optimizer/internal.h +++ b/src/include/optimizer/internal.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: internal.h,v 1.11 1998/09/01 04:37:08 momjian Exp $ + * $Id: internal.h,v 1.12 1999/02/02 03:45:24 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -86,6 +86,6 @@ extern int BushyPlanFlag; /*#define joininfo_inactive(joininfo) joininfo->inactive */ /* GEQO switch according to number of relations in a query */ -#define GEQO_RELS 8 +#define GEQO_RELS 6 #endif /* INTERNAL_H */ diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index 456b92305c..3e06e58413 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: rel.h,v 1.20 1998/09/01 04:39:29 momjian Exp $ + * $Id: rel.h,v 1.21 1999/02/02 03:45:28 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -49,10 +49,10 @@ typedef struct RelationData File rd_fd; /* open file descriptor */ int rd_nblocks; /* number of blocks in rel */ uint16 rd_refcnt; /* reference count */ - bool rd_islocal; /* uses the local buffer mgr */ + bool rd_myxactonly; /* uses the local buffer mgr */ bool rd_isnailed; /* rel is nailed in cache */ - bool rd_istemp; /* rel is a temp rel */ - bool rd_tmpunlinked; /* temp rel already unlinked */ + bool rd_isnoname; /* rel has no name */ + bool rd_nonameunlinked; /* noname rel already unlinked */ Form_pg_am rd_am; /* AM tuple */ Form_pg_class rd_rel; /* RELATION tuple */ Oid rd_id; /* relations's object id */ diff --git a/src/include/utils/temprel.h b/src/include/utils/temprel.h new file mode 100644 index 0000000000..135f28c8ad --- /dev/null +++ b/src/include/utils/temprel.h @@ -0,0 +1,25 @@ +/*------------------------------------------------------------------------- + * + * temprel.h-- + * Temporary relation functions + * + * + * Copyright (c) 1994, Regents of the University of California + * + * $Id: temprel.h,v 1.1 1999/02/02 03:45:28 momjian Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef TEMPREL_H +#define TEMPREL_H + +#include "access/htup.h" +#include "access/attnum.h" + +void create_temp_relation(char *relname, HeapTuple pg_class_tuple); +void remove_all_temp_relations(void); +void remove_temp_relation(Oid relid); +HeapTuple get_temp_rel_by_name(char *user_relname); + +#endif /* TEMPREL_H */ + diff --git a/src/man/copy.l b/src/man/copy.l index 9372a8f92e..d0bbec62ea 100644 --- a/src/man/copy.l +++ b/src/man/copy.l @@ -1,6 +1,6 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/copy.l,v 1.6 1998/06/24 13:21:24 momjian Exp $ +.\" $Header: /cvsroot/pgsql/src/man/Attic/copy.l,v 1.7 1999/02/02 03:45:31 momjian Exp $ .TH COPY SQL 11/05/95 PostgreSQL PostgreSQL .SH NAME copy - copy data to or from a class from or to a Unix file. @@ -93,8 +93,8 @@ encountered. .PP The backslash character has special meaning. .BR NULL -attributes are output as \\N. -A literal backslash character is output as two consecutive backslashes. +attributes are represented as \\N. +A literal backslash character is represented as two consecutive backslashes. A literal tab character is represented as a backslash and a tab. A literal newline character is represented as a backslash and a newline. When loading ASCII data not generated by PostgreSQL, you will need to diff --git a/src/man/create_table.l b/src/man/create_table.l index 0082ce2611..b374bf1b67 100644 --- a/src/man/create_table.l +++ b/src/man/create_table.l @@ -1,12 +1,12 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/create_table.l,v 1.22 1998/10/14 02:54:29 momjian Exp $ +.\" $Header: /cvsroot/pgsql/src/man/Attic/create_table.l,v 1.23 1999/02/02 03:45:32 momjian Exp $ .TH "CREATE TABLE" SQL 09/25/97 PostgreSQL .SH NAME create table - create a new class .SH SYNOPSIS .nf -\fBcreate table\fR classname +\fBcreate\fR [\fBtemp\fR] \fBtable\fR classname \fB(\fP attname type [\fBdefault\fP value] diff --git a/src/man/select.l b/src/man/select.l index 64c89e7f7f..5853212a3f 100644 --- a/src/man/select.l +++ b/src/man/select.l @@ -1,6 +1,6 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/select.l,v 1.10 1998/07/12 04:49:47 momjian Exp $ +.\" $Header: /cvsroot/pgsql/src/man/Attic/select.l,v 1.11 1999/02/02 03:45:32 momjian Exp $ .TH SELECT SQL 11/05/95 PostgreSQL PostgreSQL .SH NAME select - retrieve instances from a class @@ -9,7 +9,7 @@ select - retrieve instances from a class \fBselect\fR [distinct [on attr_name]] expression1 [\fBas\fR attr_name-1] {, expression-1 [\fBas\fR attr_name-i]} - [\fBinto\fR [\fBtable\fR] classname] + [\fBinto\fR [\fBtemp\fR] [\fBtable\fR] classname] [\fBfrom\fR from-list] [\fBwhere\fR where-clause] [\fBgroup by\fR attr_name1 {, attr_name-i....}] diff --git a/src/man/set.l b/src/man/set.l index 609a88da7a..3ce8896cd4 100644 --- a/src/man/set.l +++ b/src/man/set.l @@ -1,6 +1,6 @@ .\" This is -*-nroff-*- .\" XXX standard disclaimer belongs here.... -.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.11 1998/10/14 05:10:12 momjian Exp $ +.\" $Header: /cvsroot/pgsql/src/man/Attic/set.l,v 1.12 1999/02/02 03:45:33 momjian Exp $ .TH SET SQL 05/14/97 PostgreSQL PostgreSQL .SH NAME set - set run-time parameters for session @@ -44,8 +44,10 @@ determines the output format for the date and time data types. .IR GEQO enables or disables the genetic optimizer algorithm. This algorithm is .IR on -by default, which used GEQO for statements of eight or more tables. -See the GEQO README for more information. +by default, which used GEQO for statements of six or more tables. +Set the +.IR Programmer's Guide +for more information. .ce 1 \fBGEQO Values\fR diff --git a/src/pl/plpgsql/src/scan.c b/src/pl/plpgsql/src/scan.c index 5f98d0b512..7736b66a82 100644 --- a/src/pl/plpgsql/src/scan.c +++ b/src/pl/plpgsql/src/scan.c @@ -1,7 +1,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.c,v 1.3 1999/01/28 11:50:42 wieck Exp $ + * /master/usr.bin/lex/skel.c,v 1.3 1997/09/25 00:10:23 jch Exp */ #define FLEX_SCANNER @@ -126,6 +126,7 @@ extern FILE *yyin, *yyout; { \ /* Undo effects of setting up yytext. */ \ *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ @@ -235,7 +236,7 @@ void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); @@ -281,13 +282,15 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); */ #define YY_DO_BEFORE_ACTION \ yytext_ptr = yy_bp; \ - yytext_ptr -= yy_more_len; \ - yyleng = (int) (yy_cp - yytext_ptr); \ + yyleng = (int) (yy_cp - yy_bp); \ yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ - if ( yyleng >= YYLMAX ) \ + if ( yyleng + yy_more_offset >= YYLMAX ) \ YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ - yy_flex_strncpy( yytext, yytext_ptr, yyleng + 1 ); \ + yy_flex_strncpy( &yytext[yy_more_offset], yytext_ptr, yyleng + 1 ); \ + yyleng += yy_more_offset; \ + yy_prev_more_offset = yy_more_offset; \ + yy_more_offset = 0; \ yy_c_buf_p = yy_cp; #define YY_NUM_RULES 60 @@ -606,10 +609,16 @@ yy_cp = yy_full_match; /* restore poss. backed-over text */ \ ++yy_lp; \ goto find_rule; \ } -static int yy_more_flag = 0; -static int yy_more_len = 0; -#define yymore() (yy_more_flag = 1) -#define YY_MORE_ADJ yy_more_len +static int yy_more_offset = 0; +static int yy_prev_more_offset = 0; +#define yymore() (yy_more_offset = yy_flex_strlen( yytext )) +#define YY_NEED_STRLEN +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET \ + { \ + yy_more_offset = yy_prev_more_offset; \ + yyleng -= yy_more_offset; \ + } #ifndef YYLMAX #define YYLMAX 8192 #endif @@ -624,7 +633,7 @@ char *yytext_ptr; * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.c,v 1.3 1999/01/28 11:50:42 wieck Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/scan.c,v 1.4 1999/02/02 03:45:33 momjian Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -688,6 +697,10 @@ static void yyunput YY_PROTO(( int c, char *buf_ptr )); static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); #endif +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput YY_PROTO(( void )); @@ -873,12 +886,6 @@ YY_DECL while ( 1 ) /* loops until end-of-file is reached */ { - yy_more_len = 0; - if ( yy_more_flag ) - { - yy_more_len = yyleng; - yy_more_flag = 0; - } yy_cp = yy_c_buf_p; /* Support of yytext. */ @@ -1291,6 +1298,7 @@ ECHO; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) { @@ -1436,7 +1444,7 @@ static int yy_get_next_buffer() { /* Don't try to fill the buffer, so this is an EOF. */ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) { - /* We matched a singled characater, the EOB, so + /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; @@ -1463,7 +1471,7 @@ static int yy_get_next_buffer() /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - yy_n_chars = 0; + yy_current_buffer->yy_n_chars = yy_n_chars = 0; else { @@ -1518,6 +1526,8 @@ static int yy_get_next_buffer() /* Read in more data. */ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; } if ( yy_n_chars == 0 ) @@ -1601,8 +1611,9 @@ yy_state_type yy_current_state; yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; yy_is_jam = (yy_current_state == 211); + if ( ! yy_is_jam ) + *yy_state_ptr++ = yy_current_state; return yy_is_jam ? 0 : yy_current_state; } @@ -1636,7 +1647,8 @@ register char *yy_bp; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); @@ -1676,19 +1688,31 @@ static int input() else { /* need more input */ - yytext_ptr = yy_c_buf_p; + int offset = yy_c_buf_p - yytext_ptr; ++yy_c_buf_p; switch ( yy_get_next_buffer() ) { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + case EOB_ACT_END_OF_FILE: { if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; return EOF; - } if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; @@ -1700,17 +1724,8 @@ static int input() } case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + yy_c_buf_p = yytext_ptr + offset; break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif } } } @@ -1877,6 +1892,9 @@ YY_BUFFER_STATE b; #endif { + if ( ! b ) + return; + b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes @@ -1936,17 +1954,17 @@ yy_size_t size; #ifndef YY_NO_SCAN_STRING #ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *str ) +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) #else -YY_BUFFER_STATE yy_scan_string( str ) -yyconst char *str; +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; #endif { int len; - for ( len = 0; str[len]; ++len ) + for ( len = 0; yy_str[len]; ++len ) ; - return yy_scan_bytes( str, len ); + return yy_scan_bytes( yy_str, len ); } #endif @@ -2067,7 +2085,7 @@ char msg[]; { \ /* Undo effects of setting up yytext. */ \ yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ + yy_c_buf_p = yytext + n; \ yy_hold_char = *yy_c_buf_p; \ *yy_c_buf_p = '\0'; \ yyleng = n; \ @@ -2093,6 +2111,22 @@ int n; } #endif +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + #ifdef YY_USE_PROTOS static void *yy_flex_alloc( yy_size_t size ) diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 7b08aed5a9..62538fc78e 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -1,31 +1,31 @@ -QUERY: CREATE TABLE temp (initial int4); -QUERY: ALTER TABLE temp ADD COLUMN a int4; -QUERY: ALTER TABLE temp ADD COLUMN b name; -QUERY: ALTER TABLE temp ADD COLUMN c text; -QUERY: ALTER TABLE temp ADD COLUMN d float8; -QUERY: ALTER TABLE temp ADD COLUMN e float4; -QUERY: ALTER TABLE temp ADD COLUMN f int2; -QUERY: ALTER TABLE temp ADD COLUMN g polygon; -QUERY: ALTER TABLE temp ADD COLUMN h abstime; -QUERY: ALTER TABLE temp ADD COLUMN i char; -QUERY: ALTER TABLE temp ADD COLUMN j abstime[]; -QUERY: ALTER TABLE temp ADD COLUMN k dt; +QUERY: CREATE TABLE tmp (initial int4); +QUERY: ALTER TABLE tmp ADD COLUMN a int4; +QUERY: ALTER TABLE tmp ADD COLUMN b name; +QUERY: ALTER TABLE tmp ADD COLUMN c text; +QUERY: ALTER TABLE tmp ADD COLUMN d float8; +QUERY: ALTER TABLE tmp ADD COLUMN e float4; +QUERY: ALTER TABLE tmp ADD COLUMN f int2; +QUERY: ALTER TABLE tmp ADD COLUMN g polygon; +QUERY: ALTER TABLE tmp ADD COLUMN h abstime; +QUERY: ALTER TABLE tmp ADD COLUMN i char; +QUERY: ALTER TABLE tmp ADD COLUMN j abstime[]; +QUERY: ALTER TABLE tmp ADD COLUMN k dt; ERROR: type name lookup of dt failed -QUERY: ALTER TABLE temp ADD COLUMN l tid; -QUERY: ALTER TABLE temp ADD COLUMN m xid; -QUERY: ALTER TABLE temp ADD COLUMN n oid8; -QUERY: ALTER TABLE temp ADD COLUMN p smgr; -QUERY: ALTER TABLE temp ADD COLUMN q point; -QUERY: ALTER TABLE temp ADD COLUMN r lseg; -QUERY: ALTER TABLE temp ADD COLUMN s path; -QUERY: ALTER TABLE temp ADD COLUMN t box; -QUERY: ALTER TABLE temp ADD COLUMN u tinterval; -QUERY: ALTER TABLE temp ADD COLUMN v datetime; -QUERY: ALTER TABLE temp ADD COLUMN w timespan; -QUERY: ALTER TABLE temp ADD COLUMN x float8[]; -QUERY: ALTER TABLE temp ADD COLUMN y float4[]; -QUERY: ALTER TABLE temp ADD COLUMN z int2[]; -QUERY: INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, +QUERY: ALTER TABLE tmp ADD COLUMN l tid; +QUERY: ALTER TABLE tmp ADD COLUMN m xid; +QUERY: ALTER TABLE tmp ADD COLUMN n oid8; +QUERY: ALTER TABLE tmp ADD COLUMN p smgr; +QUERY: ALTER TABLE tmp ADD COLUMN q point; +QUERY: ALTER TABLE tmp ADD COLUMN r lseg; +QUERY: ALTER TABLE tmp ADD COLUMN s path; +QUERY: ALTER TABLE tmp ADD COLUMN t box; +QUERY: ALTER TABLE tmp ADD COLUMN u tinterval; +QUERY: ALTER TABLE tmp ADD COLUMN v datetime; +QUERY: ALTER TABLE tmp ADD COLUMN w timespan; +QUERY: ALTER TABLE tmp ADD COLUMN x float8[]; +QUERY: ALTER TABLE tmp ADD COLUMN y float4[]; +QUERY: ALTER TABLE tmp ADD COLUMN z int2[]; +QUERY: INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}', @@ -33,43 +33,43 @@ QUERY: INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t '1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)', '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]', '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); -ERROR: Relation temp does not have attribute k -QUERY: SELECT * FROM temp; +ERROR: Relation tmp does not have attribute k +QUERY: SELECT * FROM tmp; initial|a|b|c|d|e|f|g|h|i|j|l|m|n|p|q|r|s|t|u|v|w|x|y|z -------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- (0 rows) -QUERY: DROP TABLE temp; -QUERY: CREATE TABLE temp ( +QUERY: DROP TABLE tmp; +QUERY: CREATE TABLE tmp ( initial int4 ); -QUERY: ALTER TABLE temp ADD COLUMN a int4; -QUERY: ALTER TABLE temp ADD COLUMN b name; -QUERY: ALTER TABLE temp ADD COLUMN c text; -QUERY: ALTER TABLE temp ADD COLUMN d float8; -QUERY: ALTER TABLE temp ADD COLUMN e float4; -QUERY: ALTER TABLE temp ADD COLUMN f int2; -QUERY: ALTER TABLE temp ADD COLUMN g polygon; -QUERY: ALTER TABLE temp ADD COLUMN h abstime; -QUERY: ALTER TABLE temp ADD COLUMN i char; -QUERY: ALTER TABLE temp ADD COLUMN j abstime[]; -QUERY: ALTER TABLE temp ADD COLUMN k dt; +QUERY: ALTER TABLE tmp ADD COLUMN a int4; +QUERY: ALTER TABLE tmp ADD COLUMN b name; +QUERY: ALTER TABLE tmp ADD COLUMN c text; +QUERY: ALTER TABLE tmp ADD COLUMN d float8; +QUERY: ALTER TABLE tmp ADD COLUMN e float4; +QUERY: ALTER TABLE tmp ADD COLUMN f int2; +QUERY: ALTER TABLE tmp ADD COLUMN g polygon; +QUERY: ALTER TABLE tmp ADD COLUMN h abstime; +QUERY: ALTER TABLE tmp ADD COLUMN i char; +QUERY: ALTER TABLE tmp ADD COLUMN j abstime[]; +QUERY: ALTER TABLE tmp ADD COLUMN k dt; ERROR: type name lookup of dt failed -QUERY: ALTER TABLE temp ADD COLUMN l tid; -QUERY: ALTER TABLE temp ADD COLUMN m xid; -QUERY: ALTER TABLE temp ADD COLUMN n oid8; -QUERY: ALTER TABLE temp ADD COLUMN p smgr; -QUERY: ALTER TABLE temp ADD COLUMN q point; -QUERY: ALTER TABLE temp ADD COLUMN r lseg; -QUERY: ALTER TABLE temp ADD COLUMN s path; -QUERY: ALTER TABLE temp ADD COLUMN t box; -QUERY: ALTER TABLE temp ADD COLUMN u tinterval; -QUERY: ALTER TABLE temp ADD COLUMN v datetime; -QUERY: ALTER TABLE temp ADD COLUMN w timespan; -QUERY: ALTER TABLE temp ADD COLUMN x float8[]; -QUERY: ALTER TABLE temp ADD COLUMN y float4[]; -QUERY: ALTER TABLE temp ADD COLUMN z int2[]; -QUERY: INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, +QUERY: ALTER TABLE tmp ADD COLUMN l tid; +QUERY: ALTER TABLE tmp ADD COLUMN m xid; +QUERY: ALTER TABLE tmp ADD COLUMN n oid8; +QUERY: ALTER TABLE tmp ADD COLUMN p smgr; +QUERY: ALTER TABLE tmp ADD COLUMN q point; +QUERY: ALTER TABLE tmp ADD COLUMN r lseg; +QUERY: ALTER TABLE tmp ADD COLUMN s path; +QUERY: ALTER TABLE tmp ADD COLUMN t box; +QUERY: ALTER TABLE tmp ADD COLUMN u tinterval; +QUERY: ALTER TABLE tmp ADD COLUMN v datetime; +QUERY: ALTER TABLE tmp ADD COLUMN w timespan; +QUERY: ALTER TABLE tmp ADD COLUMN x float8[]; +QUERY: ALTER TABLE tmp ADD COLUMN y float4[]; +QUERY: ALTER TABLE tmp ADD COLUMN z int2[]; +QUERY: INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}', @@ -77,13 +77,13 @@ QUERY: INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t '1 2 3 4 5 6 7 8', 'magnetic disk', '(1.1,1.1)', '(4.1,4.1,3.1,3.1)', '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]', '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); -ERROR: Relation temp does not have attribute k -QUERY: SELECT * FROM temp; +ERROR: Relation tmp does not have attribute k +QUERY: SELECT * FROM tmp; initial|a|b|c|d|e|f|g|h|i|j|l|m|n|p|q|r|s|t|u|v|w|x|y|z -------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- (0 rows) -QUERY: DROP TABLE temp; +QUERY: DROP TABLE tmp; QUERY: ALTER TABLE tenk1 RENAME TO ten_k; QUERY: SELECT unique1 FROM ten_k WHERE unique1 < 20; unique1 diff --git a/src/test/regress/expected/select.out b/src/test/regress/expected/select.out index 587eb53b11..703a5b22aa 100644 --- a/src/test/regress/expected/select.out +++ b/src/test/regress/expected/select.out @@ -173,7 +173,7 @@ unique1|string4 (20 rows) QUERY: SELECT two, stringu1, ten, string4 - INTO TABLE temp + INTO TABLE tmp FROM onek; QUERY: SELECT p.name, p.age FROM person* p; name |age diff --git a/src/test/regress/expected/select_distinct.out b/src/test/regress/expected/select_distinct.out index 346816b157..f148fa9849 100644 --- a/src/test/regress/expected/select_distinct.out +++ b/src/test/regress/expected/select_distinct.out @@ -1,11 +1,11 @@ -QUERY: SELECT DISTINCT two FROM temp; +QUERY: SELECT DISTINCT two FROM tmp; two --- 0 1 (2 rows) -QUERY: SELECT DISTINCT ten FROM temp; +QUERY: SELECT DISTINCT ten FROM tmp; ten --- 0 @@ -20,7 +20,7 @@ ten 9 (10 rows) -QUERY: SELECT DISTINCT string4 FROM temp; +QUERY: SELECT DISTINCT string4 FROM tmp; string4 ------- AAAAxx @@ -30,7 +30,7 @@ VVVVxx (4 rows) QUERY: SELECT DISTINCT two, string4, ten - FROM temp + FROM tmp ORDER BY two using <, string4 using <, ten using <; two|string4|ten ---+-------+--- diff --git a/src/test/regress/expected/select_distinct_on.out b/src/test/regress/expected/select_distinct_on.out index 172cec55d8..70dcab7fe1 100644 --- a/src/test/regress/expected/select_distinct_on.out +++ b/src/test/regress/expected/select_distinct_on.out @@ -1,5 +1,5 @@ QUERY: SELECT DISTINCT ON string4 two, string4, ten - FROM temp + FROM tmp ORDER BY two using <, string4 using <, ten using <; two|string4|ten ---+-------+--- diff --git a/src/test/regress/expected/select_into.out b/src/test/regress/expected/select_into.out index 7bdc6cae28..bdc0f327af 100644 --- a/src/test/regress/expected/select_into.out +++ b/src/test/regress/expected/select_into.out @@ -1,10 +1,10 @@ QUERY: SELECT * - INTO TABLE temp1 - FROM temp + INTO TABLE tmp1 + FROM tmp WHERE onek.unique1 < 2; -QUERY: DROP TABLE temp1; +QUERY: DROP TABLE tmp1; QUERY: SELECT * - INTO TABLE temp1 - FROM temp + INTO TABLE tmp1 + FROM tmp WHERE onek2.unique1 < 2; -QUERY: DROP TABLE temp1; +QUERY: DROP TABLE tmp1; diff --git a/src/test/regress/expected/temp.out b/src/test/regress/expected/temp.out new file mode 100644 index 0000000000..bdd7f6578b --- /dev/null +++ b/src/test/regress/expected/temp.out @@ -0,0 +1,29 @@ +QUERY: CREATE TABLE temptest(col int); +QUERY: CREATE INDEX i_temptest ON temptest(col); +QUERY: CREATE TEMP TABLE temptest(col int); +QUERY: CREATE INDEX i_temptest ON temptest(col); +QUERY: DROP INDEX i_temptest; +QUERY: DROP TABLE temptest; +QUERY: DROP INDEX i_temptest; +QUERY: DROP TABLE temptest; +QUERY: CREATE TABLE temptest(col int); +QUERY: INSERT INTO temptest VALUES (1); +QUERY: CREATE TEMP TABLE temptest(col int); +QUERY: INSERT INTO temptest VALUES (2); +QUERY: SELECT * FROM temptest; +col +--- + 2 +(1 row) + +QUERY: DROP TABLE temptest; +QUERY: SELECT * FROM temptest; +col +--- + 1 +(1 row) + +QUERY: DROP TABLE temptest; +QUERY: CREATE TEMP TABLE temptest(col int); +QUERY: SELECT * FROM temptest; +ERROR: temptest: Table does not exist. diff --git a/src/test/regress/input/constraints.source b/src/test/regress/input/constraints.source index 1c5c0d64f1..a39cb8b0bc 100644 --- a/src/test/regress/input/constraints.source +++ b/src/test/regress/input/constraints.source @@ -122,22 +122,22 @@ DROP SEQUENCE INSERT_SEQ; CREATE SEQUENCE INSERT_SEQ START 4; -CREATE TABLE TEMP (xd INT, yd TEXT, zd INT); +CREATE TABLE tmp (xd INT, yd TEXT, zd INT); -INSERT INTO TEMP VALUES (null, 'Y', null); -INSERT INTO TEMP VALUES (5, '!check failed', null); -INSERT INTO TEMP VALUES (null, 'try again', null); -INSERT INTO INSERT_TBL(y) select yd from TEMP; +INSERT INTO tmp VALUES (null, 'Y', null); +INSERT INTO tmp VALUES (5, '!check failed', null); +INSERT INTO tmp VALUES (null, 'try again', null); +INSERT INTO INSERT_TBL(y) select yd from tmp; SELECT '' AS three, * FROM INSERT_TBL; -INSERT INTO INSERT_TBL SELECT * FROM TEMP WHERE yd = 'try again'; -INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM TEMP WHERE yd = 'try again'; -INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM TEMP WHERE yd = 'try again'; +INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again'; +INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again'; +INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again'; SELECT '' AS four, * FROM INSERT_TBL; -DROP TABLE TEMP; +DROP TABLE tmp; -- -- Check constraints on UPDATE diff --git a/src/test/regress/input/misc.source b/src/test/regress/input/misc.source index 633c50237e..5de5381cff 100644 --- a/src/test/regress/input/misc.source +++ b/src/test/regress/input/misc.source @@ -26,17 +26,17 @@ UPDATE onek -- systems. This non-func update stuff needs to be examined -- more closely. - jolly (2/22/96) -- -UPDATE temp +UPDATE tmp SET stringu1 = reverse_name(onek.stringu1) WHERE onek.stringu1 = 'JBAAAA' and - onek.stringu1 = temp.stringu1; + onek.stringu1 = tmp.stringu1; -UPDATE temp +UPDATE tmp SET stringu1 = reverse_name(onek2.stringu1) WHERE onek2.stringu1 = 'JCAAAA' and - onek2.stringu1 = temp.stringu1; + onek2.stringu1 = tmp.stringu1; -DROP TABLE temp; +DROP TABLE tmp; --UPDATE person* -- SET age = age + 1; diff --git a/src/test/regress/output/constraints.source b/src/test/regress/output/constraints.source index dc49b312dd..a37952cea7 100644 --- a/src/test/regress/output/constraints.source +++ b/src/test/regress/output/constraints.source @@ -148,11 +148,11 @@ eight| 8 QUERY: DELETE FROM INSERT_TBL; QUERY: DROP SEQUENCE INSERT_SEQ; QUERY: CREATE SEQUENCE INSERT_SEQ START 4; -QUERY: CREATE TABLE TEMP (xd INT, yd TEXT, zd INT); -QUERY: INSERT INTO TEMP VALUES (null, 'Y', null); -QUERY: INSERT INTO TEMP VALUES (5, '!check failed', null); -QUERY: INSERT INTO TEMP VALUES (null, 'try again', null); -QUERY: INSERT INTO INSERT_TBL(y) select yd from TEMP; +QUERY: CREATE TABLE tmp (xd INT, yd TEXT, zd INT); +QUERY: INSERT INTO tmp VALUES (null, 'Y', null); +QUERY: INSERT INTO tmp VALUES (5, '!check failed', null); +QUERY: INSERT INTO tmp VALUES (null, 'try again', null); +QUERY: INSERT INTO INSERT_TBL(y) select yd from tmp; NOTICE: insert_seq.nextval: sequence was re-created QUERY: SELECT '' AS three, * FROM INSERT_TBL; three|x|y | z @@ -162,10 +162,10 @@ three|x|y | z |6|try again |-6 (3 rows) -QUERY: INSERT INTO INSERT_TBL SELECT * FROM TEMP WHERE yd = 'try again'; +QUERY: INSERT INTO INSERT_TBL SELECT * FROM tmp WHERE yd = 'try again'; ERROR: ExecAppend: rejected due to CHECK constraint $2 -QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM TEMP WHERE yd = 'try again'; -QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM TEMP WHERE yd = 'try again'; +QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM tmp WHERE yd = 'try again'; +QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM tmp WHERE yd = 'try again'; ERROR: ExecAppend: rejected due to CHECK constraint insert_con QUERY: SELECT '' AS four, * FROM INSERT_TBL; four|x|y | z @@ -176,7 +176,7 @@ four|x|y | z |7|try again |-7 (4 rows) -QUERY: DROP TABLE TEMP; +QUERY: DROP TABLE tmp; QUERY: UPDATE INSERT_TBL SET x = NULL WHERE x = 6; ERROR: ExecReplace: rejected due to CHECK constraint $2 QUERY: UPDATE INSERT_TBL SET x = 6 WHERE x = 6; diff --git a/src/test/regress/output/misc.source b/src/test/regress/output/misc.source index 05b66d9aeb..b5b08e0d91 100644 --- a/src/test/regress/output/misc.source +++ b/src/test/regress/output/misc.source @@ -2,19 +2,19 @@ QUERY: UPDATE onek SET unique1 = onek.unique1 + 1; QUERY: UPDATE onek SET unique1 = onek.unique1 - 1; -QUERY: UPDATE temp +QUERY: UPDATE tmp SET stringu1 = reverse_name(onek.stringu1) WHERE onek.stringu1 = 'JBAAAA' and - onek.stringu1 = temp.stringu1; + onek.stringu1 = tmp.stringu1; NOTICE: Non-functional update, only first update is performed NOTICE: Non-functional update, only first update is performed -QUERY: UPDATE temp +QUERY: UPDATE tmp SET stringu1 = reverse_name(onek2.stringu1) WHERE onek2.stringu1 = 'JCAAAA' and - onek2.stringu1 = temp.stringu1; + onek2.stringu1 = tmp.stringu1; NOTICE: Non-functional update, only first update is performed NOTICE: Non-functional update, only first update is performed -QUERY: DROP TABLE temp; +QUERY: DROP TABLE tmp; QUERY: COPY onek TO '_OBJWD_/results/onek.data'; QUERY: DELETE FROM onek; QUERY: COPY onek FROM '_OBJWD_/results/onek.data'; diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index 5d1d773b05..2be9f021fc 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -1,60 +1,60 @@ -- -- add attribute -- -CREATE TABLE temp (initial int4); +CREATE TABLE tmp (initial int4); -ALTER TABLE temp ADD COLUMN a int4; +ALTER TABLE tmp ADD COLUMN a int4; -ALTER TABLE temp ADD COLUMN b name; +ALTER TABLE tmp ADD COLUMN b name; -ALTER TABLE temp ADD COLUMN c text; +ALTER TABLE tmp ADD COLUMN c text; -ALTER TABLE temp ADD COLUMN d float8; +ALTER TABLE tmp ADD COLUMN d float8; -ALTER TABLE temp ADD COLUMN e float4; +ALTER TABLE tmp ADD COLUMN e float4; -ALTER TABLE temp ADD COLUMN f int2; +ALTER TABLE tmp ADD COLUMN f int2; -ALTER TABLE temp ADD COLUMN g polygon; +ALTER TABLE tmp ADD COLUMN g polygon; -ALTER TABLE temp ADD COLUMN h abstime; +ALTER TABLE tmp ADD COLUMN h abstime; -ALTER TABLE temp ADD COLUMN i char; +ALTER TABLE tmp ADD COLUMN i char; -ALTER TABLE temp ADD COLUMN j abstime[]; +ALTER TABLE tmp ADD COLUMN j abstime[]; -ALTER TABLE temp ADD COLUMN k dt; +ALTER TABLE tmp ADD COLUMN k dt; -ALTER TABLE temp ADD COLUMN l tid; +ALTER TABLE tmp ADD COLUMN l tid; -ALTER TABLE temp ADD COLUMN m xid; +ALTER TABLE tmp ADD COLUMN m xid; -ALTER TABLE temp ADD COLUMN n oid8; +ALTER TABLE tmp ADD COLUMN n oid8; ---ALTER TABLE temp ADD COLUMN o lock; -ALTER TABLE temp ADD COLUMN p smgr; +--ALTER TABLE tmp ADD COLUMN o lock; +ALTER TABLE tmp ADD COLUMN p smgr; -ALTER TABLE temp ADD COLUMN q point; +ALTER TABLE tmp ADD COLUMN q point; -ALTER TABLE temp ADD COLUMN r lseg; +ALTER TABLE tmp ADD COLUMN r lseg; -ALTER TABLE temp ADD COLUMN s path; +ALTER TABLE tmp ADD COLUMN s path; -ALTER TABLE temp ADD COLUMN t box; +ALTER TABLE tmp ADD COLUMN t box; -ALTER TABLE temp ADD COLUMN u tinterval; +ALTER TABLE tmp ADD COLUMN u tinterval; -ALTER TABLE temp ADD COLUMN v datetime; +ALTER TABLE tmp ADD COLUMN v datetime; -ALTER TABLE temp ADD COLUMN w timespan; +ALTER TABLE tmp ADD COLUMN w timespan; -ALTER TABLE temp ADD COLUMN x float8[]; +ALTER TABLE tmp ADD COLUMN x float8[]; -ALTER TABLE temp ADD COLUMN y float4[]; +ALTER TABLE tmp ADD COLUMN y float4[]; -ALTER TABLE temp ADD COLUMN z int2[]; +ALTER TABLE tmp ADD COLUMN z int2[]; -INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, +INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}', @@ -63,67 +63,67 @@ INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]', '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); -SELECT * FROM temp; +SELECT * FROM tmp; -DROP TABLE temp; +DROP TABLE tmp; -- the wolf bug - schema mods caused inconsistent row descriptors -CREATE TABLE temp ( +CREATE TABLE tmp ( initial int4 ); -ALTER TABLE temp ADD COLUMN a int4; +ALTER TABLE tmp ADD COLUMN a int4; -ALTER TABLE temp ADD COLUMN b name; +ALTER TABLE tmp ADD COLUMN b name; -ALTER TABLE temp ADD COLUMN c text; +ALTER TABLE tmp ADD COLUMN c text; -ALTER TABLE temp ADD COLUMN d float8; +ALTER TABLE tmp ADD COLUMN d float8; -ALTER TABLE temp ADD COLUMN e float4; +ALTER TABLE tmp ADD COLUMN e float4; -ALTER TABLE temp ADD COLUMN f int2; +ALTER TABLE tmp ADD COLUMN f int2; -ALTER TABLE temp ADD COLUMN g polygon; +ALTER TABLE tmp ADD COLUMN g polygon; -ALTER TABLE temp ADD COLUMN h abstime; +ALTER TABLE tmp ADD COLUMN h abstime; -ALTER TABLE temp ADD COLUMN i char; +ALTER TABLE tmp ADD COLUMN i char; -ALTER TABLE temp ADD COLUMN j abstime[]; +ALTER TABLE tmp ADD COLUMN j abstime[]; -ALTER TABLE temp ADD COLUMN k dt; +ALTER TABLE tmp ADD COLUMN k dt; -ALTER TABLE temp ADD COLUMN l tid; +ALTER TABLE tmp ADD COLUMN l tid; -ALTER TABLE temp ADD COLUMN m xid; +ALTER TABLE tmp ADD COLUMN m xid; -ALTER TABLE temp ADD COLUMN n oid8; +ALTER TABLE tmp ADD COLUMN n oid8; ---ALTER TABLE temp ADD COLUMN o lock; -ALTER TABLE temp ADD COLUMN p smgr; +--ALTER TABLE tmp ADD COLUMN o lock; +ALTER TABLE tmp ADD COLUMN p smgr; -ALTER TABLE temp ADD COLUMN q point; +ALTER TABLE tmp ADD COLUMN q point; -ALTER TABLE temp ADD COLUMN r lseg; +ALTER TABLE tmp ADD COLUMN r lseg; -ALTER TABLE temp ADD COLUMN s path; +ALTER TABLE tmp ADD COLUMN s path; -ALTER TABLE temp ADD COLUMN t box; +ALTER TABLE tmp ADD COLUMN t box; -ALTER TABLE temp ADD COLUMN u tinterval; +ALTER TABLE tmp ADD COLUMN u tinterval; -ALTER TABLE temp ADD COLUMN v datetime; +ALTER TABLE tmp ADD COLUMN v datetime; -ALTER TABLE temp ADD COLUMN w timespan; +ALTER TABLE tmp ADD COLUMN w timespan; -ALTER TABLE temp ADD COLUMN x float8[]; +ALTER TABLE tmp ADD COLUMN x float8[]; -ALTER TABLE temp ADD COLUMN y float4[]; +ALTER TABLE tmp ADD COLUMN y float4[]; -ALTER TABLE temp ADD COLUMN z int2[]; +ALTER TABLE tmp ADD COLUMN z int2[]; -INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, +INSERT INTO tmp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z) VALUES (4, 'name', 'text', 4.1, 4.1, 2, '(4.1,4.1,3.1,3.1)', 'Mon May 1 00:30:30 1995', 'c', '{Mon May 1 00:30:30 1995, Monday Aug 24 14:43:07 1992, epoch}', @@ -132,9 +132,9 @@ INSERT INTO temp (a, b, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u, '(0,2,4.1,4.1,3.1,3.1)', '(4.1,4.1,3.1,3.1)', '["current" "infinity"]', '1/3', '1,name', '{1.0,2.0,3.0,4.0}', '{1.0,2.0,3.0,4.0}', '{1,2,3,4}'); -SELECT * FROM temp; +SELECT * FROM tmp; -DROP TABLE temp; +DROP TABLE tmp; -- diff --git a/src/test/regress/sql/select.sql b/src/test/regress/sql/select.sql index b57c757948..f5c17ab71c 100644 --- a/src/test/regress/sql/select.sql +++ b/src/test/regress/sql/select.sql @@ -72,7 +72,7 @@ SELECT onek.unique1, onek.string4 -- ORDER BY stringu1 using <; SELECT two, stringu1, ten, string4 - INTO TABLE temp + INTO TABLE tmp FROM onek; -- diff --git a/src/test/regress/sql/select_distinct.sql b/src/test/regress/sql/select_distinct.sql index eb23e6edb4..2bc50d49a1 100644 --- a/src/test/regress/sql/select_distinct.sql +++ b/src/test/regress/sql/select_distinct.sql @@ -1,24 +1,24 @@ -- -- awk '{print $3;}' onek.data | sort -n | uniq -- -SELECT DISTINCT two FROM temp; +SELECT DISTINCT two FROM tmp; -- -- awk '{print $5;}' onek.data | sort -n | uniq -- -SELECT DISTINCT ten FROM temp; +SELECT DISTINCT ten FROM tmp; -- -- awk '{print $16;}' onek.data | sort -d | uniq -- -SELECT DISTINCT string4 FROM temp; +SELECT DISTINCT string4 FROM tmp; -- -- awk '{print $3,$16,$5;}' onek.data | sort -d | uniq | -- sort +0n -1 +1d -2 +2n -3 -- SELECT DISTINCT two, string4, ten - FROM temp + FROM tmp ORDER BY two using <, string4 using <, ten using <; -- diff --git a/src/test/regress/sql/select_distinct_on.sql b/src/test/regress/sql/select_distinct_on.sql index b567830ea8..4dccedc9d7 100644 --- a/src/test/regress/sql/select_distinct_on.sql +++ b/src/test/regress/sql/select_distinct_on.sql @@ -3,6 +3,6 @@ -- test select distinct on -- SELECT DISTINCT ON string4 two, string4, ten - FROM temp + FROM tmp ORDER BY two using <, string4 using <, ten using <; diff --git a/src/test/regress/sql/select_into.sql b/src/test/regress/sql/select_into.sql index 61569b0fe0..8bb90b4f04 100644 --- a/src/test/regress/sql/select_into.sql +++ b/src/test/regress/sql/select_into.sql @@ -1,14 +1,14 @@ SELECT * - INTO TABLE temp1 - FROM temp + INTO TABLE tmp1 + FROM tmp WHERE onek.unique1 < 2; -DROP TABLE temp1; +DROP TABLE tmp1; SELECT * - INTO TABLE temp1 - FROM temp + INTO TABLE tmp1 + FROM tmp WHERE onek2.unique1 < 2; -DROP TABLE temp1; +DROP TABLE tmp1; diff --git a/src/test/regress/sql/temp.sql b/src/test/regress/sql/temp.sql new file mode 100644 index 0000000000..066ce50eb0 --- /dev/null +++ b/src/test/regress/sql/temp.sql @@ -0,0 +1,47 @@ +-- +-- Test temp relations and indexes +-- + +-- test temp table/index masking + +CREATE TABLE temptest(col int); + +CREATE INDEX i_temptest ON temptest(col); + +CREATE TEMP TABLE temptest(col int); + +CREATE INDEX i_temptest ON temptest(col); + +DROP INDEX i_temptest; + +DROP TABLE temptest; + +DROP INDEX i_temptest; + +DROP TABLE temptest; + +-- test temp table selects + +CREATE TABLE temptest(col int); + +INSERT INTO temptest VALUES (1); + +CREATE TEMP TABLE temptest(col int); + +INSERT INTO temptest VALUES (2); + +SELECT * FROM temptest; + +DROP TABLE temptest; + +SELECT * FROM temptest; + +DROP TABLE temptest; + +CREATE TEMP TABLE temptest(col int); + +-- test temp table deletion + +\c regression + +SELECT * FROM temptest; diff --git a/src/test/regress/sql/tests b/src/test/regress/sql/tests index 3c3d30b949..ddc2365d2b 100644 --- a/src/test/regress/sql/tests +++ b/src/test/regress/sql/tests @@ -64,3 +64,4 @@ portals_p2 rules install_plpgsql plpgsql +temp diff --git a/src/tools/make_ctags b/src/tools/make_ctags index ef99564694..b0b04afa07 100755 --- a/src/tools/make_ctags +++ b/src/tools/make_ctags @@ -1,7 +1,7 @@ #!/bin/sh trap "rm -f /tmp/$$" 0 1 2 3 15 rm -f ./tags -find `pwd`/ -type f -name '*.[chyl]' -print|xargs ctags -t -a -f tags +find `pwd`/ -type f -name '*.[chyl]' -print|xargs ctags -d -t -a -f tags sort tags >/tmp/$$ && mv /tmp/$$ tags find . -type d -print |while read DIR