]> granicus.if.org Git - postgresql/blob - src/backend/parser/gram.c
9866cd634fc2a55aab6d5901b12c14d3822805ea
[postgresql] / src / backend / parser / gram.c
1
2 /*  A Bison parser, made from gram.y
3  by  GNU Bison version 1.25
4   */
5
6 #define YYBISON 1  /* Identify Bison output.  */
7
8 #define ACTION  258
9 #define ADD     259
10 #define ALL     260
11 #define ALTER   261
12 #define AND     262
13 #define ANY     263
14 #define AS      264
15 #define ASC     265
16 #define BEGIN_TRANS     266
17 #define BETWEEN 267
18 #define BOTH    268
19 #define BY      269
20 #define CASCADE 270
21 #define CAST    271
22 #define CHAR    272
23 #define CHARACTER       273
24 #define CHECK   274
25 #define CLOSE   275
26 #define COLLATE 276
27 #define COLUMN  277
28 #define COMMIT  278
29 #define CONSTRAINT      279
30 #define CREATE  280
31 #define CROSS   281
32 #define CURRENT 282
33 #define CURRENT_DATE    283
34 #define CURRENT_TIME    284
35 #define CURRENT_TIMESTAMP       285
36 #define CURRENT_USER    286
37 #define CURSOR  287
38 #define DAY_P   288
39 #define DECIMAL 289
40 #define DECLARE 290
41 #define DEFAULT 291
42 #define DELETE  292
43 #define DESC    293
44 #define DISTINCT        294
45 #define DOUBLE  295
46 #define DROP    296
47 #define END_TRANS       297
48 #define EXECUTE 298
49 #define EXISTS  299
50 #define EXTRACT 300
51 #define FETCH   301
52 #define FLOAT   302
53 #define FOR     303
54 #define FOREIGN 304
55 #define FROM    305
56 #define FULL    306
57 #define GRANT   307
58 #define GROUP   308
59 #define HAVING  309
60 #define HOUR_P  310
61 #define IN      311
62 #define INNER_P 312
63 #define INSERT  313
64 #define INTERVAL        314
65 #define INTO    315
66 #define IS      316
67 #define JOIN    317
68 #define KEY     318
69 #define LANGUAGE        319
70 #define LEADING 320
71 #define LEFT    321
72 #define LIKE    322
73 #define LOCAL   323
74 #define MATCH   324
75 #define MINUTE_P        325
76 #define MONTH_P 326
77 #define NATIONAL        327
78 #define NATURAL 328
79 #define NCHAR   329
80 #define NO      330
81 #define NOT     331
82 #define NOTIFY  332
83 #define NULL_P  333
84 #define NUMERIC 334
85 #define ON      335
86 #define OPTION  336
87 #define OR      337
88 #define ORDER   338
89 #define OUTER_P 339
90 #define PARTIAL 340
91 #define POSITION        341
92 #define PRECISION       342
93 #define PRIMARY 343
94 #define PRIVILEGES      344
95 #define PROCEDURE       345
96 #define PUBLIC  346
97 #define REFERENCES      347
98 #define REVOKE  348
99 #define RIGHT   349
100 #define ROLLBACK        350
101 #define SECOND_P        351
102 #define SELECT  352
103 #define SET     353
104 #define SUBSTRING       354
105 #define TABLE   355
106 #define TIME    356
107 #define TIMESTAMP       357
108 #define TO      358
109 #define TRAILING        359
110 #define TRANSACTION     360
111 #define TRIM    361
112 #define UNION   362
113 #define UNIQUE  363
114 #define UPDATE  364
115 #define USING   365
116 #define VALUES  366
117 #define VARCHAR 367
118 #define VARYING 368
119 #define VIEW    369
120 #define WHERE   370
121 #define WITH    371
122 #define WORK    372
123 #define YEAR_P  373
124 #define ZONE    374
125 #define FALSE_P 375
126 #define TRIGGER 376
127 #define TRUE_P  377
128 #define TYPE_P  378
129 #define ABORT_TRANS     379
130 #define AFTER   380
131 #define AGGREGATE       381
132 #define ANALYZE 382
133 #define BACKWARD        383
134 #define BEFORE  384
135 #define BINARY  385
136 #define CLUSTER 386
137 #define COPY    387
138 #define DATABASE        388
139 #define DELIMITERS      389
140 #define DO      390
141 #define EACH    391
142 #define EXPLAIN 392
143 #define EXTEND  393
144 #define FORWARD 394
145 #define FUNCTION        395
146 #define HANDLER 396
147 #define INDEX   397
148 #define INHERITS        398
149 #define INSTEAD 399
150 #define ISNULL  400
151 #define LANCOMPILER     401
152 #define LISTEN  402
153 #define LOAD    403
154 #define LOCK_P  404
155 #define LOCATION        405
156 #define MOVE    406
157 #define NEW     407
158 #define NONE    408
159 #define NOTHING 409
160 #define NOTNULL 410
161 #define OIDS    411
162 #define OPERATOR        412
163 #define PROCEDURAL      413
164 #define RECIPE  414
165 #define RENAME  415
166 #define RESET   416
167 #define RETURNS 417
168 #define ROW     418
169 #define RULE    419
170 #define SEQUENCE        420
171 #define SETOF   421
172 #define SHOW    422
173 #define STATEMENT       423
174 #define STDIN   424
175 #define STDOUT  425
176 #define TRUSTED 426
177 #define VACUUM  427
178 #define VERBOSE 428
179 #define VERSION 429
180 #define ARCHIVE 430
181 #define USER    431
182 #define PASSWORD        432
183 #define CREATEDB        433
184 #define NOCREATEDB      434
185 #define CREATEUSER      435
186 #define NOCREATEUSER    436
187 #define VALID   437
188 #define UNTIL   438
189 #define IDENT   439
190 #define SCONST  440
191 #define Op      441
192 #define ICONST  442
193 #define PARAM   443
194 #define FCONST  444
195 #define OP      445
196 #define UMINUS  446
197 #define TYPECAST        447
198 #define REDUCE  448
199
200 #line 1 "gram.y"
201  /* -*-text-*- */
202
203 /*#define YYDEBUG 1*/
204 /*-------------------------------------------------------------------------
205  *
206  * gram.y--
207  *        POSTGRES SQL YACC rules/actions
208  *
209  * Copyright (c) 1994, Regents of the University of California
210  *
211  *
212  * IDENTIFICATION
213  *        $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.3 1998/02/27 02:40:36 scrappy Exp $
214  *
215  * HISTORY
216  *        AUTHOR                        DATE                    MAJOR EVENT
217  *        Andrew Yu                     Sept, 1994              POSTQUEL to SQL conversion
218  *        Andrew Yu                     Oct, 1994               lispy code conversion
219  *
220  * NOTES
221  *        CAPITALS are used to represent terminal symbols.
222  *        non-capitals are used to represent non-terminals.
223  *        SQL92-specific syntax is separated from plain SQL/Postgres syntax
224  *        to help isolate the non-extensible portions of the parser.
225  *
226  *        if you use list, make sure the datum is a node so that the printing
227  *        routines work
228  *
229  * WARNING
230  *        sometimes we assign constants to makeStrings. Make sure we don't free
231  *        those.
232  *
233  *-------------------------------------------------------------------------
234  */
235 #include <string.h>
236 #include <ctype.h>
237
238 #include "postgres.h"
239 #include "nodes/parsenodes.h"
240 #include "nodes/print.h"
241 #include "parser/gramparse.h"
242 #include "parser/parse_type.h"
243 #include "utils/acl.h"
244 #include "utils/palloc.h"
245 #include "catalog/catname.h"
246 #include "utils/elog.h"
247 #include "access/xact.h"
248
249 static char saved_relname[NAMEDATALEN];  /* need this for complex attributes */
250 static bool QueryIsRule = FALSE;
251 static List *saved_In_Expr = NIL;
252 static Oid      *param_type_info;
253 static int      pfunc_num_args;
254 extern List *parsetree;
255
256
257 /*
258  * If you need access to certain yacc-generated variables and find that
259  * they're static by default, uncomment the next line.  (this is not a
260  * problem, yet.)
261  */
262 /*#define __YYSCLASS*/
263
264 static char *xlateSqlFunc(char *);
265 static char *xlateSqlType(char *);
266 static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
267 static Node *makeRowExpr(char *opr, List *largs, List *rargs);
268 void mapTargetColumns(List *source, List *target);
269 static List *makeConstantList( A_Const *node);
270 static char *FlattenStringList(List *list);
271 static char *fmtId(char *rawid);
272 static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr);
273 static void param_type_init(Oid *typev, int nargs);
274
275 Oid     param_type(int t); /* used in parse_expr.c */
276
277 /* old versions of flex define this as a macro */
278 #if defined(yywrap)
279 #undef yywrap
280 #endif /* yywrap */
281
282 #line 84 "gram.y"
283 typedef union
284 {
285         double                          dval;
286         int                                     ival;
287         char                            chr;
288         char                            *str;
289         bool                            boolean;
290         bool*                           pboolean;       /* for pg_shadow privileges */
291         List                            *list;
292         Node                            *node;
293         Value                           *value;
294
295         Attr                            *attr;
296
297         TypeName                        *typnam;
298         DefElem                         *defelt;
299         ParamString                     *param;
300         SortGroupBy                     *sortgroupby;
301         IndexElem                       *ielem;
302         RangeVar                        *range;
303         RelExpr                         *relexp;
304         A_Indices                       *aind;
305         ResTarget                       *target;
306         ParamNo                         *paramno;
307
308         VersionStmt                     *vstmt;
309         DefineStmt                      *dstmt;
310         RuleStmt                        *rstmt;
311         InsertStmt                      *astmt;
312 } YYSTYPE;
313 #include <stdio.h>
314
315 #ifndef __cplusplus
316 #ifndef __STDC__
317 #define const
318 #endif
319 #endif
320
321
322
323 #define YYFINAL         1597
324 #define YYFLAG          -32768
325 #define YYNTBASE        210
326
327 #define YYTRANSLATE(x) ((unsigned)(x) <= 448 ? yytranslate[x] : 455)
328
329 static const short yytranslate[] = {     0,
330      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
331      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
332      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
333      2,     2,     2,     2,     2,     2,     2,     2,     2,   208,
334    209,   196,   194,   207,   195,   202,   197,     2,     2,     2,
335      2,     2,     2,     2,     2,     2,     2,   199,   200,   192,
336    191,   193,     2,     2,     2,     2,     2,     2,     2,     2,
337      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
338      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
339    203,     2,   204,     2,     2,     2,     2,     2,     2,     2,
340      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
341      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
342      2,     2,     2,   198,     2,     2,     2,     2,     2,     2,
343      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
344      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
345      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
346      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
347      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
348      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
349      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
350      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
351      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
352      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
353      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
354      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
355      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
356      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
357     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
358     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
359     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
360     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
361     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
362     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
363     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
364     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
365     96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
366    106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
367    116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
368    126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
369    136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
370    146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
371    156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
372    166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
373    176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
374    186,   187,   188,   189,   190,   201,   205,   206
375 };
376
377 #if YYDEBUG != 0
378 static const short yyprhs[] = {     0,
379      0,     2,     4,     8,    11,    14,    16,    18,    20,    22,
380     24,    26,    28,    30,    32,    34,    36,    38,    40,    42,
381     44,    46,    48,    50,    52,    54,    56,    58,    60,    62,
382     64,    66,    68,    70,    72,    74,    76,    78,    80,    82,
383     84,    86,    88,    90,    92,    94,    96,    98,   107,   116,
384    120,   124,   125,   127,   129,   130,   132,   134,   135,   139,
385    141,   145,   146,   150,   151,   156,   161,   166,   168,   170,
386    172,   174,   176,   179,   183,   186,   190,   196,   200,   205,
387    209,   216,   222,   225,   228,   236,   238,   240,   242,   244,
388    246,   248,   249,   252,   253,   257,   258,   267,   271,   273,
389    274,   276,   278,   282,   284,   285,   288,   290,   294,   296,
390    301,   304,   307,   309,   312,   318,   322,   324,   326,   328,
391    331,   335,   339,   343,   347,   351,   355,   359,   362,   365,
392    368,   372,   379,   383,   387,   392,   396,   399,   402,   404,
393    406,   411,   413,   418,   420,   424,   426,   431,   436,   442,
394    453,   457,   459,   461,   463,   465,   468,   472,   476,   480,
395    484,   488,   492,   496,   499,   502,   505,   509,   516,   520,
396    524,   529,   533,   537,   541,   545,   548,   551,   554,   557,
397    561,   564,   569,   573,   577,   582,   587,   590,   593,   594,
398    597,   599,   600,   604,   608,   611,   613,   616,   619,   624,
399    625,   629,   630,   637,   641,   642,   646,   648,   650,   655,
400    658,   659,   662,   664,   674,   676,   677,   682,   697,   699,
401    701,   703,   707,   713,   715,   717,   719,   723,   725,   726,
402    728,   730,   732,   736,   737,   739,   741,   743,   745,   751,
403    755,   758,   760,   762,   764,   766,   768,   770,   772,   774,
404    778,   780,   784,   788,   790,   794,   796,   798,   800,   802,
405    805,   809,   813,   818,   823,   825,   827,   828,   830,   832,
406    833,   836,   837,   845,   848,   850,   852,   854,   858,   860,
407    862,   864,   866,   868,   870,   873,   875,   879,   880,   887,
408    899,   901,   902,   905,   906,   908,   910,   914,   916,   923,
409    927,   930,   933,   934,   936,   939,   940,   945,   949,   961,
410    964,   965,   969,   972,   974,   978,   981,   983,   984,   988,
411    990,   992,   994,   996,  1001,  1003,  1005,  1010,  1017,  1019,
412   1021,  1023,  1025,  1027,  1029,  1031,  1033,  1035,  1037,  1041,
413   1045,  1049,  1059,  1061,  1062,  1064,  1065,  1066,  1080,  1082,
414   1084,  1088,  1090,  1092,  1096,  1099,  1102,  1106,  1108,  1110,
415   1112,  1114,  1116,  1118,  1119,  1122,  1125,  1128,  1131,  1134,
416   1137,  1140,  1143,  1145,  1147,  1149,  1151,  1153,  1159,  1162,
417   1167,  1172,  1173,  1175,  1177,  1178,  1182,  1187,  1191,  1197,
418   1199,  1200,  1202,  1203,  1207,  1208,  1210,  1214,  1218,  1220,
419   1222,  1224,  1226,  1228,  1230,  1236,  1241,  1250,  1254,  1255,
420   1259,  1261,  1264,  1269,  1272,  1279,  1294,  1305,  1309,  1310,
421   1315,  1317,  1325,  1329,  1330,  1332,  1333,  1335,  1339,  1341,
422   1342,  1346,  1347,  1349,  1353,  1356,  1361,  1364,  1367,  1370,
423   1373,  1375,  1377,  1378,  1380,  1381,  1383,  1385,  1389,  1393,
424   1394,  1396,  1400,  1402,  1406,  1408,  1411,  1412,  1421,  1424,
425   1425,  1429,  1434,  1436,  1440,  1443,  1445,  1448,  1451,  1454,
426   1457,  1459,  1461,  1463,  1464,  1466,  1467,  1472,  1477,  1478,
427   1480,  1484,  1486,  1490,  1492,  1495,  1496,  1498,  1501,  1505,
428   1510,  1511,  1515,  1520,  1521,  1524,  1526,  1529,  1531,  1533,
429   1535,  1537,  1539,  1541,  1544,  1547,  1550,  1553,  1555,  1558,
430   1560,  1562,  1566,  1567,  1573,  1577,  1578,  1584,  1588,  1589,
431   1594,  1596,  1601,  1604,  1606,  1610,  1613,  1615,  1616,  1620,
432   1621,  1624,  1625,  1627,  1630,  1632,  1635,  1637,  1639,  1641,
433   1643,  1645,  1647,  1651,  1652,  1654,  1658,  1662,  1666,  1670,
434   1674,  1678,  1679,  1681,  1683,  1691,  1700,  1708,  1716,  1724,
435   1732,  1740,  1748,  1756,  1764,  1773,  1782,  1791,  1800,  1809,
436   1818,  1827,  1836,  1845,  1854,  1863,  1872,  1881,  1890,  1899,
437   1908,  1916,  1924,  1932,  1940,  1948,  1956,  1964,  1972,  1976,
438   1980,  1982,  1985,  1987,  1989,  1991,  1994,  1998,  2002,  2006,
439   2010,  2014,  2018,  2022,  2025,  2028,  2031,  2035,  2042,  2046,
440   2050,  2054,  2059,  2062,  2065,  2070,  2074,  2079,  2081,  2083,
441   2088,  2090,  2095,  2097,  2102,  2107,  2112,  2117,  2123,  2129,
442   2135,  2140,  2143,  2147,  2150,  2155,  2159,  2164,  2168,  2173,
443   2179,  2186,  2187,  2194,  2195,  2203,  2209,  2215,  2221,  2227,
444   2233,  2239,  2245,  2251,  2258,  2265,  2272,  2279,  2286,  2293,
445   2300,  2307,  2314,  2321,  2328,  2335,  2342,  2349,  2356,  2363,
446   2367,  2371,  2374,  2377,  2379,  2381,  2384,  2388,  2392,  2396,
447   2400,  2403,  2406,  2409,  2413,  2420,  2424,  2428,  2431,  2434,
448   2438,  2443,  2445,  2447,  2452,  2454,  2459,  2461,  2466,  2471,
449   2477,  2483,  2489,  2494,  2499,  2506,  2507,  2509,  2513,  2517,
450   2521,  2522,  2526,  2527,  2530,  2532,  2535,  2539,  2543,  2547,
451   2551,  2554,  2558,  2565,  2569,  2573,  2576,  2579,  2581,  2585,
452   2590,  2595,  2600,  2606,  2612,  2618,  2623,  2627,  2628,  2631,
453   2632,  2635,  2636,  2640,  2643,  2645,  2647,  2649,  2651,  2655,
454   2657,  2659,  2661,  2665,  2669,  2673,  2675,  2679,  2683,  2687,
455   2689,  2691,  2696,  2699,  2703,  2707,  2709,  2713,  2715,  2719,
456   2721,  2723,  2724,  2726,  2728,  2730,  2732,  2734,  2736,  2738,
457   2740,  2742,  2744,  2746,  2748,  2750,  2752,  2755,  2757,  2759,
458   2761,  2763,  2765,  2767,  2769,  2771,  2773,  2775,  2777,  2779,
459   2781,  2783,  2785,  2787,  2789,  2791,  2793,  2795,  2797,  2799,
460   2801,  2803,  2805,  2807,  2809,  2811,  2813,  2815,  2817,  2819,
461   2821,  2823,  2825,  2827,  2829,  2831,  2833,  2835,  2837,  2839,
462   2841,  2843,  2845,  2847,  2849,  2851,  2853,  2855,  2857,  2859,
463   2861,  2863
464 };
465
466 static const short yyrhs[] = {   211,
467      0,   212,     0,   211,   212,   200,     0,   211,   212,     0,
468    212,   200,     0,   227,     0,   214,     0,   229,     0,   230,
469      0,   236,     0,   256,     0,   260,     0,   263,     0,   266,
470      0,   213,     0,   342,     0,   276,     0,   284,     0,   265,
471      0,   275,     0,   215,     0,   305,     0,   348,     0,   285,
472      0,   289,     0,   296,     0,   334,     0,   356,     0,   307,
473      0,   306,     0,   315,     0,   318,     0,   317,     0,   313,
474      0,   322,     0,   295,     0,   349,     0,   325,     0,   335,
475      0,   336,     0,   337,     0,   338,     0,   341,     0,   343,
476      0,   222,     0,   225,     0,   226,     0,    25,   176,   450,
477    216,   217,   218,   220,   221,     0,     6,   176,   450,   216,
478    217,   218,   220,   221,     0,    41,   176,   450,     0,   116,
479    177,   450,     0,     0,   178,     0,   179,     0,     0,   180,
480      0,   181,     0,     0,   219,   207,   450,     0,   450,     0,
481     56,    53,   219,     0,     0,   182,   183,   185,     0,     0,
482     98,   452,   103,   223,     0,    98,   452,   191,   223,     0,
483     98,   101,   119,   224,     0,   449,     0,    36,     0,   449,
484      0,    36,     0,    68,     0,   167,   452,     0,   167,   101,
485    119,     0,   161,   452,     0,   161,   101,   119,     0,     6,
486    100,   435,   370,   228,     0,     4,   324,   239,     0,     4,
487    208,   237,   209,     0,    41,   324,   452,     0,     6,   324,
488    452,    98,    36,   245,     0,     6,   324,   452,    41,    36,
489      0,     4,   247,     0,    20,   434,     0,   132,   233,   435,
490    234,   231,   232,   235,     0,   103,     0,    50,     0,   449,
491      0,   169,     0,   170,     0,   130,     0,     0,   116,   156,
492      0,     0,   110,   134,   449,     0,     0,    25,   100,   435,
493    208,   237,   209,   254,   255,     0,   237,   207,   238,     0,
494    238,     0,     0,   239,     0,   246,     0,   452,   389,   240,
495      0,   241,     0,     0,   241,   242,     0,   242,     0,    24,
496    441,   243,     0,   243,     0,    19,   208,   249,   209,     0,
497     36,   245,     0,    76,    78,     0,   108,     0,    88,    63,
498      0,    92,   452,   352,   250,   251,     0,   244,   207,   245,
499      0,   245,     0,   445,     0,    78,     0,   195,   245,     0,
500    245,   194,   245,     0,   245,   195,   245,     0,   245,   197,
501    245,     0,   245,   196,   245,     0,   245,   191,   245,     0,
502    245,   192,   245,     0,   245,   193,   245,     0,   199,   245,
503      0,   200,   245,     0,   198,   245,     0,   245,   205,   389,
504      0,    16,   208,   245,     9,   389,   209,     0,   208,   245,
505    209,     0,   442,   208,   209,     0,   442,   208,   244,   209,
506      0,   245,   186,   245,     0,   186,   245,     0,   245,   186,
507      0,    28,     0,    29,     0,    29,   208,   448,   209,     0,
508     30,     0,    30,   208,   448,   209,     0,    31,     0,    24,
509    441,   247,     0,   247,     0,    19,   208,   249,   209,     0,
510    108,   208,   353,   209,     0,    88,    63,   208,   353,   209,
511      0,    49,    63,   208,   353,   209,    92,   452,   352,   250,
512    251,     0,   248,   207,   249,     0,   249,     0,   445,     0,
513     78,     0,   452,     0,   195,   249,     0,   249,   194,   249,
514      0,   249,   195,   249,     0,   249,   197,   249,     0,   249,
515    196,   249,     0,   249,   191,   249,     0,   249,   192,   249,
516      0,   249,   193,   249,     0,   199,   249,     0,   200,   249,
517      0,   198,   249,     0,   249,   205,   389,     0,    16,   208,
518    249,     9,   389,   209,     0,   208,   249,   209,     0,   442,
519    208,   209,     0,   442,   208,   248,   209,     0,   249,   186,
520    249,     0,   249,    67,   249,     0,   249,     7,   249,     0,
521    249,    82,   249,     0,    76,   249,     0,   186,   249,     0,
522    249,   186,     0,   249,   145,     0,   249,    61,    78,     0,
523    249,   155,     0,   249,    61,    76,    78,     0,   249,    61,
524    122,     0,   249,    61,   120,     0,   249,    61,    76,   122,
525      0,   249,    61,    76,   120,     0,    69,    51,     0,    69,
526     85,     0,     0,   252,   252,     0,   252,     0,     0,    80,
527     37,   253,     0,    80,   109,   253,     0,    75,     3,     0,
528     15,     0,    98,    36,     0,    98,    78,     0,   143,   208,
529    371,   209,     0,     0,   175,   191,   153,     0,     0,    25,
530    100,   435,   257,     9,   362,     0,   208,   258,   209,     0,
531      0,   258,   207,   259,     0,   259,     0,   452,     0,    25,
532    165,   435,   261,     0,   261,   262,     0,     0,   184,   447,
533      0,   184,     0,    25,   264,   158,    64,   449,   141,   279,
534    146,   449,     0,   171,     0,     0,    41,   158,    64,   449,
535      0,    25,   121,   441,   267,   268,    80,   435,   270,    43,
536     90,   441,   208,   273,   209,     0,   129,     0,   125,     0,
537    269,     0,   269,    82,   269,     0,   269,    82,   269,    82,
538    269,     0,    58,     0,    37,     0,   109,     0,    48,   271,
539    272,     0,   136,     0,     0,   163,     0,   168,     0,   274,
540      0,   273,   207,   274,     0,     0,   187,     0,   189,     0,
541    449,     0,   184,     0,    41,   121,   441,    80,   435,     0,
542     25,   278,   277,     0,   279,   280,     0,   157,     0,   123,
543      0,   126,     0,    90,     0,    62,     0,   452,     0,   320,
544      0,   186,     0,   208,   281,   209,     0,   282,     0,   281,
545    207,   282,     0,   279,   191,   283,     0,   279,     0,    36,
546    191,   283,     0,   452,     0,   319,     0,   447,     0,   449,
547      0,   166,   452,     0,    41,   100,   371,     0,    41,   165,
548    371,     0,    46,   286,   287,   288,     0,   151,   286,   287,
549    288,     0,   139,     0,   128,     0,     0,   448,     0,     5,
550      0,     0,    56,   441,     0,     0,    52,   290,    80,   371,
551    103,   293,   294,     0,     5,    89,     0,     5,     0,   291,
552      0,   292,     0,   291,   207,   292,     0,    97,     0,    58,
553      0,   109,     0,    37,     0,   164,     0,    91,     0,    53,
554    452,     0,   452,     0,   116,    52,    81,     0,     0,    93,
555    290,    80,   371,    50,   293,     0,    25,   297,   142,   440,
556     80,   435,   298,   208,   299,   209,   308,     0,   108,     0,
557      0,   110,   437,     0,     0,   300,     0,   301,     0,   300,
558    207,   302,     0,   302,     0,   442,   208,   372,   209,   303,
559    304,     0,   438,   303,   304,     0,   199,   389,     0,    48,
560    389,     0,     0,   439,     0,   110,   439,     0,     0,   138,
561    142,   440,   385,     0,    43,   159,   444,     0,    25,   140,
562    442,   309,   162,   311,   308,     9,   449,    64,   449,     0,
563    116,   280,     0,     0,   208,   310,   209,     0,   208,   209,
564      0,   451,     0,   310,   207,   451,     0,   312,   451,     0,
565    166,     0,     0,    41,   314,   441,     0,   123,     0,   142,
566      0,   164,     0,   114,     0,    41,   126,   441,   316,     0,
567    441,     0,   196,     0,    41,   140,   442,   309,     0,    41,
568    157,   319,   208,   321,   209,     0,   186,     0,   320,     0,
569    194,     0,   195,     0,   196,     0,   197,     0,   192,     0,
570    193,     0,   191,     0,   441,     0,   441,   207,   441,     0,
571    153,   207,   441,     0,   441,   207,   153,     0,     6,   100,
572    435,   370,   160,   324,   323,   103,   441,     0,   441,     0,
573      0,    22,     0,     0,     0,    25,   164,   441,     9,   326,
574     80,   331,   103,   330,   385,   135,   332,   327,     0,   154,
575      0,   349,     0,   203,   328,   204,     0,   329,     0,   349,
576      0,   329,   349,   200,     0,   329,   349,     0,   349,   200,
577      0,   435,   202,   438,     0,   435,     0,    97,     0,   109,
578      0,    37,     0,    58,     0,   144,     0,     0,    77,   435,
579      0,   147,   435,     0,   124,   105,     0,    11,   105,     0,
580     11,   117,     0,    23,   117,     0,    42,   105,     0,    95,
581    117,     0,   124,     0,    11,     0,    23,     0,    42,     0,
582     95,     0,    25,   114,   441,     9,   359,     0,   148,   443,
583      0,    25,   133,   436,   339,     0,   116,   150,   191,   340,
584      0,     0,   449,     0,    36,     0,     0,    41,   133,   436,
585      0,   131,   440,    80,   435,     0,   172,   344,   345,     0,
586    172,   344,   345,   435,   346,     0,   173,     0,     0,   127,
587      0,     0,   208,   347,   209,     0,     0,   441,     0,   347,
588    207,   441,     0,   137,   344,   349,     0,   359,     0,   358,
589      0,   357,     0,   350,     0,   333,     0,   355,     0,    58,
590     60,   435,   352,   351,     0,   111,   208,   432,   209,     0,
591     97,   365,   432,   377,   385,   373,   376,   360,     0,   208,
592    353,   209,     0,     0,   353,   207,   354,     0,   354,     0,
593    452,   415,     0,    37,    50,   435,   385,     0,   149,   435,
594      0,   109,   435,    98,   430,   377,   385,     0,    35,   441,
595    233,    32,    48,    97,   365,   432,   377,   385,   373,   376,
596    360,   366,     0,    97,   365,   432,   363,   377,   385,   373,
597    376,   360,   366,     0,   107,   364,   361,     0,     0,   361,
598    107,   364,   362,     0,   362,     0,    97,   365,   432,   377,
599    385,   373,   376,     0,    60,   100,   435,     0,     0,     5,
600      0,     0,    39,     0,    39,    80,   452,     0,     5,     0,
601      0,    83,    14,   367,     0,     0,   368,     0,   367,   207,
602    368,     0,   452,   369,     0,   452,   202,   452,   369,     0,
603    448,   369,     0,   110,   186,     0,   110,   192,     0,   110,
604    193,     0,    10,     0,    38,     0,     0,   196,     0,     0,
605    372,     0,   441,     0,   372,   207,   441,     0,    53,    14,
606    374,     0,     0,   375,     0,   374,   207,   375,     0,   452,
607      0,   452,   202,   452,     0,   448,     0,    54,   411,     0,
608      0,    50,   208,   386,   380,    62,   386,   382,   209,     0,
609     50,   378,     0,     0,   378,   207,   379,     0,   379,    26,
610     62,   379,     0,   379,     0,   386,     9,   453,     0,   386,
611    452,     0,   386,     0,    73,   380,     0,    51,   381,     0,
612     66,   381,     0,    94,   381,     0,    84,     0,    57,     0,
613    107,     0,     0,    84,     0,     0,    80,   208,   411,   209,
614      0,   110,   208,   383,   209,     0,     0,   384,     0,   383,
615    207,   384,     0,   452,     0,   452,   202,   452,     0,   448,
616      0,   115,   411,     0,     0,   435,     0,   435,   196,     0,
617    203,   204,   388,     0,   203,   448,   204,   388,     0,     0,
618    203,   204,   388,     0,   203,   448,   204,   388,     0,     0,
619    390,   387,     0,   398,     0,   166,   390,     0,   391,     0,
620    403,     0,   393,     0,   392,     0,   184,     0,   123,     0,
621     47,   395,     0,    40,    87,     0,    34,   397,     0,    79,
622    396,     0,    47,     0,    40,    87,     0,    34,     0,    79,
623      0,   208,   448,   209,     0,     0,   208,   448,   207,   448,
624    209,     0,   208,   448,   209,     0,     0,   208,   448,   207,
625    448,   209,     0,   208,   448,   209,     0,     0,   399,   208,
626    448,   209,     0,   399,     0,    18,   400,   401,   402,     0,
627     17,   400,     0,   112,     0,    72,    18,   400,     0,    74,
628    400,     0,   113,     0,     0,    18,    98,   452,     0,     0,
629     21,   452,     0,     0,   404,     0,   102,   405,     0,   101,
630      0,    59,   406,     0,   118,     0,    71,     0,    33,     0,
631     55,     0,    70,     0,    96,     0,   116,   101,   119,     0,
632      0,   404,     0,   118,   103,    71,     0,    33,   103,    55,
633      0,    33,   103,    70,     0,    33,   103,    96,     0,    55,
634    103,    70,     0,    55,   103,    96,     0,     0,   411,     0,
635     78,     0,   208,   409,   209,    56,   208,   362,   209,     0,
636    208,   409,   209,    76,    56,   208,   362,   209,     0,   208,
637    409,   209,   186,   208,   362,   209,     0,   208,   409,   209,
638    194,   208,   362,   209,     0,   208,   409,   209,   195,   208,
639    362,   209,     0,   208,   409,   209,   197,   208,   362,   209,
640      0,   208,   409,   209,   196,   208,   362,   209,     0,   208,
641    409,   209,   192,   208,   362,   209,     0,   208,   409,   209,
642    193,   208,   362,   209,     0,   208,   409,   209,   191,   208,
643    362,   209,     0,   208,   409,   209,   186,     8,   208,   362,
644    209,     0,   208,   409,   209,   194,     8,   208,   362,   209,
645      0,   208,   409,   209,   195,     8,   208,   362,   209,     0,
646    208,   409,   209,   197,     8,   208,   362,   209,     0,   208,
647    409,   209,   196,     8,   208,   362,   209,     0,   208,   409,
648    209,   192,     8,   208,   362,   209,     0,   208,   409,   209,
649    193,     8,   208,   362,   209,     0,   208,   409,   209,   191,
650      8,   208,   362,   209,     0,   208,   409,   209,   186,     5,
651    208,   362,   209,     0,   208,   409,   209,   194,     5,   208,
652    362,   209,     0,   208,   409,   209,   195,     5,   208,   362,
653    209,     0,   208,   409,   209,   197,     5,   208,   362,   209,
654      0,   208,   409,   209,   196,     5,   208,   362,   209,     0,
655    208,   409,   209,   192,     5,   208,   362,   209,     0,   208,
656    409,   209,   193,     5,   208,   362,   209,     0,   208,   409,
657    209,   191,     5,   208,   362,   209,     0,   208,   409,   209,
658    186,   208,   409,   209,     0,   208,   409,   209,   194,   208,
659    409,   209,     0,   208,   409,   209,   195,   208,   409,   209,
660      0,   208,   409,   209,   197,   208,   409,   209,     0,   208,
661    409,   209,   196,   208,   409,   209,     0,   208,   409,   209,
662    192,   208,   409,   209,     0,   208,   409,   209,   193,   208,
663    409,   209,     0,   208,   409,   209,   191,   208,   409,   209,
664      0,   410,   207,   411,     0,   410,   207,   411,     0,   411,
665      0,   428,   415,     0,   408,     0,   445,     0,   452,     0,
666    195,   411,     0,   411,   194,   411,     0,   411,   195,   411,
667      0,   411,   197,   411,     0,   411,   196,   411,     0,   411,
668    192,   411,     0,   411,   193,   411,     0,   411,   191,   411,
669      0,   199,   411,     0,   200,   411,     0,   198,   411,     0,
670    411,   205,   389,     0,    16,   208,   411,     9,   389,   209,
671      0,   208,   407,   209,     0,   411,   186,   411,     0,   411,
672     67,   411,     0,   411,    76,    67,   411,     0,   186,   411,
673      0,   411,   186,     0,   442,   208,   196,   209,     0,   442,
674    208,   209,     0,   442,   208,   416,   209,     0,    28,     0,
675     29,     0,    29,   208,   448,   209,     0,    30,     0,    30,
676    208,   448,   209,     0,    31,     0,    44,   208,   362,   209,
677      0,    45,   208,   417,   209,     0,    86,   208,   418,   209,
678      0,    99,   208,   420,   209,     0,   106,   208,    13,   423,
679    209,     0,   106,   208,    65,   423,   209,     0,   106,   208,
680    104,   423,   209,     0,   106,   208,   423,   209,     0,   411,
681    145,     0,   411,    61,    78,     0,   411,   155,     0,   411,
682     61,    76,    78,     0,   411,    61,   122,     0,   411,    61,
683     76,   120,     0,   411,    61,   120,     0,   411,    61,    76,
684    122,     0,   411,    12,   414,     7,   414,     0,   411,    76,
685     12,   414,     7,   414,     0,     0,   411,    56,   412,   208,
686    424,   209,     0,     0,   411,    76,    56,   413,   208,   426,
687    209,     0,   411,   186,   208,   362,   209,     0,   411,   194,
688    208,   362,   209,     0,   411,   195,   208,   362,   209,     0,
689    411,   197,   208,   362,   209,     0,   411,   196,   208,   362,
690    209,     0,   411,   192,   208,   362,   209,     0,   411,   193,
691    208,   362,   209,     0,   411,   191,   208,   362,   209,     0,
692    411,   186,     8,   208,   362,   209,     0,   411,   194,     8,
693    208,   362,   209,     0,   411,   195,     8,   208,   362,   209,
694      0,   411,   197,     8,   208,   362,   209,     0,   411,   196,
695      8,   208,   362,   209,     0,   411,   192,     8,   208,   362,
696    209,     0,   411,   193,     8,   208,   362,   209,     0,   411,
697    191,     8,   208,   362,   209,     0,   411,   186,     5,   208,
698    362,   209,     0,   411,   194,     5,   208,   362,   209,     0,
699    411,   195,     5,   208,   362,   209,     0,   411,   197,     5,
700    208,   362,   209,     0,   411,   196,     5,   208,   362,   209,
701      0,   411,   192,     5,   208,   362,   209,     0,   411,   193,
702      5,   208,   362,   209,     0,   411,   191,     5,   208,   362,
703    209,     0,   411,     7,   411,     0,   411,    82,   411,     0,
704     76,   411,     0,   428,   415,     0,   445,     0,   452,     0,
705    195,   414,     0,   414,   194,   414,     0,   414,   195,   414,
706      0,   414,   197,   414,     0,   414,   196,   414,     0,   199,
707    414,     0,   200,   414,     0,   198,   414,     0,   414,   205,
708    389,     0,    16,   208,   414,     9,   389,   209,     0,   208,
709    411,   209,     0,   414,   186,   414,     0,   186,   414,     0,
710    414,   186,     0,   442,   208,   209,     0,   442,   208,   416,
711    209,     0,    28,     0,    29,     0,    29,   208,   448,   209,
712      0,    30,     0,    30,   208,   448,   209,     0,    31,     0,
713     86,   208,   418,   209,     0,    99,   208,   420,   209,     0,
714    106,   208,    13,   423,   209,     0,   106,   208,    65,   423,
715    209,     0,   106,   208,   104,   423,   209,     0,   106,   208,
716    423,   209,     0,   203,   411,   204,   415,     0,   203,   411,
717    199,   411,   204,   415,     0,     0,   407,     0,   416,   207,
718    407,     0,   416,   110,   411,     0,   404,    50,   411,     0,
719      0,   419,    56,   419,     0,     0,   428,   415,     0,   445,
720      0,   195,   419,     0,   419,   194,   419,     0,   419,   195,
721    419,     0,   419,   197,   419,     0,   419,   196,   419,     0,
722    198,   419,     0,   419,   205,   389,     0,    16,   208,   419,
723      9,   389,   209,     0,   208,   419,   209,     0,   419,   186,
724    419,     0,   186,   419,     0,   419,   186,     0,   452,     0,
725    442,   208,   209,     0,   442,   208,   416,   209,     0,    86,
726    208,   418,   209,     0,    99,   208,   420,   209,     0,   106,
727    208,    13,   423,   209,     0,   106,   208,    65,   423,   209,
728      0,   106,   208,   104,   423,   209,     0,   106,   208,   423,
729    209,     0,   416,   421,   422,     0,     0,    50,   416,     0,
730      0,    48,   416,     0,     0,   411,    50,   416,     0,    50,
731    416,     0,   416,     0,   362,     0,   425,     0,   445,     0,
732    425,   207,   445,     0,   362,     0,   427,     0,   445,     0,
733    427,   207,   445,     0,   435,   202,   429,     0,   446,   202,
734    429,     0,   438,     0,   429,   202,   438,     0,   429,   202,
735    196,     0,   430,   207,   431,     0,   431,     0,   196,     0,
736    452,   415,   191,   407,     0,   428,   415,     0,   435,   202,
737    196,     0,   432,   207,   433,     0,   433,     0,   407,     9,
738    453,     0,   407,     0,   435,   202,   196,     0,   196,     0,
739    452,     0,     0,   454,     0,   452,     0,   452,     0,   184,
740      0,   452,     0,   184,     0,   452,     0,   452,     0,   452,
741      0,   449,     0,   184,     0,   448,     0,   189,     0,   449,
742      0,   389,   449,     0,   446,     0,   122,     0,   120,     0,
743    188,     0,   448,     0,   189,     0,   187,     0,   185,     0,
744    184,     0,   452,     0,   394,     0,   399,     0,   184,     0,
745    404,     0,     3,     0,   133,     0,   134,     0,    40,     0,
746    136,     0,   140,     0,   142,     0,    63,     0,    64,     0,
747    150,     0,    69,     0,   157,     0,    81,     0,    89,     0,
748    159,     0,   163,     0,   168,     0,   101,     0,   121,     0,
749    123,     0,   176,     0,   182,     0,   174,     0,   119,     0,
750    452,     0,   175,     0,   131,     0,    24,     0,    26,     0,
751     49,     0,    53,     0,   148,     0,    83,     0,    86,     0,
752     87,     0,   100,     0,   105,     0,   122,     0,   120,     0,
753     27,     0,   152,     0
754 };
755
756 #endif
757
758 #if YYDEBUG != 0
759 static const short yyrline[] = { 0,
760    336,   338,   342,   344,   346,   350,   351,   352,   353,   354,
761    355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
762    365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
763    375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
764    385,   386,   387,   388,   389,   390,   391,   401,   422,   443,
765    451,   452,   455,   461,   467,   470,   476,   482,   485,   489,
766    495,   496,   499,   500,   512,   519,   526,   535,   536,   539,
767    540,   541,   544,   550,   558,   564,   580,   590,   594,   602,
768    604,   606,   608,   620,   637,   650,   652,   661,   662,   663,
769    666,   667,   670,   671,   677,   678,   689,   701,   703,   704,
770    707,   708,   711,   723,   724,   727,   728,   731,   738,   742,
771    751,   760,   769,   778,   787,   794,   799,   805,   807,   809,
772    811,   813,   815,   817,   819,   821,   823,   825,   827,   829,
773    831,   836,   841,   843,   848,   854,   860,   862,   865,   867,
774    869,   875,   877,   883,   891,   897,   901,   909,   918,   927,
775    931,   936,   942,   944,   946,   950,   952,   954,   956,   958,
776    960,   962,   964,   966,   968,   970,   972,   977,   982,   984,
777    989,   995,   997,   999,  1001,  1003,  1005,  1007,  1009,  1011,
778   1013,  1015,  1017,  1019,  1021,  1023,  1027,  1028,  1029,  1032,
779   1033,  1034,  1037,  1038,  1041,  1042,  1043,  1044,  1047,  1048,
780   1055,  1056,  1059,  1069,  1070,  1073,  1074,  1077,  1097,  1106,
781   1109,  1112,  1118,  1134,  1146,  1147,  1149,  1165,  1181,  1182,
782   1185,  1190,  1195,  1203,  1204,  1205,  1208,  1214,  1215,  1218,
783   1219,  1222,  1224,  1226,  1230,  1236,  1242,  1243,  1246,  1263,
784   1270,  1278,  1279,  1280,  1283,  1284,  1285,  1286,  1287,  1290,
785   1293,  1294,  1297,  1303,  1309,  1317,  1318,  1319,  1320,  1321,
786   1340,  1347,  1364,  1373,  1384,  1385,  1386,  1389,  1392,  1393,
787   1396,  1397,  1408,  1414,  1418,  1422,  1428,  1432,  1438,  1442,
788   1446,  1450,  1454,  1460,  1464,  1468,  1474,  1478,  1489,  1506,
789   1523,  1524,  1527,  1528,  1531,  1532,  1535,  1536,  1539,  1549,
790   1559,  1560,  1561,  1570,  1571,  1572,  1583,  1600,  1629,  1642,
791   1643,  1646,  1647,  1650,  1652,  1656,  1666,  1667,  1687,  1696,
792   1697,  1698,  1699,  1703,  1712,  1713,  1717,  1727,  1736,  1736,
793   1738,  1739,  1740,  1741,  1742,  1743,  1744,  1747,  1751,  1753,
794   1755,  1768,  1780,  1781,  1784,  1785,  1798,  1800,  1814,  1815,
795   1816,  1819,  1821,  1825,  1827,  1829,  1833,  1841,  1852,  1853,
796   1854,  1855,  1858,  1859,  1871,  1879,  1901,  1907,  1913,  1919,
797   1925,  1931,  1938,  1944,  1950,  1957,  1963,  1979,  2000,  2016,
798   2025,  2026,  2029,  2030,  2031,  2041,  2057,  2074,  2083,  2096,
799   2097,  2100,  2101,  2104,  2106,  2110,  2112,  2124,  2145,  2146,
800   2147,  2148,  2149,  2150,  2161,  2169,  2180,  2196,  2197,  2200,
801   2203,  2207,  2224,  2239,  2264,  2285,  2326,  2345,  2351,  2355,
802   2361,  2365,  2381,  2383,  2387,  2388,  2391,  2392,  2393,  2394,
803   2397,  2398,  2401,  2402,  2405,  2413,  2421,  2431,  2432,  2433,
804   2434,  2435,  2436,  2446,  2447,  2450,  2452,  2454,  2458,  2459,
805   2462,  2463,  2466,  2474,  2482,  2492,  2497,  2509,  2514,  2515,
806   2518,  2520,  2522,  2526,  2532,  2538,  2546,  2547,  2549,  2551,
807   2553,  2555,  2557,  2559,  2563,  2564,  2567,  2568,  2569,  2572,
808   2573,  2576,  2584,  2592,  2602,  2603,  2606,  2613,  2621,  2623,
809   2625,  2629,  2631,  2633,  2648,  2670,  2671,  2678,  2679,  2680,
810   2683,  2691,  2692,  2701,  2707,  2712,  2718,  2726,  2728,  2730,
811   2732,  2736,  2747,  2753,  2760,  2765,  2771,  2779,  2785,  2798,
812   2824,  2832,  2852,  2853,  2854,  2855,  2858,  2859,  2862,  2863,
813   2866,  2867,  2870,  2876,  2883,  2889,  2897,  2898,  2899,  2900,
814   2901,  2902,  2905,  2906,  2909,  2910,  2911,  2912,  2913,  2914,
815   2915,  2916,  2926,  2928,  2940,  2950,  2960,  2973,  2983,  2993,
816   3003,  3013,  3023,  3033,  3043,  3056,  3066,  3076,  3086,  3096,
817   3106,  3116,  3126,  3139,  3149,  3159,  3169,  3179,  3189,  3199,
818   3209,  3213,  3217,  3221,  3225,  3229,  3233,  3237,  3243,  3249,
819   3253,  3267,  3272,  3274,  3276,  3284,  3286,  3288,  3290,  3292,
820   3294,  3296,  3298,  3300,  3302,  3304,  3306,  3322,  3338,  3340,
821   3342,  3344,  3346,  3348,  3350,  3362,  3369,  3376,  3391,  3406,
822   3428,  3443,  3465,  3472,  3482,  3489,  3496,  3504,  3511,  3518,
823   3525,  3532,  3534,  3536,  3538,  3545,  3555,  3565,  3575,  3585,
824   3591,  3597,  3597,  3611,  3611,  3625,  3635,  3645,  3655,  3665,
825   3675,  3685,  3695,  3705,  3715,  3725,  3735,  3745,  3755,  3765,
826   3775,  3785,  3795,  3805,  3815,  3825,  3835,  3845,  3855,  3865,
827   3867,  3869,  3879,  3884,  3886,  3894,  3896,  3898,  3900,  3902,
828   3904,  3906,  3908,  3910,  3926,  3942,  3944,  3946,  3948,  3950,
829   3957,  3964,  3979,  3994,  4016,  4031,  4053,  4060,  4067,  4075,
830   4082,  4089,  4096,  4105,  4112,  4119,  4123,  4125,  4127,  4131,
831   4138,  4142,  4144,  4148,  4153,  4155,  4157,  4159,  4161,  4163,
832   4165,  4167,  4183,  4199,  4201,  4203,  4205,  4207,  4215,  4222,
833   4229,  4236,  4244,  4251,  4258,  4265,  4274,  4278,  4282,  4284,
834   4293,  4295,  4299,  4301,  4303,  4307,  4313,  4317,  4319,  4325,
835   4331,  4335,  4337,  4343,  4351,  4361,  4363,  4365,  4376,  4378,
836   4380,  4395,  4402,  4409,  4428,  4430,  4435,  4442,  4449,  4461,
837   4475,  4476,  4479,  4484,  4496,  4497,  4498,  4499,  4500,  4506,
838   4507,  4509,  4510,  4515,  4522,  4529,  4536,  4544,  4546,  4556,
839   4568,  4575,  4576,  4579,  4580,  4581,  4588,  4590,  4592,  4603,
840   4604,  4605,  4606,  4607,  4608,  4609,  4610,  4611,  4612,  4613,
841   4614,  4615,  4616,  4617,  4618,  4619,  4620,  4621,  4622,  4623,
842   4624,  4625,  4626,  4627,  4628,  4641,  4642,  4643,  4644,  4645,
843   4646,  4647,  4648,  4649,  4650,  4651,  4652,  4653,  4654,  4655,
844   4658,  4665
845 };
846 #endif
847
848
849 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
850
851 static const char * const yytname[] = {   "$","error","$undefined.","ACTION",
852 "ADD","ALL","ALTER","AND","ANY","AS","ASC","BEGIN_TRANS","BETWEEN","BOTH","BY",
853 "CASCADE","CAST","CHAR","CHARACTER","CHECK","CLOSE","COLLATE","COLUMN","COMMIT",
854 "CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP",
855 "CURRENT_USER","CURSOR","DAY_P","DECIMAL","DECLARE","DEFAULT","DELETE","DESC",
856 "DISTINCT","DOUBLE","DROP","END_TRANS","EXECUTE","EXISTS","EXTRACT","FETCH",
857 "FLOAT","FOR","FOREIGN","FROM","FULL","GRANT","GROUP","HAVING","HOUR_P","IN",
858 "INNER_P","INSERT","INTERVAL","INTO","IS","JOIN","KEY","LANGUAGE","LEADING",
859 "LEFT","LIKE","LOCAL","MATCH","MINUTE_P","MONTH_P","NATIONAL","NATURAL","NCHAR",
860 "NO","NOT","NOTIFY","NULL_P","NUMERIC","ON","OPTION","OR","ORDER","OUTER_P",
861 "PARTIAL","POSITION","PRECISION","PRIMARY","PRIVILEGES","PROCEDURE","PUBLIC",
862 "REFERENCES","REVOKE","RIGHT","ROLLBACK","SECOND_P","SELECT","SET","SUBSTRING",
863 "TABLE","TIME","TIMESTAMP","TO","TRAILING","TRANSACTION","TRIM","UNION","UNIQUE",
864 "UPDATE","USING","VALUES","VARCHAR","VARYING","VIEW","WHERE","WITH","WORK","YEAR_P",
865 "ZONE","FALSE_P","TRIGGER","TRUE_P","TYPE_P","ABORT_TRANS","AFTER","AGGREGATE",
866 "ANALYZE","BACKWARD","BEFORE","BINARY","CLUSTER","COPY","DATABASE","DELIMITERS",
867 "DO","EACH","EXPLAIN","EXTEND","FORWARD","FUNCTION","HANDLER","INDEX","INHERITS",
868 "INSTEAD","ISNULL","LANCOMPILER","LISTEN","LOAD","LOCK_P","LOCATION","MOVE",
869 "NEW","NONE","NOTHING","NOTNULL","OIDS","OPERATOR","PROCEDURAL","RECIPE","RENAME",
870 "RESET","RETURNS","ROW","RULE","SEQUENCE","SETOF","SHOW","STATEMENT","STDIN",
871 "STDOUT","TRUSTED","VACUUM","VERBOSE","VERSION","ARCHIVE","USER","PASSWORD",
872 "CREATEDB","NOCREATEDB","CREATEUSER","NOCREATEUSER","VALID","UNTIL","IDENT",
873 "SCONST","Op","ICONST","PARAM","FCONST","OP","'='","'<'","'>'","'+'","'-'","'*'",
874 "'/'","'|'","':'","';'","UMINUS","'.'","'['","']'","TYPECAST","REDUCE","','",
875 "'('","')'","stmtblock","stmtmulti","stmt","CreateUserStmt","AlterUserStmt",
876 "DropUserStmt","user_passwd_clause","user_createdb_clause","user_createuser_clause",
877 "user_group_list","user_group_clause","user_valid_clause","VariableSetStmt",
878 "var_value","zone_value","VariableShowStmt","VariableResetStmt","AddAttrStmt",
879 "alter_clause","ClosePortalStmt","CopyStmt","copy_dirn","copy_file_name","opt_binary",
880 "opt_with_copy","copy_delimiter","CreateStmt","OptTableElementList","OptTableElement",
881 "columnDef","ColQualifier","ColQualList","ColConstraint","ColConstraintElem",
882 "default_list","default_expr","TableConstraint","ConstraintElem","constraint_list",
883 "constraint_expr","key_match","key_actions","key_action","key_reference","OptInherit",
884 "OptArchiveType","CreateAsStmt","OptCreateAs","CreateAsList","CreateAsElement",
885 "CreateSeqStmt","OptSeqList","OptSeqElem","CreatePLangStmt","PLangTrusted","DropPLangStmt",
886 "CreateTrigStmt","TriggerActionTime","TriggerEvents","TriggerOneEvent","TriggerForSpec",
887 "TriggerForOpt","TriggerForType","TriggerFuncArgs","TriggerFuncArg","DropTrigStmt",
888 "DefineStmt","def_rest","def_type","def_name","definition","def_list","def_elem",
889 "def_arg","DestroyStmt","FetchStmt","opt_direction","fetch_how_many","opt_portal_name",
890 "GrantStmt","privileges","operation_commalist","operation","grantee","opt_with_grant",
891 "RevokeStmt","IndexStmt","index_opt_unique","access_method_clause","index_params",
892 "index_list","func_index","index_elem","opt_type","opt_class","ExtendStmt","RecipeStmt",
893 "ProcedureStmt","opt_with","func_args","func_args_list","func_return","set_opt",
894 "RemoveStmt","remove_type","RemoveAggrStmt","aggr_argtype","RemoveFuncStmt",
895 "RemoveOperStmt","all_Op","MathOp","oper_argtypes","RenameStmt","opt_name","opt_column",
896 "RuleStmt","@1","OptStmtList","OptStmtBlock","OptStmtMulti","event_object","event",
897 "opt_instead","NotifyStmt","ListenStmt","TransactionStmt","ViewStmt","LoadStmt",
898 "CreatedbStmt","opt_database","location","DestroydbStmt","ClusterStmt","VacuumStmt",
899 "opt_verbose","opt_analyze","opt_va_list","va_list","ExplainStmt","OptimizableStmt",
900 "InsertStmt","insert_rest","opt_column_list","columnList","columnElem","DeleteStmt",
901 "LockStmt","UpdateStmt","CursorStmt","SelectStmt","union_clause","select_list",
902 "SubSelect","result","opt_union","opt_unique","sort_clause","sortby_list","sortby",
903 "OptUseOp","opt_inh_star","relation_name_list","name_list","group_clause","groupby_list",
904 "groupby","having_clause","from_clause","from_list","from_val","join_expr","join_outer",
905 "join_spec","join_list","join_using","where_clause","relation_expr","opt_array_bounds",
906 "nest_array_bounds","Typename","Array","Generic","generic","Numeric","numeric",
907 "opt_float","opt_numeric","opt_decimal","Character","character","opt_varying",
908 "opt_charset","opt_collate","Datetime","datetime","opt_timezone","opt_interval",
909 "a_expr_or_null","row_expr","row_descriptor","row_list","a_expr","@2","@3","b_expr",
910 "opt_indirection","expr_list","extract_list","position_list","position_expr",
911 "substr_list","substr_from","substr_for","trim_list","in_expr","in_expr_nodes",
912 "not_in_expr","not_in_expr_nodes","attr","attrs","res_target_list","res_target_el",
913 "res_target_list2","res_target_el2","opt_id","relation_name","database_name",
914 "access_method","attr_name","class","index_name","name","func_name","file_name",
915 "recipe_name","AexprConst","ParamNo","NumConst","Iconst","Sconst","UserId","TypeId",
916 "ColId","ColLabel","SpecialRuleRelation", NULL
917 };
918 #endif
919
920 static const short yyr1[] = {     0,
921    210,   210,   211,   211,   211,   212,   212,   212,   212,   212,
922    212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
923    212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
924    212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
925    212,   212,   212,   212,   212,   212,   212,   213,   214,   215,
926    216,   216,   217,   217,   217,   218,   218,   218,   219,   219,
927    220,   220,   221,   221,   222,   222,   222,   223,   223,   224,
928    224,   224,   225,   225,   226,   226,   227,   228,   228,   228,
929    228,   228,   228,   229,   230,   231,   231,   232,   232,   232,
930    233,   233,   234,   234,   235,   235,   236,   237,   237,   237,
931    238,   238,   239,   240,   240,   241,   241,   242,   242,   243,
932    243,   243,   243,   243,   243,   244,   244,   245,   245,   245,
933    245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
934    245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
935    245,   245,   245,   245,   246,   246,   247,   247,   247,   247,
936    248,   248,   249,   249,   249,   249,   249,   249,   249,   249,
937    249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
938    249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
939    249,   249,   249,   249,   249,   249,   250,   250,   250,   251,
940    251,   251,   252,   252,   253,   253,   253,   253,   254,   254,
941    255,   255,   256,   257,   257,   258,   258,   259,   260,   261,
942    261,   262,   262,   263,   264,   264,   265,   266,   267,   267,
943    268,   268,   268,   269,   269,   269,   270,   271,   271,   272,
944    272,   273,   273,   273,   274,   274,   274,   274,   275,   276,
945    277,   278,   278,   278,   279,   279,   279,   279,   279,   280,
946    281,   281,   282,   282,   282,   283,   283,   283,   283,   283,
947    284,   284,   285,   285,   286,   286,   286,   287,   287,   287,
948    288,   288,   289,   290,   290,   290,   291,   291,   292,   292,
949    292,   292,   292,   293,   293,   293,   294,   294,   295,   296,
950    297,   297,   298,   298,   299,   299,   300,   300,   301,   302,
951    303,   303,   303,   304,   304,   304,   305,   306,   307,   308,
952    308,   309,   309,   310,   310,   311,   312,   312,   313,   314,
953    314,   314,   314,   315,   316,   316,   317,   318,   319,   319,
954    320,   320,   320,   320,   320,   320,   320,   321,   321,   321,
955    321,   322,   323,   323,   324,   324,   326,   325,   327,   327,
956    327,   328,   328,   329,   329,   329,   330,   330,   331,   331,
957    331,   331,   332,   332,   333,   334,   335,   335,   335,   335,
958    335,   335,   335,   335,   335,   335,   335,   336,   337,   338,
959    339,   339,   340,   340,   340,   341,   342,   343,   343,   344,
960    344,   345,   345,   346,   346,   347,   347,   348,   349,   349,
961    349,   349,   349,   349,   350,   351,   351,   352,   352,   353,
962    353,   354,   355,   356,   357,   358,   359,   360,   360,   361,
963    361,   362,   363,   363,   364,   364,   365,   365,   365,   365,
964    366,   366,   367,   367,   368,   368,   368,   369,   369,   369,
965    369,   369,   369,   370,   370,   371,   372,   372,   373,   373,
966    374,   374,   375,   375,   375,   376,   376,   377,   377,   377,
967    378,   378,   378,   379,   379,   379,   380,   380,   380,   380,
968    380,   380,   380,   380,   381,   381,   382,   382,   382,   383,
969    383,   384,   384,   384,   385,   385,   386,   386,   387,   387,
970    387,   388,   388,   388,   389,   389,   389,   390,   390,   390,
971    391,   392,   392,   393,   393,   393,   393,   394,   394,   394,
972    394,   395,   395,   396,   396,   396,   397,   397,   397,   398,
973    398,   399,   399,   399,   399,   399,   400,   400,   401,   401,
974    402,   402,   403,   403,   403,   403,   404,   404,   404,   404,
975    404,   404,   405,   405,   406,   406,   406,   406,   406,   406,
976    406,   406,   407,   407,   408,   408,   408,   408,   408,   408,
977    408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
978    408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
979    408,   408,   408,   408,   408,   408,   408,   408,   409,   410,
980    410,   411,   411,   411,   411,   411,   411,   411,   411,   411,
981    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
982    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
983    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
984    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
985    411,   412,   411,   413,   411,   411,   411,   411,   411,   411,
986    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
987    411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
988    411,   411,   414,   414,   414,   414,   414,   414,   414,   414,
989    414,   414,   414,   414,   414,   414,   414,   414,   414,   414,
990    414,   414,   414,   414,   414,   414,   414,   414,   414,   414,
991    414,   414,   414,   415,   415,   415,   416,   416,   416,   417,
992    417,   418,   418,   419,   419,   419,   419,   419,   419,   419,
993    419,   419,   419,   419,   419,   419,   419,   419,   419,   419,
994    419,   419,   419,   419,   419,   419,   420,   420,   421,   421,
995    422,   422,   423,   423,   423,   424,   424,   425,   425,   426,
996    426,   427,   427,   428,   428,   429,   429,   429,   430,   430,
997    430,   431,   431,   431,   432,   432,   433,   433,   433,   433,
998    434,   434,   435,   435,   436,   437,   438,   439,   440,   441,
999    442,   443,   444,   445,   445,   445,   445,   445,   445,   445,
1000    446,   447,   447,   448,   449,   450,   451,   451,   451,   452,
1001    452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
1002    452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
1003    452,   452,   452,   452,   452,   453,   453,   453,   453,   453,
1004    453,   453,   453,   453,   453,   453,   453,   453,   453,   453,
1005    454,   454
1006 };
1007
1008 static const short yyr2[] = {     0,
1009      1,     1,     3,     2,     2,     1,     1,     1,     1,     1,
1010      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1011      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1012      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1013      1,     1,     1,     1,     1,     1,     1,     8,     8,     3,
1014      3,     0,     1,     1,     0,     1,     1,     0,     3,     1,
1015      3,     0,     3,     0,     4,     4,     4,     1,     1,     1,
1016      1,     1,     2,     3,     2,     3,     5,     3,     4,     3,
1017      6,     5,     2,     2,     7,     1,     1,     1,     1,     1,
1018      1,     0,     2,     0,     3,     0,     8,     3,     1,     0,
1019      1,     1,     3,     1,     0,     2,     1,     3,     1,     4,
1020      2,     2,     1,     2,     5,     3,     1,     1,     1,     2,
1021      3,     3,     3,     3,     3,     3,     3,     2,     2,     2,
1022      3,     6,     3,     3,     4,     3,     2,     2,     1,     1,
1023      4,     1,     4,     1,     3,     1,     4,     4,     5,    10,
1024      3,     1,     1,     1,     1,     2,     3,     3,     3,     3,
1025      3,     3,     3,     2,     2,     2,     3,     6,     3,     3,
1026      4,     3,     3,     3,     3,     2,     2,     2,     2,     3,
1027      2,     4,     3,     3,     4,     4,     2,     2,     0,     2,
1028      1,     0,     3,     3,     2,     1,     2,     2,     4,     0,
1029      3,     0,     6,     3,     0,     3,     1,     1,     4,     2,
1030      0,     2,     1,     9,     1,     0,     4,    14,     1,     1,
1031      1,     3,     5,     1,     1,     1,     3,     1,     0,     1,
1032      1,     1,     3,     0,     1,     1,     1,     1,     5,     3,
1033      2,     1,     1,     1,     1,     1,     1,     1,     1,     3,
1034      1,     3,     3,     1,     3,     1,     1,     1,     1,     2,
1035      3,     3,     4,     4,     1,     1,     0,     1,     1,     0,
1036      2,     0,     7,     2,     1,     1,     1,     3,     1,     1,
1037      1,     1,     1,     1,     2,     1,     3,     0,     6,    11,
1038      1,     0,     2,     0,     1,     1,     3,     1,     6,     3,
1039      2,     2,     0,     1,     2,     0,     4,     3,    11,     2,
1040      0,     3,     2,     1,     3,     2,     1,     0,     3,     1,
1041      1,     1,     1,     4,     1,     1,     4,     6,     1,     1,
1042      1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
1043      3,     9,     1,     0,     1,     0,     0,    13,     1,     1,
1044      3,     1,     1,     3,     2,     2,     3,     1,     1,     1,
1045      1,     1,     1,     0,     2,     2,     2,     2,     2,     2,
1046      2,     2,     1,     1,     1,     1,     1,     5,     2,     4,
1047      4,     0,     1,     1,     0,     3,     4,     3,     5,     1,
1048      0,     1,     0,     3,     0,     1,     3,     3,     1,     1,
1049      1,     1,     1,     1,     5,     4,     8,     3,     0,     3,
1050      1,     2,     4,     2,     6,    14,    10,     3,     0,     4,
1051      1,     7,     3,     0,     1,     0,     1,     3,     1,     0,
1052      3,     0,     1,     3,     2,     4,     2,     2,     2,     2,
1053      1,     1,     0,     1,     0,     1,     1,     3,     3,     0,
1054      1,     3,     1,     3,     1,     2,     0,     8,     2,     0,
1055      3,     4,     1,     3,     2,     1,     2,     2,     2,     2,
1056      1,     1,     1,     0,     1,     0,     4,     4,     0,     1,
1057      3,     1,     3,     1,     2,     0,     1,     2,     3,     4,
1058      0,     3,     4,     0,     2,     1,     2,     1,     1,     1,
1059      1,     1,     1,     2,     2,     2,     2,     1,     2,     1,
1060      1,     3,     0,     5,     3,     0,     5,     3,     0,     4,
1061      1,     4,     2,     1,     3,     2,     1,     0,     3,     0,
1062      2,     0,     1,     2,     1,     2,     1,     1,     1,     1,
1063      1,     1,     3,     0,     1,     3,     3,     3,     3,     3,
1064      3,     0,     1,     1,     7,     8,     7,     7,     7,     7,
1065      7,     7,     7,     7,     8,     8,     8,     8,     8,     8,
1066      8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
1067      7,     7,     7,     7,     7,     7,     7,     7,     3,     3,
1068      1,     2,     1,     1,     1,     2,     3,     3,     3,     3,
1069      3,     3,     3,     2,     2,     2,     3,     6,     3,     3,
1070      3,     4,     2,     2,     4,     3,     4,     1,     1,     4,
1071      1,     4,     1,     4,     4,     4,     4,     5,     5,     5,
1072      4,     2,     3,     2,     4,     3,     4,     3,     4,     5,
1073      6,     0,     6,     0,     7,     5,     5,     5,     5,     5,
1074      5,     5,     5,     6,     6,     6,     6,     6,     6,     6,
1075      6,     6,     6,     6,     6,     6,     6,     6,     6,     3,
1076      3,     2,     2,     1,     1,     2,     3,     3,     3,     3,
1077      2,     2,     2,     3,     6,     3,     3,     2,     2,     3,
1078      4,     1,     1,     4,     1,     4,     1,     4,     4,     5,
1079      5,     5,     4,     4,     6,     0,     1,     3,     3,     3,
1080      0,     3,     0,     2,     1,     2,     3,     3,     3,     3,
1081      2,     3,     6,     3,     3,     2,     2,     1,     3,     4,
1082      4,     4,     5,     5,     5,     4,     3,     0,     2,     0,
1083      2,     0,     3,     2,     1,     1,     1,     1,     3,     1,
1084      1,     1,     3,     3,     3,     1,     3,     3,     3,     1,
1085      1,     4,     2,     3,     3,     1,     3,     1,     3,     1,
1086      1,     0,     1,     1,     1,     1,     1,     1,     1,     1,
1087      1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
1088      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1089      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1090      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1091      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1092      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1093      1,     1
1094 };
1095
1096 static const short yydefact[] = {     0,
1097      0,   374,   772,   375,   216,     0,     0,     0,   376,     0,
1098    267,     0,     0,     0,     0,   377,   430,     0,     0,   373,
1099      0,    92,   391,     0,     0,     0,     0,   267,     0,     0,
1100    391,     1,     2,    15,     7,    21,    45,    46,    47,     6,
1101      8,     9,    10,    11,    12,    13,    19,    14,    20,    17,
1102     18,    24,    25,    36,    26,    22,    30,    29,    34,    31,
1103     33,    32,    35,    38,   403,    27,    39,    40,    41,    42,
1104     43,    16,    44,    23,    37,   402,   404,    28,   401,   400,
1105    399,     0,     0,   368,   369,   802,   539,   805,   540,   809,
1106    810,   812,   541,   538,   814,   815,   542,   819,   537,   825,
1107    820,   821,   803,   804,   806,   807,   808,   811,   813,   816,
1108    817,   818,   824,   822,   823,   800,   801,    84,   771,   370,
1109      0,   291,     0,     0,   243,   244,     0,     0,   242,     0,
1110      0,   215,     0,     0,     0,     0,    92,   780,     0,     0,
1111    323,     0,   320,     0,     0,     0,   321,     0,     0,   322,
1112      0,     0,     0,   371,     0,   266,   265,   270,   275,   282,
1113    280,   279,   281,   283,     0,   276,   277,     0,   841,   842,
1114    365,   774,   773,     0,   372,   429,   427,     0,   819,     0,
1115      0,   367,     0,   779,    91,     0,   390,     0,     0,   366,
1116    795,   379,   782,   414,   270,   819,    75,   819,    73,   393,
1117      4,     5,   445,   796,    52,   205,     0,     0,   382,   775,
1118      0,   781,     0,   211,    52,     0,   246,   245,   249,   337,
1119    335,   336,   331,   332,   333,   334,   240,     0,   248,   247,
1120      0,     0,   486,   261,   446,   447,     0,     0,   386,     0,
1121    329,     0,   330,     0,   262,    50,   319,   783,   308,   269,
1122    794,   272,   268,   274,     0,     0,   409,     0,     0,     0,
1123    528,   528,   618,   619,   621,   623,   519,   805,     0,     0,
1124    513,   552,     0,   528,     0,   554,   516,     0,     0,   819,
1125    544,     0,   524,   790,   789,   821,     0,   800,     0,   791,
1126    785,     0,   770,     0,     0,     0,     0,     0,   491,   498,
1127    501,   500,   496,   521,   499,   801,   768,   593,   553,   706,
1128    424,   766,     0,     0,   594,   788,   784,   786,   595,     0,
1129      0,     0,     0,     0,    94,   398,   486,   272,    76,    74,
1130    392,   388,     3,   444,     0,     0,    55,   100,     0,     0,
1131    220,   219,     0,     0,   380,     0,     0,   347,   209,    55,
1132      0,     0,   241,     0,     0,     0,   413,     0,     0,   326,
1133    324,   325,   327,     0,   217,     0,   263,     0,   278,     0,
1134      0,     0,   428,     0,   527,   523,   530,     0,     0,     0,
1135    506,   505,     0,   711,     0,   504,   539,   540,   537,   545,
1136    536,   528,   526,   672,     0,     0,   507,   713,   738,     0,
1137    534,     0,     0,   535,   503,   502,   497,   533,   613,   596,
1138    606,   604,   605,     0,     0,     0,   553,   787,     0,   495,
1139      0,     0,     0,     0,   642,     0,     0,     0,     0,   632,
1140    634,   614,     0,     0,     0,     0,     0,     0,     0,     0,
1141      0,   592,     0,     0,   460,     0,     0,     0,    71,    72,
1142     67,    70,    69,    65,    68,    66,   761,   706,   460,   760,
1143      0,     0,   706,   387,     0,     0,   307,   264,   395,   346,
1144    346,   346,   346,    77,     0,    53,    54,    58,     0,     0,
1145      0,     0,     0,     0,    99,   101,   102,   146,     0,   207,
1146    208,     0,   378,   225,   224,   226,     0,   221,     0,   510,
1147    805,   508,   511,   313,     0,   798,   799,   314,   797,   318,
1148      0,   213,   210,    58,     0,     0,   254,     0,   251,     0,
1149      0,   485,   448,   239,     0,     0,   338,   271,     0,     0,
1150    411,   706,   430,     0,   405,     0,     0,     0,   532,     0,
1151      0,     0,   430,     0,     0,     0,     0,     0,     0,     0,
1152    525,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1153      0,     0,     0,   706,     0,   715,   728,   707,   740,     0,
1154      0,     0,     0,     0,     0,   553,   745,     0,   609,     0,
1155      0,   494,     0,     0,   829,   830,   831,   832,   834,   835,
1156    836,   837,   838,   840,   839,   828,   833,   827,   826,   767,
1157    670,     0,   692,   693,   695,   697,     0,     0,     0,     0,
1158      0,     0,     0,     0,     0,     0,   706,     0,   674,   675,
1159      0,     0,   633,   638,   636,   611,     0,   644,     0,   671,
1160      0,     0,     0,   610,     0,     0,     0,   603,     0,     0,
1161      0,   601,     0,     0,     0,   602,     0,     0,     0,   597,
1162      0,     0,     0,   598,     0,     0,     0,   600,     0,     0,
1163      0,   599,   607,     0,     0,   765,     0,   486,   769,   754,
1164    756,   777,     0,   616,     0,   755,   763,     0,   486,     0,
1165      0,    93,    87,    86,     0,     0,   389,   345,   100,    83,
1166      0,     0,     0,   344,    51,    56,    57,    62,     0,     0,
1167      0,     0,     0,     0,   200,     0,   204,   105,   203,     0,
1168      0,   385,   509,     0,   312,   317,   311,     0,     0,   793,
1169    212,   792,    62,     0,     0,     0,     0,   250,   294,   430,
1170      0,   328,     0,     0,   284,   288,   286,     0,   408,   412,
1171      0,     0,   289,     0,     0,     0,   522,   620,   622,     0,
1172    518,     0,   624,     0,   625,   512,   547,   548,   549,   550,
1173    551,   546,     0,   515,     0,   713,   738,     0,   726,   716,
1174    721,     0,   626,     0,   727,     0,     0,     0,     0,     0,
1175    714,     0,     0,     0,     0,   742,   627,   543,     0,   744,
1176      0,     0,     0,   631,     0,     0,     0,     0,     0,     0,
1177      0,     0,     0,     0,   589,     0,   489,   494,   520,     0,
1178      0,     0,   713,   738,     0,   688,   676,   683,   681,   682,
1179      0,     0,   689,     0,     0,     0,     0,     0,   673,     0,
1180      0,   635,   637,   639,     0,     0,   612,     0,     0,     0,
1181      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1182      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1183      0,     0,   706,   423,     0,   459,   463,   466,   487,   450,
1184      0,   615,   617,   759,   415,   764,     0,    89,    90,    96,
1185     88,     0,   396,     0,     0,    78,     0,    80,     0,   343,
1186      0,    64,     0,     0,   154,     0,     0,     0,     0,     0,
1187      0,     0,     0,   153,   788,   155,   145,     0,     0,     0,
1188     98,     0,   202,   206,   208,     0,     0,     0,     0,     0,
1189      0,   113,   103,   104,   107,   109,     0,   222,   384,   381,
1190    383,   315,     0,     0,   316,   361,   362,   359,   360,     0,
1191     64,     0,     0,   255,   257,   258,   259,   256,   253,   252,
1192      0,     0,     0,   340,   341,   339,   285,     0,   273,   410,
1193    460,     0,     0,   529,   531,     0,   460,   710,     0,     0,
1194      0,     0,     0,     0,     0,     0,   724,   712,   725,   717,
1195    718,   720,   719,   722,   729,     0,   739,   709,   708,     0,
1196    737,   628,   629,   630,   743,     0,     0,     0,     0,     0,
1197      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1198      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1199      0,   494,     0,   490,     0,     0,     0,     0,     0,     0,
1200      0,     0,     0,   686,   640,   687,   677,   678,   680,   679,
1201    684,   690,     0,   746,     0,   747,   748,     0,     0,     0,
1202      0,   646,     0,     0,   653,     0,     0,   651,     0,     0,
1203    652,     0,     0,   647,     0,     0,   648,     0,     0,   650,
1204      0,     0,   649,     0,   704,   474,     0,     0,     0,   465,
1205    488,     0,   457,   758,   757,   762,     0,    85,     0,   394,
1206     79,     0,     0,     0,     0,     0,    49,     0,   176,   177,
1207    156,   166,   164,   165,     0,     0,     0,     0,     0,   179,
1208    181,   178,     0,     0,     0,     0,     0,     0,     0,     0,
1209    147,     0,     0,     0,   148,     0,     0,    97,     0,     0,
1210      0,   139,   140,   142,   144,   119,     0,     0,     0,     0,
1211      0,     0,   111,     0,   118,   112,   114,   409,   106,   229,
1212      0,     0,   310,     0,     0,    48,     0,   260,   776,   293,
1213      0,   460,     0,   486,   406,   608,   517,   486,   514,     0,
1214    731,   732,     0,     0,     0,   736,   730,   741,     0,     0,
1215      0,     0,     0,     0,   591,     0,     0,     0,     0,     0,
1216      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1217      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1218      0,     0,     0,   492,   494,     0,   694,   696,   698,   699,
1219      0,     0,     0,   703,   691,   643,     0,   641,   750,     0,
1220    751,   752,   662,   654,   669,   661,   667,   659,   668,   660,
1221    663,   655,   664,   656,   666,   658,   665,   657,   706,   476,
1222    472,   476,   474,   471,   476,   473,     0,   461,     0,   464,
1223      0,     0,   419,     0,   397,    82,     0,   342,    61,    60,
1224      0,     0,   169,   174,     0,   180,   184,   183,   173,   175,
1225    172,   161,   162,   163,   157,   158,   160,   159,   167,   170,
1226      0,   152,     0,   149,     0,     0,     0,   108,     0,     0,
1227      0,   137,   120,   130,   128,   129,     0,   138,     0,     0,
1228      0,     0,     0,     0,     0,     0,     0,   189,   228,     0,
1229      0,   223,     0,   486,   358,   214,     0,   295,   296,   298,
1230    303,     0,   777,   486,   287,   450,   450,     0,   733,   734,
1231    735,   555,     0,     0,     0,   557,   581,     0,     0,   564,
1232    588,     0,     0,   562,   586,     0,     0,   563,   587,     0,
1233      0,   558,   582,     0,     0,   559,   583,     0,     0,   561,
1234    585,     0,     0,   560,   584,   493,     0,   700,   701,   702,
1235    749,   645,     0,   705,   475,   468,   469,   467,   470,     0,
1236    462,   449,   451,   455,   453,   456,   426,   432,    95,    81,
1237      0,    63,     0,   182,   186,   185,     0,   171,     0,   199,
1238    201,   110,     0,     0,     0,   133,   136,   125,   126,   127,
1239    121,   122,   124,   123,   131,   134,     0,   117,     0,   192,
1240    230,   231,   227,     0,     0,     0,     0,   311,     0,     0,
1241      0,   306,     0,   450,   457,   457,   723,   556,   573,   565,
1242    580,   572,   578,   570,   579,   571,   574,   566,   575,   567,
1243    577,   569,   576,   568,   685,   753,   479,     0,     0,   425,
1244      0,     0,   417,    59,     0,   151,   409,     0,   141,   143,
1245      0,   135,   187,   188,     0,   115,   191,     0,   309,   364,
1246    357,   290,   297,   302,   301,     0,   778,   300,   304,     0,
1247    457,   419,   422,     0,     0,     0,   452,   454,   418,   421,
1248      0,   168,   189,     0,   116,     0,     0,   190,   234,   363,
1249      0,   305,   303,   419,   407,     0,     0,   458,   426,   431,
1250    433,   443,   443,   192,   132,   196,     0,     0,   193,   194,
1251    238,   235,   236,     0,   232,   237,   349,     0,   348,   350,
1252    306,   432,     0,     0,   480,   484,   482,     0,     0,   441,
1253    442,     0,   437,     0,   435,   150,   195,   197,   198,     0,
1254    218,     0,   352,   353,   299,   416,   477,     0,   478,     0,
1255    420,   434,   438,   439,   440,   443,   233,   351,   355,   356,
1256    481,   483,   436,   354,     0,     0,     0
1257 };
1258
1259 static const short yydefgoto[] = {  1595,
1260     32,    33,    34,    35,    36,   337,   478,   698,  1269,   892,
1261   1097,    37,   454,   451,    38,    39,    40,   474,    41,    42,
1262    685,   880,   186,   466,  1088,    43,   484,   485,   486,   923,
1263    924,   925,   926,  1427,  1143,   487,   488,  1291,   902,  1430,
1264   1486,  1487,  1539,   913,  1128,    44,   339,   489,   490,    45,
1265    349,   513,    46,   134,    47,    48,   343,   497,   498,  1151,
1266   1320,  1433,  1544,  1545,    49,    50,   227,   135,   517,   353,
1267    518,   519,   944,    51,    52,   158,   252,   367,    53,   165,
1268    166,   167,   736,   959,    54,    55,   136,   952,  1327,  1328,
1269   1329,  1330,  1442,  1498,    56,    57,    58,   934,   347,   505,
1270    717,   718,    59,   153,    60,   361,    61,    62,   945,   229,
1271    526,    63,   889,   691,    64,   511,  1549,  1572,  1573,  1324,
1272    940,  1521,    65,    66,    67,    68,    69,    70,   345,   930,
1273     71,    72,    73,   188,   332,   687,   882,    74,    75,    76,
1274    535,   371,   530,   531,    77,    78,    79,    80,    81,  1398,
1275   1509,   544,   445,  1471,   178,  1473,  1530,  1531,  1563,   335,
1276    234,   235,  1083,  1392,  1393,  1263,   668,   866,   867,  1257,
1277   1386,  1506,  1554,  1555,   357,   868,   420,   807,   298,   299,
1278    300,   301,   302,   506,   386,   397,   381,   303,   304,   376,
1279    539,   747,   305,   306,   401,   391,   568,   308,   415,   416,
1280    309,   621,   836,   616,   442,   577,   546,   562,   563,   570,
1281    786,   991,   578,  1045,  1046,  1230,  1231,   310,   670,   459,
1282    460,   311,   312,   118,   395,   209,  1160,   671,  1499,   183,
1283    236,   314,   192,   249,   315,   316,   946,   317,   318,   205,
1284    508,   319,   600,   173
1285 };
1286
1287 static const short yypact[] = { 11162,
1288    -16,   292, 10571,   -27,  2914, 10571,    69,  3153,    89,    75,
1289    266,    76,   226, 10137,    76,   205,   295, 10655, 10137,   193,
1290  10571,   200,   177,   234, 10137,   216, 10137,   266, 10739, 10823,
1291    177, 11162,   211,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1292 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1293 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1294 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1295 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1296 -32768, 10137,   278,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1297 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1298 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1299 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1300  10137,-32768, 10571, 10571,-32768,-32768, 10571, 10571,-32768, 10571,
1301  10137,-32768,   278,   315,  9083,   333,   200,-32768, 10137, 10571,
1302 -32768, 10571,-32768, 10571, 10571, 10571,-32768,  1094,   415,-32768,
1303  10571,   278, 10571,-32768,   307,-32768,-32768,    35,   406,-32768,
1304 -32768,-32768,-32768,-32768,   417,   312,-32768, 10137,-32768,-32768,
1305 -32768,-32768,-32768,   467,-32768,-32768,   491,  4829,   383,   -30,
1306    468,-32768,   504,-32768,-32768, 10137,-32768,   441, 10571,-32768,
1307 -32768,-32768,-32768,-32768,    35,   493,-32768,   494,-32768,   499,
1308    418,-32768,   426,-32768,   517,   433,   625,    42,   527,-32768,
1309    442,-32768,   646,-32768,   517,   603,-32768,-32768,-32768,-32768,
1310 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   472,-32768,-32768,
1311  10571,   649,   569,-32768,   487,-32768,   618,  9251,-32768,   442,
1312 -32768,   498,-32768,   216,-32768,-32768,-32768,-32768,-32768,-32768,
1313 -32768,   653,-32768,-32768, 10571,    72,   505, 10571, 10571,   506,
1314    604,   604,-32768,   508,   510,-32768,   518,   638,   525,   526,
1315    529,   236,   709,   604,  7214,-32768,   530,   531,   533,   -81,
1316    631,   541,-32768,-32768,-32768,   148,   877,   167,  7214,-32768,
1317 -32768,  7214,-32768,  7214,  7214,  7214,  6674,   216,   547,-32768,
1318 -32768,-32768,-32768,   543,-32768,   172,   744,-32768,  3038,   551,
1319     23,-32768,   553,   550,-32768,   558,-32768,-32768,   -85,    38,
1320     59,    59,  9167, 10137,   648,-32768,   569,   653,-32768,-32768,
1321 -32768, 10137,-32768,-32768,    51,   584,    83, 10053,   756,   669,
1322 -32768,-32768,   259,   627,-32768,   920,   619,-32768,   598,    83,
1323    216,  8938,-32768,   703,   736,  7214,-32768, 10571, 10137,-32768,
1324 -32768,-32768,-32768, 10305,-32768, 10571,-32768,   683,-32768, 10571,
1325    281,   742,-32768,  7214,-32768,-32768,   776,   609,   609,   609,
1326 -32768,-32768,   700,   519,   609,-32768,   695,   698,   706,-32768,
1327 -32768,   604,-32768,  3128,   601,   609,-32768,  8094,  6674,   711,
1328 -32768,  4277,   638,-32768,-32768,-32768,-32768,-32768,  1036,   608,
1329    608,   608,   608,   617,   620,   610,  1187,-32768,   158,-32768,
1330    609,  9793,  7214,  7390,-32768,   181,  7214,   241,  7214,-32768,
1331 -32768,  6862,  5018,  5206,  5394,  5582,  5770,  5958,  6146, 11100,
1332   7214,-32768,   718,  4829,   777,  9335,  3341, 10571,-32768,-32768,
1333 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   551,    -7,-32768,
1334    628,   558,   377,-32768,   676,    65,-32768,-32768,   626,    58,
1335    811,   811,   811,-32768,   278,-32768,-32768,   424,   635, 10571,
1336    782,   783,   641,   235,-32768,-32768,-32768,-32768,   302,-32768,
1337  11100,   700,-32768,-32768,-32768,-32768,   771,   770,   662,-32768,
1338    769,-32768,-32768,-32768,   316,-32768,-32768,-32768,-32768,   691,
1339    778,   171,-32768,   424,   719,   668,   670,   320,-32768, 10137,
1340    766,  3038,-32768,-32768,   657,   660,   673,-32768, 10221,   330,
1341 -32768,   551,   295,   674,-32768, 10221,  2699,   785,   860,   675,
1342    677,   339,   295,   678,   835,   679,   681,   220,    44,   828,
1343 -32768, 10571,   344,   692,   693,   696,   699,  8094,  8094,  8094,
1344   8094,   694,   434,   551,   701,-32768,   -85,-32768,    -8,   704,
1345    789,  6322,  6674,  6322,  6322,  2771,   -60,   707,-32768,   680,
1346   7214,   716,   717,   713,-32768,-32768,-32768,-32768,-32768,-32768,
1347 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1348   3128,   726,-32768,   727,   737,-32768,   738,   741,   743,  7390,
1349   7390,  7390,  7390,  7390,  7214,     7,   551,   749,-32768,   -85,
1350    750,    13,-32768,-32768,-32768,  1480,  7390,-32768,  7214,  1518,
1351    751,   754,  6498,  1036,   755,   757,  6498,  7654,   760,   761,
1352   6498,  3751,   762,   764,  6498,  3751,   772,   773,  6498,   188,
1353    780,   788,  6498,   188,   790,   795,  6498,   608,   797,   798,
1354   6498,   608,-32768,  2430, 10137,-32768,  1699,   569,-32768,   748,
1355 -32768,-32768,   746,-32768,   -54,   748,-32768,  9587,   569,  9419,
1356    775,-32768,-32768,-32768,   218, 10571,-32768,-32768, 10053,-32768,
1357  10571, 10571, 10571, 10571,-32768,-32768,-32768,   918,  8446,   125,
1358    799,   800, 10571, 10053,   834, 10571,-32768,   380,-32768, 10137,
1359    259,    60,-32768,  9931,-32768,-32768,   869,  9931,    73,-32768,
1360 -32768,-32768,   918,  9083,  8772,  8772,  8938,-32768,   876,   295,
1361  10571,-32768, 10396, 10571,-32768,   881,-32768, 10571,-32768,-32768,
1362   4829,  4829,-32768, 11100, 10571, 10571,-32768,-32768,-32768,   609,
1363 -32768,  4829,-32768,  7214,-32768,-32768,-32768,-32768,-32768,-32768,
1364 -32768,-32768,   609,-32768,  8094,  8094,  6674,  4465,   269,   805,
1365    805,   397,-32768,  8094,  8270,  8094,  8094,  8094,  8094, 11100,
1366 -32768,  3528,  6674,  7214,  6674,   945,-32768,-32768,   802,   -60,
1367    804,   806,  6674,-32768,   809,   963,    24,    29,    30,    31,
1368     46,    62,    64,    77,  2259,   182,-32768,   716,-32768,  7390,
1369    609,   609,  8094,  6674,  4653,   477,   815,   815,   815,   815,
1370    975,  7390,  7566,  7390,  7390,  7390,  7390, 11100,-32768,  3715,
1371  10943,-32768,-32768,-32768,   142,   814,  1480,   700,   700,   821,
1372    700,   700,   824,   700,   700,   825,   700,   700,   826,   700,
1373    700,   831,   700,   700,   837,   700,   700,   838,   700,   700,
1374    839,  7214,   551,-32768, 10137,   845,  1018, 10487,   859,  1005,
1375   9503,-32768,-32768,-32768,-32768,-32768,  6674,-32768,-32768,   949,
1376 -32768,   412,-32768,   416, 11100,-32768,    97,-32768,   961,-32768,
1377   1012,   885,   863,  8446,-32768,  8446,  8446,  8446,  8446,  8446,
1378   8446,  1216,   865,-32768,-32768,   872,-32768, 10571, 10571,   431,
1379 -32768,   874,   893,-32768,-32768,   884, 10571,  7742,  1007,  1026,
1380  10571,-32768,-32768,   380,-32768,-32768,  1045,  1016,-32768,-32768,
1381 -32768,-32768,   472,  1090,-32768,-32768,-32768,-32768,-32768,   997,
1382    885,   955, 10571,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1383    923,   900,  4829,-32768,-32768,-32768,-32768,  1066,-32768,-32768,
1384      2,   447,   912,-32768,-32768,   913,     2,  3038,   915,   573,
1385    916,   919,  6322,  6322,  6322,   922,-32768,   959,   269,   254,
1386    254,   805,   805,-32768,-32768,   -17,   -60,  3038,-32768,  6674,
1387 -32768,-32768,-32768,-32768,   -60,   700,   924,   925,   932,  7038,
1388    933,   934,  7038,   936,   938,  7038,   939,   941,  7038,   942,
1389    943,  7038,   951,   952,  7038,   954,   957,  7038,   965,   967,
1390   7038,   716,   953,-32768,   594,   970,   973,   974,   976,  6322,
1391   6322,  6322,   981,-32768,   992,   477,   296,   296,   815,   815,
1392 -32768,-32768,     1,-32768,   983,   956,-32768,  7390, 10943,   984,
1393    986,-32768,   987,   989,-32768,   991,   994,-32768,   995,   998,
1394 -32768,   999,  1000,-32768,  1001,  1003,-32768,  1006,  1010,-32768,
1395   1025,  1030,-32768,  2977,-32768,   585, 10137,  1065,  9793,-32768,
1396 -32768,  1162,  1152,-32768,-32768,-32768,  1082,-32768, 10571,-32768,
1397 -32768,  1185,  1189, 10571,   278,  1057,-32768,  8446,  1550,  1056,
1398   1039,  1039,  1039,  1039,  1409,  8446,   288,  8446,  8446,-32768,
1399 -32768,  8622,  8446,  8446,  8446,  8446,  8446,  8446,  8446, 11100,
1400 -32768,  4089,   452,   469,-32768, 10571,  1054,-32768,  8446,   422,
1401   1049,-32768,  1051,  1052,-32768,-32768,  7742,  7742,  7742,  7742,
1402   7742,  7742,   832,  1058,-32768,-32768,-32768,   505,-32768,  1111,
1403   1206,   259,-32768,   216, 10137,-32768,   216,-32768,-32768,-32768,
1404  10571,     2,  1181,   569,-32768,-32768,-32768,   569,-32768, 11100,
1405 -32768,-32768,  1059,  1062,  1063,-32768,-32768,   -60,  1064,   700,
1406    700,   700,  1067,  1069,  3038,   700,   700,  1070,  1073,   700,
1407    700,  1084,  1088,   700,   700,  1091,  1092,   700,   700,  1093,
1408   1095,   700,   700,  1104,  1106,   700,   700,  1107,  1108,   700,
1409    700,  1109,  1110,-32768,   716, 11100,-32768,-32768,-32768,-32768,
1410   1112,  1115,  1116,-32768,-32768,-32768, 10978,   992,-32768,  1119,
1411   1060,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1412 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   551,  1190,
1413 -32768,  1190,   585,-32768,  1190,-32768,  1203,-32768, 10137,-32768,
1414   9671,  7214,  1168,   216,-32768,-32768,  7742,-32768,  1096,-32768,
1415   1114,  2815,-32768,  1550,   173,-32768,-32768,-32768,   747,  3054,
1416   1056,  1550,  2109,  2109,   371,   371,  1039,  1039,-32768,-32768,
1417    478,  1970,  1239,-32768,  1124,  1182,  1901,-32768,  7742,   609,
1418    609,  1041,  1131,  1131,  1131,  1131,   645,  7918,  7742,  7742,
1419   7742,  7742,  7742,  7742,  7742, 11100,  3902,  1271,-32768,   289,
1420   1256,-32768,  1283,   569,  1146,-32768,  1140,  1144,-32768,-32768,
1421     28,  1145,   872,   569,-32768,  1005,  1005,  1147,-32768,-32768,
1422 -32768,-32768,  1148,  1149,  1150,-32768,-32768,  1151,  1153,-32768,
1423 -32768,  1154,  1156,-32768,-32768,  1157,  1159,-32768,-32768,  1160,
1424   1161,-32768,-32768,  1163,  1165,-32768,-32768,  1166,  1167,-32768,
1425 -32768,  1177,  1184,-32768,-32768,-32768,  1186,-32768,-32768,-32768,
1426 -32768,-32768, 10978,-32768,-32768,-32768,-32768,-32768,-32768, 10137,
1427 -32768,  1170,-32768,-32768,  1188,  3038,  1349,  1272,-32768,   832,
1428    278,-32768, 11100,-32768,-32768,-32768,  8446,-32768, 10571,-32768,
1429 -32768,-32768,   368,  1191,  1192,-32768,  1041,   832,   734,   734,
1430    373,   373,  1131,  1131,-32768,-32768,   486,   832,   280,  1311,
1431 -32768,-32768,-32768, 10571,   216,  1262, 10571,   869, 10571, 11100,
1432  11100,   -21, 10571,  1005,  1152,  1152,-32768,-32768,-32768,-32768,
1433 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1434 -32768,-32768,-32768,-32768,-32768,-32768,   111,  9671, 10571,-32768,
1435    700,  1384,-32768,-32768,  1194,  1970,   505, 11100,-32768,-32768,
1436   7742,-32768,-32768,-32768,    66,-32768,  1311,  1197,-32768,  1255,
1437 -32768,-32768,-32768,-32768,-32768,  1230,-32768,-32768,-32768,   490,
1438   1152,  1168,-32768,  1207,  1209,  1210,-32768,-32768,  1313,-32768,
1439   9671,-32768,  1271,  1213,   832,    82,    82,-32768,   481,-32768,
1440    758,-32768,    28,  1168,-32768,  7214,  9671,-32768,  1349,  1211,
1441 -32768,    78,    48,  1311,-32768,-32768,  1420,   151,-32768,-32768,
1442 -32768,-32768,-32768,   495,-32768,-32768,-32768,   441,-32768,-32768,
1443    -21,  1272,  1437,   503,-32768,-32768,  1222,   700,  9671,-32768,
1444 -32768,   329,-32768, 10571,-32768,-32768,-32768,-32768,-32768,   481,
1445 -32768,  1223,   441,  1226,-32768,-32768,-32768,  9671,-32768, 10571,
1446 -32768,-32768,-32768,-32768,-32768,    78,-32768,-32768,  1228,-32768,
1447 -32768,-32768,-32768,-32768,  1429,  1432,-32768
1448 };
1449
1450 static const short yypgoto[] = {-32768,
1451 -32768,  1401,-32768,-32768,-32768,  1220,  1089,   927,-32768,   715,
1452    501,-32768,  1121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1453 -32768,-32768,  1308,-32768,-32768,-32768,   759,   752,   768,-32768,
1454 -32768,   522,   317,-32768,  -828,-32768,  -457,-32768,  -835,   -63,
1455    -83,   -35,   -64,-32768,-32768,-32768,-32768,-32768,   763,-32768,
1456 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -699,-32768,
1457 -32768,-32768,-32768,  -110,-32768,-32768,-32768,-32768,  -129,   528,
1458 -32768,   740,   753,-32768,-32768,  1435,  1269,  1155,-32768,  1453,
1459 -32768,  1217,   944,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1460 -32768,    33,   -48,   -77,-32768,-32768,-32768,    39,  1241,-32768,
1461 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1334,  -140,
1462 -32768,-32768,-32768,   -49,-32768,-32768,-32768,-32768,-32768,-32768,
1463 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1464 -32768,-32768,-32768,  1454,-32768,-32768,-32768,-32768,  -184,-32768,
1465 -32768, -1131,  -684,   765,-32768,-32768,-32768,-32768,  1169, -1235,
1466 -32768,  1362,-32768,   -45,  -465,   -65,-32768,   -69, -1432,-32768,
1467   -150,    52, -1238,-32768,    26, -1197,  -454,-32768, -1033,   243,
1468   -785,-32768,-32768,   -79,  -320,  -855,-32768,  -775,  -391,  1214,
1469 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -318,  -187,
1470 -32768,-32768,-32768,  1199,-32768,-32768,  -125,-32768,    63,-32768,
1471   1375,-32768,-32768,  -396,  -438,  -376,-32768,  -654,  -234,  -638,
1472 -32768,-32768,  -527,-32768,-32768,-32768,-32768,  -178,  1068,-32768,
1473    819,  -711,  1071,-32768,   137,  1355,-32768,  -862,     6,    71,
1474     54,  1361,-32768,-32768,  2038,  1632,  1002,    -6,    20,  -131,
1475   -316,    -3,   427,-32768
1476 };
1477
1478
1479 #define YYLAST          11334
1480
1481
1482 static const short yytable[] = {   119,
1483    245,   215,   138,   326,   679,   228,   467,   243,  1085,  1076,
1484    172,   928,   690,   822,   180,   172,  1318,   184,   910,   677,
1485    246,   172,   569,   172,   681,   197,   199,   507,   998,   961,
1486    962,   999,  1024,  1001,  1004,  1007,  1002,  1005,  1008,   250,
1487    967,   783,   667,  1258,   789,   193,   791,   792,   663,   784,
1488   1010,   667,   307,  1011,   470,   784,   471,  1560,  1099,   137,
1489   1100,  1101,  1102,  1103,  1104,  1105,  1013,   741,  1016,  1014,
1490    675,  1017,   321,   449,   377,  1440,   479,   752,   172,   688,
1491    159,  1019,   443,    82,  1020,  1561,   393,  1560,  1496,   120,
1492    832,   472,   784,   740,   453,   929,  1536,  1445,  1446,   708,
1493   1565,   784,  1516,  -535,   368,   450,   481,   372,   160,   936,
1494    784,   971,   160,   760,   683,  1561,  -774,   172,   139,   138,
1495    138,  -535,  -781,   210,   212,   781,   138,   172,   972,   161,
1496    937,   230,   833,   161,   834,   172,   138,  1092,   138,   761,
1497    138,   210,   212,   479,   458,   482,   785,   138,  1048,   138,
1498    171,   253,   785,  1593,   873,   181,  1537,  1562,  1028,    83,
1499    322,   190,  1497,   194,   172,   483,   341,   684,   162,   938,
1500    342,   414,   162,   481,  1517,  1029,   207,   208,   829,  1538,
1501    163,   939,   172,   213,   163,   184,  1568,  1562,   253,   785,
1502   1504,  1177,   823,   154,  1093,   237,   790,   238,   785,   678,
1503    824,   825,   826,   827,   551,  1501,   247,   785,   444,  1225,
1504    473,   828,   482,   816,   817,   818,   819,   820,   203,   564,
1505   1505,   251,   191,  1123,  1124,  1391,  1441,   184,  1569,   444,
1506    835,  1000,   483,   155,   138,   164,  1003,  1006,  1009,   164,
1507    976,  1162,   907,   191,   191,   617,  1214,  1502,  1503,  1564,
1508   1404,   138,   627,  1012,   138,   373,   622,   206,   623,   327,
1509    476,   477,  1272,   365,   953,   689,  1525,   214,   387,  1015,
1510   1274,  1018,  1279,  1280,   757,   233,  1281,  1282,  1283,  1284,
1511   1285,  1286,  1287,  1288,  1021,   168,  1292,  1033,  1552,   758,
1512    388,   362,  1405,  1297,  1406,   494,   628,   182,  1331,   176,
1513    624,   354,   625,  1524,   257,    93,    94,   629,  1302,  1303,
1514   1304,  1305,  1306,  1307,   313,   759,   495,   418,   307,   463,
1515    172,   175,   325,   769,   770,   771,   772,   823,   172,   185,
1516   1483,    97,  -503,   177,   491,   824,   825,   826,   827,   452,
1517    455,   455,   509,   695,   251,  1513,   828,   870,   230,   187,
1518   -503,  -502,   963,   389,   138,   172,  -533,   251,   875,   720,
1519    138,   582,   138,  1275,  1484,  1276,   532,   496,   251,  -502,
1520    515,   540,   541,   542,  -533,   189,  1478,   533,   547,   564,
1521    564,   564,   564,   438,   439,  1022,   878,   879,   984,   553,
1522    569,   534,   440,   156,   567,   507,    84,   932,   916,   507,
1523    191,   935,   191,   917,   157,   986,   987,  1277,    85,  1278,
1524    202,   523,   583,  1025,   584,   918,   995,   527,   599,   528,
1525    620,   692,   693,   694,  1075,  1035,  1036,  1037,  1038,  1039,
1526   1040,   617,   617,   617,   617,   617,  1041,   569,  1400,  1376,
1527    916,   704,   672,   705,   672,  1173,  1174,  1175,   617,   778,
1528    779,  1431,  1322,  1043,-32768,   919,  1432,   918,   780,   461,
1529    464,   204,   776,   777,   778,   779,  1387,   920,   469,  1389,
1530   1413,   921,   216,   780,   231,     6,   138,     7,   244,  1417,
1531   1418,  1419,  1420,  1421,  1422,  1423,  1424,   922,  1428,   774,
1532    248,   826,   827,   708,   254,   524,   255,   919,    13,   458,
1533    828,   320,  1221,  1222,  1223,   722,  1164,   414,   706,   920,
1534    707,   414,  1168,   921,  1583,   414,   172,    14,   256,   414,
1535   1584,  1585,   714,   414,   715,   737,   727,   414,   728,   922,
1536    970,   414,   737,   700,  1467,   414,   738,    17,   739,   978,
1537    979,   980,   981,   982,   983,   750,   258,   751,   672,    19,
1538    763,    87,   764,  1308,   567,   567,   567,   567,  1309,  1310,
1539   1311,  1312,  1313,  1314,  1315,   323,  1118,  1119,  1314,  1315,
1540    259,  1476,  1316,    89,  1491,  1120,  1331,  1316,  -774,   441,
1541    313,  1170,   775,   324,   243,   243,   564,   564,    93,    94,
1542    776,   777,   778,   779,   942,   564,   564,   564,   564,   564,
1543    564,   780,  1216,   696,   697,   977,   620,   620,   620,   620,
1544    620,   329,   330,  1178,    97,   307,   307,   333,  1089,   775,
1545   1090,   334,   704,   620,  1091,   331,   307,   776,   777,   778,
1546    779,   617,   336,   340,   564,  1250,    99,   738,   780,  1125,
1547    338,  1251,   344,   617,   617,   617,   617,   617,   617,   346,
1548   1252,  1228,  1515,   444,   348,  1165,   729,  1253,   738,   989,
1549   1293,   172,-32768,   172,  1541,   191,   351,  1542,  1254,  1543,
1550    824,   825,   826,   827,   463,   738,   672,  1294,  1255,   352,
1551    355,   828,   138,   356,  1407,   885,  1408,   885,   887,   888,
1552    138,  1256,  1481,   358,  1482,   906,   358,   359,  1523,   532,
1553    885,  1570,   915,  1571,   881,   364,   172,  1334,   366,  1578,
1554    509,  1579,   370,   374,   509,   378,   375,   379,   722,   722,
1555    230,   948,   948,   230,   382,   380,   392,   138,  1289,   138,
1556    957,   931,   383,   384,   532,   795,   385,   396,   398,   883,
1557    399,   964,   965,   966,   947,   947,   400,   890,   402,   419,
1558    421,  1086,   422,   441,   446,   796,   969,   447,   775,   448,
1559    475,   567,   567,   465,   492,    17,   776,   777,   778,   779,
1560    567,   567,   567,   567,   567,   567,   499,   780,  1338,   823,
1561    510,   512,   520,   521,   954,   529,   956,   824,   825,   826,
1562    827,   536,     6,   538,     7,   251,   543,   548,   828,  1023,
1563    549,   864,   552,   869,  1026,  1027,   620,  1107,   550,   567,
1564   1384,   571,   440,-32768,   461,    13,   581,   665,   620,   620,
1565    620,   620,   620,   620,  1377,   579,   667,   307,   580,   680,
1566   1308,   682,   688,   686,    14,  1309,  1310,  1311,  1312,  1313,
1567   1314,  1315,   699,  1336,   701,   702,   927,  1337,   703,  1316,
1568    710,   711,   712,  1416,    17,   713,   716,   719,   725,   724,
1569    726,   172,   730,   731,  1080,   797,    19,   672,   732,   617,
1570    798,   799,   800,   801,   802,   803,   804,   313,   313,   733,
1571    746,   742,   745,   748,   754,   749,   753,   755,   313,   756,
1572    906,  1110,   906,   906,   906,   906,   906,   906,   762,   765,
1573    766,  1111,   773,   767,   532,   532,   768,   788,   782,    87,
1574    267,  1547,   787,   138,   212,   794,   403,  1148,   806,  1308,
1575    808,   809,    86,   271,  1425,-32768,-32768,  1312,  1313,  1314,
1576   1315,    89,  1112,   810,   811,   272,   261,   262,  1316,  1158,
1577   1116,  1117,  1118,  1119,   812,   813,    93,    94,   814,   871,
1578    815,  1120,    87,   500,   872,   277,   830,   831,   838,   501,
1579   1548,   839,   841,  1270,   842,   877,   502,   844,   845,   847,
1580   1130,   848,    97,   891,    89,  1295,   912,   404,   281,   850,
1581    851,   423,    90,    91,   933,   951,   424,   853,    92,    93,
1582     94,   273,   990,   274,    99,   854,   958,   856,   503,   405,
1583     95,   869,   857,  1436,   859,   860,   908,   909,    96,   780,
1584    992,  1475,   993,  1444,   994,    97,   996,  1308,   997,   828,
1585     98,  1049,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1052,
1586    425,   283,  1055,  1058,  1061,   426,  1316,    99,   100,  1064,
1587    101,   427,   102,  1078,   620,  1067,  1070,  1073,  1494,  1495,
1588    428,  1077,   103,   104,  1081,   105,   429,  1082,  1087,   106,
1589    406,   107,  1184,  1094,  1095,  1189,  1096,  1127,  1193,   108,
1590   1098,  1197,  1122,   172,  1201,   599,   109,  1205,   110,  -781,
1591   1209,  1126,   111,  1213,  1146,   138,  1514,   112,  1147,   313,
1592    138,  1129,  1150,   113,   906,   114,   426,  1152,  1154,  1155,
1593   1157,   115,   906,   116,   906,   906,  1159,  1161,   906,   906,
1594    906,   906,   906,   906,   906,   906,  1107,  1163,   906,   430,
1595   1166,  1167,   138,  1169,  1171,   906,  1259,  1172,   504,   431,
1596   1176,  1180,  1181,   212,   212,   212,   212,   212,   212,  1182,
1597   1186,  1187,  1265,  1190,   775,  1191,  1194,  1268,  1195,  1198,
1598   1199,   172,   776,   777,   778,   779,  1215,  1333,  1202,  1203,
1599    432,  1206,  1227,   780,  1207,   433,   434,   435,   436,   437,
1600    438,   439,  1210,  1323,  1211,  1261,  1326,   823,  1217,   440,
1601    430,  1218,  1219,  1034,  1220,   824,   825,   826,   827,  1224,
1602    431,  1226,  1233,   423,  1234,  1235,   828,  1236,   424,  1237,
1603   1110,   117,  1238,  1239,   117,  1262,  1240,  1241,  1242,  1243,
1604   1111,  1244,   117,   869,  1245,  1264,   117,   117,  1246,   117,
1605   1266,-32768,  1106,   117,  1267,   117,-32768,   117,   117,   436,
1606    437,   438,   439,  1247,  1312,  1313,  1314,  1315,  1248,  1271,
1607    440,-32768,   425,  1120,  1296,  1316,  1319,   426,  1321,  1116,
1608   1117,  1118,  1119,   427,  1394,   172,  1299,  1395,  1300,  1301,
1609   1120,  1335,   428,   212,  1390,  1317,  1383,  1339,   429,  1474,
1610   1340,  1341,  1342,  1385,  1397,  1346,  1107,  1347,  1350,   241,
1611    117,  1351,  1108,  1399,   220,   221,   222,   223,   224,   225,
1612    226,  1325,  1354,  1414,  1415,   212,  1355,  1109,  1402,  1358,
1613   1359,  1362,  1401,  1363,   212,   212,   212,   212,   212,   212,
1614    212,   212,  1366,   212,  1367,  1370,  1371,  1374,  1375,   117,
1615   1378,   117,   117,  1379,  1380,   117,   117,  1382,   117,   117,
1616   1409,   430,  1410,   117,  1411,  1316,  1550,   117,   117,  1429,
1617    117,   431,   117,   117,   117,  1434,  1435,  1437,  1438,   117,
1618   1439,   117,  1443,  1470,  1472,  1447,  1448,  1449,  1450,  1451,
1619   1110,  1452,  1453,  1574,  1454,  1455,   117,  1456,  1457,  1458,
1620   1111,  1459,   432,  1460,  1461,  1462,  1468,   433,   434,   435,
1621    436,   437,   438,   439,   117,  1463,   172,   117,  1589,  1469,
1622   1485,   440,  1464,  -591,  1465,   869,  1490,  1511,  1520,  1479,
1623   1480,  1112,  1512,   906,  1519,  1477,  1113,  1114,  1115,  1116,
1624   1117,  1118,  1119,  1497,  1526,  1106,  1527,  1559,  1528,  1529,
1625   1120,  1535,  1567,  1580,  1121,  1590,  1588,  1594,  1596,   117,
1626    138,  1597,   201,   672,   350,   672,   117,   941,   514,   138,
1627    723,  1156,   456,   423,   232,  1149,  1298,   884,   424,  1534,
1628   1566,  1518,  1540,   117,  1489,   911,   117,   117,   886,  1587,
1629   1153,  1394,   195,   328,  1395,  1508,   950,   174,   914,  1107,
1630    390,  1493,   369,  1575,  1551,  1108,  1492,   212,   949,   743,
1631    363,   242,   468,  1558,   200,   408,  1576,  1488,   211,  1582,
1632   1109,   424,   425,  1507,  1500,  1388,   874,   426,  1591,   239,
1633    407,  1522,   960,   427,  1532,  1260,   240,  1533,   493,     0,
1634      0,     0,   428,   721,   666,   676,     0,     0,   429,     0,
1635   1556,   117,   117,  1557,   423,     0,   869,     0,     0,   424,
1636    117,     0,     0,     0,     0,   425,   117,     0,  1546,     0,
1637    426,     0,     0,     0,   117,     0,-32768,     0,     0,     0,
1638    117,     0,  1532,  1110,     0,  1533,   117,   117,     0,     0,
1639   1586,     0,   117,  1111,   117,     0,     0,     0,   117,     0,
1640      0,  1556,     0,   425,  1557,     0,  1592,     0,   426,     0,
1641      0,   430,   545,     0,   427,     0,     0,     0,     0,  1546,
1642      0,   431,     0,   428,  1112,     0,     0,     0,     0,  1113,
1643   1114,  1115,  1116,  1117,  1118,  1119,     0,     0,     0,     0,
1644   1107,     0,     0,  1120,     0,     0,  1108,  1273,     0,     0,
1645    117,     0,   432,     0,   430,     0,     0,   433,   434,   435,
1646    436,   437,   438,   439,   431,     0,     0,     0,   408,     0,
1647      0,   440,     0,     0,   117,  1577,   117,     0,     0,   394,
1648      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1649      0,     0,   430,   409,     0,   432,   410,     0,   411,   412,
1650    413,   417,   431,   436,   437,   438,   439,     0,   117,     0,
1651      0,     0,     0,     0,   440,     0,     0,     0,     0,   408,
1652      0,     0,     0,     0,  1110,     0,     0,     0,     0,     0,
1653      0,    86,     0,   432,  1111,     0,     0,     0,   433,   434,
1654    435,   436,   437,   438,   439,     0,     0,     0,   117,     0,
1655      0,     0,   440,     0,     0,   169,     0,   117,     0,     0,
1656    522,    87,     0,     0,   117,  1112,     0,     0,    88,     0,
1657   1113,  1114,  1115,  1116,  1117,  1118,  1119,     0,   537,     0,
1658    117,     0,     0,    89,  1120,     0,     0,     0,   565,     0,
1659      0,    90,    91,     0,     0,     0,     0,    92,    93,    94,
1660      0,     0,     0,     0,     0,     0,   576,     0,     0,    95,
1661      0,     0,     0,     0,   618,     0,     0,    96,     0,     0,
1662      0,     0,     0,     0,    97,     0,     0,   601,     0,    98,
1663      0,   626,     0,   630,     0,     0,   634,   638,   642,   646,
1664    650,   654,   658,   662,     0,   664,    99,   100,     0,   101,
1665      0,   102,     0,     0,     0,     0,     0,     0,     0,     0,
1666      0,   103,   104,     0,   105,     0,     0,     0,   106,     0,
1667    107,     0,     0,     0,     0,     0,     0,     0,   108,     0,
1668    170,     0,     0,   709,     0,   109,     0,   110,     0,     0,
1669      0,   111,     0,   117,     0,   117,   112,     0,     0,     0,
1670      0,     0,   113,     0,   114,     0,   117,     0,   117,     0,
1671    115,     0,   116,     0,   117,     0,     0,   117,     0,   117,
1672    117,   117,   117,     0,     0,     0,     0,     0,     0,     0,
1673      0,   117,   117,     0,   117,     0,   865,  1106,   117,     0,
1674      0,     0,   117,     0,     0,     0,   117,     0,   565,   565,
1675    565,   565,   117,   117,   117,   117,     0,     0,     0,   117,
1676      0,   117,   117,     0,     0,     0,   117,     0,     0,     0,
1677      0,     0,   408,   117,   117,     0,   576,     0,   576,   576,
1678      0,     0,     0,     0,   462,   805,     0,     0,     0,     0,
1679      0,  1107,     0,     0,     0,     0,     0,  1108,     0,     0,
1680    618,   618,   618,   618,   618,     0,  1106,     0,   408,     0,
1681      0,     0,  1109,     0,     0,     0,     0,   618,     0,   821,
1682      0,     0,     0,     0,   840,     0,     0,     0,   843,     0,
1683      0,     0,   846,   837,     0,     0,   849,   417,     0,     0,
1684    852,   417,     0,     0,   855,   417,     0,     0,   858,   417,
1685      0,     0,   861,   417,     0,     0,   408,   417,     0,   408,
1686   1107,   417,     0,     0,     0,   417,  1108,     0,     0,     0,
1687      0,     0,     0,     0,     0,  1110,     0,     0,     0,     0,
1688      0,  1109,     0,     0,     0,  1111,     0,     0,     0,   903,
1689      0,     0,     0,   117,     0,     0,   117,     0,     0,   117,
1690      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1691      0,     0,     0,   408,     0,     0,  1112,     0,     0,     0,
1692      0,  1113,  1114,  1115,  1116,  1117,  1118,  1119,     0,     0,
1693      0,     0,     0,     0,     0,  1120,   117,   117,     0,  1412,
1694      0,     0,     0,     0,  1110,   117,     0,     0,     0,   117,
1695      0,     0,     0,     0,  1111,   565,   565,     0,   968,     0,
1696      0,     0,     0,     0,   565,   565,   565,   565,   565,   565,
1697      0,   117,   576,     0,     0,     0,     0,     0,     0,     0,
1698      0,     0,     0,     0,     0,  1112,     0,     0,   988,     0,
1699   1113,  1114,  1115,  1116,  1117,  1118,  1119,     0,     0,  1107,
1700    618,     0,     0,   565,  1120,  1108,     0,     0,     0,     0,
1701      0,     0,   618,   618,   618,   618,   618,   618,     0,   576,
1702      0,     0,  1044,     0,     0,     0,     0,     0,     0,  1050,
1703   1051,     0,  1053,  1054,     0,  1056,  1057,     0,  1059,  1060,
1704      0,  1062,  1063,     0,  1065,  1066,     0,  1068,  1069,     0,
1705   1071,  1072,     0,     0,     0,     0,     0,     0,     0,     0,
1706      0,     0,     0,     0,     0,     0,  1074,     0,     0,     0,
1707      0,     0,     0,     0,     0,     0,     0,   408,     0,     0,
1708      0,     0,     0,  1110,   903,     0,   903,   903,   903,   903,
1709    903,   903,     0,  1111,     0,   423,     0,     0,     0,     0,
1710    424,     0,     0,     0,     0,   117,     0,   117,  1144,     0,
1711      0,     0,     0,     0,     0,     0,     0,   117,     0,     0,
1712      0,     0,   117,     0,  1112,     0,     0,     0,     0,     0,
1713 -32768,-32768,  1116,  1117,  1118,  1119,     0,     0,     0,   462,
1714      0,     0,     0,  1120,   425,     0,     0,     0,   408,   426,
1715      0,     0,     0,     0,   117,   427,     0,     0,     0,     0,
1716    905,     0,     0,     0,   428,     0,     0,     0,     0,     0,
1717    429,     0,     0,     0,     0,     0,     0,   576,   576,   576,
1718      0,     0,     0,   117,     0,     0,     0,  1179,     0,   117,
1719      0,  1183,     0,     0,  1188,     0,     0,  1192,   408,     0,
1720   1196,     0,     0,  1200,  1185,     0,  1204,  1185,     0,  1208,
1721   1185,     0,  1212,  1185,     0,     0,  1185,     0,     0,  1185,
1722      0,     0,  1185,     0,     0,  1185,     0,     0,     0,     0,
1723      0,     0,     0,   430,   576,   576,   576,     0,   618,     0,
1724   1229,     0,     0,   431,   408,     0,     0,     0,     0,     0,
1725      0,     0,     0,     0,     0,   408,     0,     0,     0,     0,
1726      0,     0,     0,     0,     0,   566,   423,     0,     0,     0,
1727      0,   424,     0,     0,   432,     0,     0,     0,     0,   433,
1728    434,   435,   436,   437,   438,   439,     0,   117,   903,   117,
1729      0,   619,   905,   440,     0,  -590,   903,     0,   903,   903,
1730      0,     0,   903,   903,   903,   903,   903,   903,   903,   903,
1731      0,     0,   903,     0,     0,   425,     0,     0,     0,   903,
1732    426,     0,     0,     0,     0,     0,   427,  1144,  1144,  1144,
1733   1144,  1144,  1144,     0,     0,   428,     0,     0,     0,     0,
1734      0,   429,     0,     0,   408,     0,     0,     0,     0,     0,
1735      0,  1332,     0,     0,     0,   905,     0,   905,   905,   905,
1736    905,   905,   905,     0,     0,     0,     0,     0,     0,     0,
1737      0,  1343,  1344,  1345,     0,     0,     0,  1348,  1349,   905,
1738      0,  1352,  1353,     0,     0,  1356,  1357,     0,     0,  1360,
1739   1361,     0,     0,  1364,  1365,     0,     0,  1368,  1369,     0,
1740      0,  1372,  1373,     0,   430,     0,     0,     0,     0,     0,
1741      0,   408,     0,     0,   431,     0,     0,     0,   117,     0,
1742      0,     0,     0,     0,     0,   566,   566,   566,   566,     0,
1743      0,   408,     0,     0,     0,     0,     0,   117,     0,     0,
1744      0,     0,     0,     0,     0,   432,     0,     0,     0,     0,
1745    433,   434,   435,   436,   437,   438,   439,  1144,   862,     0,
1746      0,     0,   117,   863,   440,   117,  1396,   117,   408,   408,
1747      0,   117,     0,     0,     0,     0,     0,   619,   619,   619,
1748    619,   619,     0,     0,     0,     0,     0,     0,     0,  1144,
1749      0,     0,     0,     0,   619,     0,   117,   117,  1144,  1144,
1750   1144,  1144,  1144,  1144,  1144,  1144,   408,  1144,     0,     0,
1751    905,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1752      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1753      0,     0,     0,     0,     0,   423,     0,   744,     0,   117,
1754    424,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1755      0,     0,     0,     0,     0,   117,     0,     0,     0,   905,
1756      0,     0,     0,     0,     0,     0,   904,   905,     0,   905,
1757    905,     0,     0,   905,   905,   905,   905,   905,   905,   905,
1758    905,     0,     0,   905,   425,     0,     0,   117,     0,   426,
1759    905,     0,   117,     0,     0,   427,     0,   903,   905,   905,
1760    905,   905,   905,   905,   428,     0,   117,   423,   117,     0,
1761    429,     0,   424,     0,     0,     0,     0,     0,     0,     0,
1762      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1763      0,     0,   566,   566,     0,     0,     0,     0,     0,     0,
1764      0,   566,   566,   566,   566,   566,   566,     0,     0,     0,
1765    793,  1106,     0,  1403,     0,     0,   425,     0,     0,     0,
1766      0,   426,  1510,     0,     0,     0,     0,   427,     0,     0,
1767      0,  1144,     0,   430,     0,     0,   428,   619,     0,     0,
1768    566,     0,   429,   431,     0,     0,     0,     0,   905,   619,
1769    619,   619,   619,   619,   619,     0,     0,     0,  1047,     0,
1770      0,     0,     0,     0,     0,  1107,     0,     0,     0,     0,
1771      0,  1108,     0,     0,   432,     0,     0,     0,     0,   433,
1772    434,   435,   436,   437,   438,   439,  1109,     0,   905,     0,
1773   1553,     0,     0,   440,     0,     0,     0,     0,     0,     0,
1774      0,     0,     0,     0,     0,   430,     0,     0,     0,  1581,
1775      0,     0,     0,     0,     0,   431,     0,     0,     0,     0,
1776    905,   904,     0,   904,   904,   904,   904,   904,   904,   905,
1777    905,   905,   905,   905,   905,   905,   905,     0,   905,     0,
1778      0,     0,     0,     0,     0,  1145,   432,     0,     0,  1110,
1779      0,   433,   434,   435,   436,   437,   438,   439,     0,  1111,
1780      0,     0,     0,     0,     0,   440,     0,     0,     0,     0,
1781      0,     0,     0,   423,     0,     0,     0,     0,   424,     0,
1782      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1783   1112,     0,     0,     0,     0,  1113,  1114,  1115,  1116,  1117,
1784   1118,  1119,     0,   121,   905,     0,     0,     0,     0,  1120,
1785      0,   122,     0,     0,     0,     0,     0,   123,     0,     0,
1786      0,     0,   425,     0,   124,     0,   125,   426,   905,   126,
1787      0,     0,     0,   427,   423,     0,   127,     0,     0,   424,
1788      0,     0,   428,   128,     0,  -292,     0,     0,   429,     0,
1789   1106,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1790    129,     0,     0,     0,     0,     0,     0,   130,   131,     0,
1791      0,     0,     0,     0,   132,   619,  1232,     0,     0,   133,
1792      0,     0,     0,   425,     0,     0,     0,     0,   426,     0,
1793      0,     0,     0,     0,   427,     0,     0,     0,     0,     0,
1794      0,     0,   905,   428,  1107,     0,     0,     0,     0,   429,
1795   1108,   430,     0,     0,     0,     0,     0,     0,     0,     0,
1796      0,   431,     0,     0,     0,   904,     0,     0,     0,   424,
1797      0,     0,     0,   904,     0,   904,   904,     0,     0,   904,
1798    904,   904,   904,   904,   904,   904,   904,     0,     0,   904,
1799      0,     0,   432,     0,     0,     0,   904,   433,   434,   435,
1800    436,   437,   438,   439,  1145,  1145,  1145,  1145,  1145,  1145,
1801   1249,   440,   430,   425,     0,     0,     0,     0,   426,     0,
1802      0,     0,   431,     0,   427,     0,     0,     0,  1110,     0,
1803      0,     0,     0,   428,     0,     0,     0,     0,  1111,     0,
1804      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1805      0,     0,     0,   432,     0,     0,     0,     0,   433,   434,
1806    435,   436,   437,   438,   439,     0,     0,     0,     0,  1112,
1807      0,     0,   440,     0,  1113,  1114,  1115,  1116,  1117,  1118,
1808   1119,     0,   140,     0,     0,     0,     0,     0,  1120,     0,
1809      0,     0,     0,     0,  1381,     0,   141,     0,     0,     0,
1810      0,     0,   430,   142,     0,   143,     0,     0,   144,     0,
1811      0,     0,   431,     0,     0,   145,     0,     0,     0,     0,
1812      0,     0,   146,     0,   147,     0,     0,     0,     0,     0,
1813      0,     0,     0,     0,  1145,     0,     0,     0,     0,   148,
1814    149,     0,     0,   432,     0,     0,   150,   151,   433,   434,
1815    435,   436,   437,   438,   439,     0,     0,     0,   152,     0,
1816      0,     0,   440,     0,     0,     0,  1145,     0,     0,     0,
1817      0,     0,     0,    86,     0,  1145,  1145,  1145,  1145,  1145,
1818   1145,  1145,  1145,     0,  1145,     0,   260,   261,   262,     0,
1819      0,     0,     0,     0,     0,     0,     0,   169,   263,   264,
1820    265,   266,     0,    87,   267,     0,     0,     0,     0,     0,
1821    268,     0,     0,     0,   269,   270,     0,   271,     0,     0,
1822      0,     0,     0,     0,     0,    89,     0,     0,     0,   272,
1823      0,     0,     0,    90,    91,     0,     0,     0,     0,    92,
1824     93,    94,   273,     0,   274,     0,   275,     0,   276,   277,
1825   1466,    95,     0,     0,     0,     0,   278,     0,     0,    96,
1826      0,     0,     0,     0,     0,     0,    97,     0,     0,   279,
1827      0,   280,   281,     0,   904,     0,   282,     0,     0,     0,
1828      0,     0,   283,     0,     0,     0,     0,     0,    99,   100,
1829    284,   101,   285,   286,     0,     0,     0,     0,     0,     0,
1830      0,     0,     0,   103,   104,     0,   105,     0,     0,     0,
1831    106,     0,   107,     0,     0,     0,     0,     0,     0,     0,
1832    108,     0,   170,     0,     0,     0,     0,   109,     0,   110,
1833      0,     0,     0,   111,     0,     0,   287,     0,   112,     0,
1834      0,     0,     0,     0,   113,     0,   114,     0,  1145,     0,
1835      0,     0,   115,     0,   288,   191,   289,   251,   290,   291,
1836     86,     0,     0,     0,     0,   292,   673,     0,   294,   295,
1837    296,     0,     0,   260,   261,   262,     0,     0,   297,   674,
1838      0,     0,     0,     0,   169,   263,   264,   265,   266,     0,
1839     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
1840      0,   269,   270,     0,   271,     0,     0,     0,     0,     0,
1841      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
1842     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
1843      0,   274,     0,   275,     0,   276,   277,     0,    95,     0,
1844      0,     0,     0,   278,     0,     0,    96,     0,     0,     0,
1845      0,     0,     0,    97,     0,     0,   279,     0,   280,   281,
1846      0,     0,     0,   282,     0,     0,     0,     0,     0,   283,
1847      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
1848    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1849    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
1850      0,     0,     0,     0,     0,     0,     0,   108,     0,   170,
1851      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
1852    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
1853      0,   113,     0,   114,     0,     0,     0,     0,     0,   115,
1854      0,   288,   191,   289,   251,   290,   291,    86,     0,     0,
1855      0,     0,   292,     0,     0,   294,   295,   296,     0,     0,
1856    260,   261,   262,     0,     0,   297,   985,     0,     0,     0,
1857      0,   169,   263,   264,   265,   266,     0,    87,   267,     0,
1858      0,     0,     0,     0,   268,     0,     0,     0,   269,   270,
1859      0,   271,   424,     0,     0,     0,     0,     0,     0,    89,
1860      0,     0,     0,   272,     0,     0,     0,    90,    91,     0,
1861      0,     0,     0,    92,    93,    94,   273,     0,   274,     0,
1862    275,     0,   276,   277,     0,    95,     0,     0,     0,     0,
1863    278,     0,     0,    96,     0,     0,   425,     0,     0,     0,
1864     97,   426,     0,   279,     0,   280,   281,   427,     0,     0,
1865    282,     0,     0,     0,     0,     0,   283,     0,     0,     0,
1866      0,     0,    99,   100,   284,   101,   285,   286,     0,     0,
1867      0,     0,     0,     0,     0,     0,     0,   103,   104,     0,
1868    105,     0,     0,     0,   106,     0,   107,     0,     0,     0,
1869      0,     0,     0,     0,   108,     0,   170,     0,     0,     0,
1870      0,   109,     0,   110,     0,     0,     0,   111,     0,     0,
1871    287,     0,   112,     0,     0,     0,     0,     0,   113,     0,
1872    114,     0,     0,     0,     0,   430,   115,     0,   288,   191,
1873    289,   251,   290,   291,    86,   431,     0,     0,     0,   292,
1874      0,     0,   294,   295,   296,     0,     0,  1131,   261,   262,
1875      0,     0,   297,  1042,     0,     0,     0,     0,     0,  1132,
1876   1133,  1134,  1135,     0,    87,   267,   432,     0,     0,     0,
1877      0,   268,-32768,-32768,   436,   437,   438,   439,   271,     0,
1878      0,     0,     0,     0,     0,   440,    89,     0,     0,     0,
1879    272,     0,     0,     0,    90,    91,     0,     0,     0,     0,
1880     92,    93,    94,   273,     0,   274,     0,     0,     0,  1136,
1881    277,     0,    95,     0,     0,     0,     0,     0,     0,     0,
1882     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
1883      0,     0,   280,   281,     0,     0,     0,     0,     0,     0,
1884      0,     0,     0,   283,     0,     0,     0,     0,     0,    99,
1885    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
1886      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
1887      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
1888      0,   108,     0,     0,     0,     0,     0,     0,   109,     0,
1889    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
1890      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
1891      0,     0,     0,   115,     0,   288,   191,  1137,   251,   290,
1892    291,    86,     0,     0,     0,     0,  1138,     0,     0,  1139,
1893   1140,  1141,     0,     0,   893,   261,   262,     0,     0,  1142,
1894   1426,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1895      0,    87,   267,     0,     0,     0,     0,     0,   268,     0,
1896      0,     0,     0,     0,     0,   271,     0,     0,     0,     0,
1897      0,     0,     0,    89,     0,     0,     0,   272,     0,     0,
1898      0,    90,    91,     0,     0,     0,     0,    92,    93,    94,
1899    273,     0,   274,     0,   894,     0,   895,   277,     0,    95,
1900      0,     0,     0,     0,     0,     0,     0,    96,     0,     0,
1901      0,     0,     0,     0,    97,     0,     0,     0,     0,   280,
1902    281,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1903    283,     0,     0,     0,     0,     0,    99,   100,   284,   101,
1904    285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
1905      0,   103,   104,     0,   105,     0,     0,     0,   106,     0,
1906    107,     0,     0,     0,     0,     0,     0,     0,   108,     0,
1907      0,     0,     0,     0,     0,   109,     0,   110,     0,     0,
1908      0,   111,     0,     0,   287,     0,   112,     0,     0,     0,
1909      0,     0,   113,     0,   114,     0,     0,     0,     0,     0,
1910    115,     0,   288,   191,   896,   251,   290,   291,     0,    86,
1911      0,     0,     0,   897,     0,     0,   898,   899,   900,   572,
1912      0,     0,   260,   261,   262,     0,   901,  1290,     0,     0,
1913      0,     0,     0,   169,   263,   264,   265,   266,     0,    87,
1914    267,     0,     0,     0,     0,     0,   268,     0,     0,     0,
1915    269,   270,     0,   271,     0,     0,   573,     0,     0,     0,
1916      0,    89,     0,     0,     0,   272,     0,     0,     0,    90,
1917     91,   574,     0,     0,     0,    92,    93,    94,   273,     0,
1918    274,     0,   275,     0,   276,   277,     0,    95,     0,     0,
1919      0,     0,   278,     0,     0,    96,     0,     0,     0,     0,
1920      0,     0,    97,     0,     0,   279,     0,   280,   281,     0,
1921    575,     0,   282,     0,     0,     0,     0,     0,   283,     0,
1922      0,     0,     0,     0,    99,   100,   284,   101,   285,   286,
1923      0,     0,     0,     0,     0,     0,     0,     0,     0,   103,
1924    104,     0,   105,     0,     0,     0,   106,     0,   107,     0,
1925      0,     0,     0,     0,     0,     0,   108,     0,   170,     0,
1926      0,     0,     0,   109,     0,   110,     0,     0,     0,   111,
1927      0,     0,   287,     0,   112,     0,     0,     0,     0,     0,
1928    113,     0,   114,     0,     0,     0,     0,     0,   115,     0,
1929    288,   191,   289,   251,   290,   291,     0,    86,     0,     0,
1930      0,   292,     0,     0,   294,   295,   296,   973,     0,     0,
1931    260,   261,   262,     0,   297,     0,     0,     0,     0,     0,
1932      0,   169,   263,   264,   265,   266,     0,    87,   267,     0,
1933      0,     0,     0,     0,   268,     0,     0,     0,   269,   270,
1934      0,   271,     0,     0,   573,     0,     0,     0,     0,    89,
1935      0,     0,     0,   272,     0,     0,     0,    90,    91,   974,
1936      0,     0,     0,    92,    93,    94,   273,     0,   274,     0,
1937    275,     0,   276,   277,     0,    95,     0,     0,     0,     0,
1938    278,     0,     0,    96,     0,     0,     0,     0,     0,     0,
1939     97,     0,     0,   279,     0,   280,   281,     0,   975,     0,
1940    282,     0,     0,     0,     0,     0,   283,     0,     0,     0,
1941      0,     0,    99,   100,   284,   101,   285,   286,     0,     0,
1942      0,     0,     0,     0,     0,     0,     0,   103,   104,     0,
1943    105,     0,     0,     0,   106,     0,   107,     0,     0,     0,
1944      0,     0,     0,     0,   108,     0,   170,     0,     0,     0,
1945      0,   109,     0,   110,     0,     0,     0,   111,     0,     0,
1946    287,     0,   112,     0,     0,     0,     0,     0,   113,     0,
1947    114,     0,     0,     0,     0,     0,   115,     0,   288,   191,
1948    289,   251,   290,   291,     0,    86,     0,     0,     0,   292,
1949      0,     0,   294,   295,   296,  1030,     0,     0,   260,   261,
1950    262,     0,   297,     0,     0,     0,     0,     0,     0,   169,
1951    263,   264,   265,   266,     0,    87,   267,     0,     0,     0,
1952      0,     0,   268,     0,     0,     0,   269,   270,     0,   271,
1953      0,     0,   573,     0,     0,     0,     0,    89,     0,     0,
1954      0,   272,     0,     0,     0,    90,    91,  1031,     0,     0,
1955      0,    92,    93,    94,   273,     0,   274,     0,   275,     0,
1956    276,   277,     0,    95,     0,     0,     0,     0,   278,     0,
1957      0,    96,     0,     0,     0,     0,     0,     0,    97,     0,
1958      0,   279,     0,   280,   281,     0,  1032,     0,   282,     0,
1959      0,     0,     0,     0,   283,     0,     0,     0,     0,     0,
1960     99,   100,   284,   101,   285,   286,     0,     0,     0,     0,
1961      0,     0,     0,     0,     0,   103,   104,     0,   105,     0,
1962      0,     0,   106,     0,   107,     0,     0,     0,     0,     0,
1963      0,     0,   108,     0,   170,     0,     0,     0,     0,   109,
1964      0,   110,     0,     0,     0,   111,     0,     0,   287,     0,
1965    112,     0,     0,     0,     0,     0,   113,     0,   114,     0,
1966      0,    86,     0,     0,   115,     0,   288,   191,   289,   251,
1967    290,   291,     0,     0,   260,   261,   262,   292,     0,     0,
1968    294,   295,   296,     0,     0,   169,   263,   264,   265,   266,
1969    297,    87,   267,     0,     0,     0,     0,     0,   268,     0,
1970      0,     0,   269,   270,     0,   271,     0,     0,     0,     0,
1971      0,     0,     0,    89,     0,     0,     0,   272,     0,     0,
1972      0,    90,    91,     0,     0,     0,     0,    92,    93,    94,
1973    273,     0,   274,     0,   275,     0,   276,   277,     0,    95,
1974      0,     0,     0,     0,   278,     0,     0,    96,     0,     0,
1975      0,     0,     0,     0,    97,     0,     0,   279,     0,   280,
1976    281,     0,     0,     0,   282,     0,     0,     0,     0,     0,
1977    283,     0,     0,     0,     0,     0,    99,   100,   284,   101,
1978    285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
1979      0,   103,   104,     0,   105,     0,     0,     0,   106,     0,
1980    107,     0,     0,     0,     0,     0,     0,     0,   108,     0,
1981    170,     0,     0,     0,     0,   109,     0,   110,     0,     0,
1982      0,   111,     0,     0,   287,     0,   112,     0,     0,     0,
1983      0,     0,   113,     0,   114,     0,     0,     0,     0,     0,
1984    115,     0,   288,   191,   289,   251,   290,   291,     0,     0,
1985     86,     0,   635,   292,   293,   636,   294,   295,   296,     0,
1986      0,     0,     0,   260,   261,   262,   297,     0,     0,     0,
1987      0,     0,     0,     0,   169,   263,   264,   265,   266,     0,
1988     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
1989      0,   269,   270,     0,   271,     0,     0,     0,     0,     0,
1990      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
1991     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
1992      0,   274,     0,   275,     0,     0,   277,     0,    95,     0,
1993      0,     0,     0,   278,     0,     0,    96,     0,     0,     0,
1994      0,     0,     0,    97,     0,     0,   279,     0,   280,   281,
1995      0,     0,     0,   282,     0,     0,     0,     0,     0,   283,
1996      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
1997    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1998    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
1999      0,     0,     0,     0,     0,     0,     0,   108,     0,   170,
2000      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2001    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
2002      0,   113,     0,   114,     0,     0,     0,     0,     0,   115,
2003      0,   288,   191,   289,   251,   290,   291,     0,    86,     0,
2004    639,     0,   292,   640,     0,   294,   295,   296,     0,     0,
2005      0,   260,   261,   262,     0,   637,     0,     0,     0,     0,
2006      0,     0,   169,   263,   264,   265,   266,     0,    87,   267,
2007      0,     0,     0,     0,     0,   268,     0,     0,     0,   269,
2008    270,     0,   271,     0,     0,     0,     0,     0,     0,     0,
2009     89,     0,     0,     0,   272,     0,     0,     0,    90,    91,
2010      0,     0,     0,     0,    92,    93,    94,   273,     0,   274,
2011      0,   275,     0,     0,   277,     0,    95,     0,     0,     0,
2012      0,   278,     0,     0,    96,     0,     0,     0,     0,     0,
2013      0,    97,     0,     0,   279,     0,   280,   281,     0,     0,
2014      0,   282,     0,     0,     0,     0,     0,   283,     0,     0,
2015      0,     0,     0,    99,   100,   284,   101,   285,   286,     0,
2016      0,     0,     0,     0,     0,     0,     0,     0,   103,   104,
2017      0,   105,     0,     0,     0,   106,     0,   107,     0,     0,
2018      0,     0,     0,     0,     0,   108,     0,   170,     0,     0,
2019      0,     0,   109,     0,   110,     0,     0,     0,   111,     0,
2020      0,   287,     0,   112,     0,     0,     0,     0,     0,   113,
2021      0,   114,     0,     0,     0,     0,     0,   115,     0,   288,
2022    191,   289,   251,   290,   291,     0,    86,     0,   643,     0,
2023    292,   644,     0,   294,   295,   296,     0,     0,     0,   260,
2024    261,   262,     0,   641,     0,     0,     0,     0,     0,     0,
2025    169,   263,   264,   265,   266,     0,    87,   267,     0,     0,
2026      0,     0,     0,   268,     0,     0,     0,   269,   270,     0,
2027    271,     0,     0,     0,     0,     0,     0,     0,    89,     0,
2028      0,     0,   272,     0,     0,     0,    90,    91,     0,     0,
2029      0,     0,    92,    93,    94,   273,     0,   274,     0,   275,
2030      0,     0,   277,     0,    95,     0,     0,     0,     0,   278,
2031      0,     0,    96,     0,     0,     0,     0,     0,     0,    97,
2032      0,     0,   279,     0,   280,   281,     0,     0,     0,   282,
2033      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
2034      0,    99,   100,   284,   101,   285,   286,     0,     0,     0,
2035      0,     0,     0,     0,     0,     0,   103,   104,     0,   105,
2036      0,     0,     0,   106,     0,   107,     0,     0,     0,     0,
2037      0,     0,     0,   108,     0,   170,     0,     0,     0,     0,
2038    109,     0,   110,     0,     0,     0,   111,     0,     0,   287,
2039      0,   112,     0,     0,     0,     0,     0,   113,     0,   114,
2040      0,     0,     0,     0,     0,   115,     0,   288,   191,   289,
2041    251,   290,   291,     0,    86,     0,   647,     0,   292,   648,
2042      0,   294,   295,   296,     0,     0,     0,   260,   261,   262,
2043      0,   645,     0,     0,     0,     0,     0,     0,   169,   263,
2044    264,   265,   266,     0,    87,   267,     0,     0,     0,     0,
2045      0,   268,     0,     0,     0,   269,   270,     0,   271,     0,
2046      0,     0,     0,     0,     0,     0,    89,     0,     0,     0,
2047    272,     0,     0,     0,    90,    91,     0,     0,     0,     0,
2048     92,    93,    94,   273,     0,   274,     0,   275,     0,     0,
2049    277,     0,    95,     0,     0,     0,     0,   278,     0,     0,
2050     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
2051    279,     0,   280,   281,     0,     0,     0,   282,     0,     0,
2052      0,     0,     0,   283,     0,     0,     0,     0,     0,    99,
2053    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
2054      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2055      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2056      0,   108,     0,   170,     0,     0,     0,     0,   109,     0,
2057    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
2058      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2059      0,     0,     0,   115,     0,   288,   191,   289,   251,   290,
2060    291,     0,    86,     0,   651,     0,   292,   652,     0,   294,
2061    295,   296,     0,     0,     0,   260,   261,   262,     0,   649,
2062      0,     0,     0,     0,     0,     0,   169,   263,   264,   265,
2063    266,     0,    87,   267,     0,     0,     0,     0,     0,   268,
2064      0,     0,     0,   269,   270,     0,   271,     0,     0,     0,
2065      0,     0,     0,     0,    89,     0,     0,     0,   272,     0,
2066      0,     0,    90,    91,     0,     0,     0,     0,    92,    93,
2067     94,   273,     0,   274,     0,   275,     0,     0,   277,     0,
2068     95,     0,     0,     0,     0,   278,     0,     0,    96,     0,
2069      0,     0,     0,     0,     0,    97,     0,     0,   279,     0,
2070    280,   281,     0,     0,     0,   282,     0,     0,     0,     0,
2071      0,   283,     0,     0,     0,     0,     0,    99,   100,   284,
2072    101,   285,   286,     0,     0,     0,     0,     0,     0,     0,
2073      0,     0,   103,   104,     0,   105,     0,     0,     0,   106,
2074      0,   107,     0,     0,     0,     0,     0,     0,     0,   108,
2075      0,   170,     0,     0,     0,     0,   109,     0,   110,     0,
2076      0,     0,   111,     0,     0,   287,     0,   112,     0,     0,
2077      0,     0,     0,   113,     0,   114,     0,     0,     0,     0,
2078      0,   115,     0,   288,   191,   289,   251,   290,   291,     0,
2079     86,     0,   655,     0,   292,   656,     0,   294,   295,   296,
2080      0,     0,     0,   260,   261,   262,     0,   653,     0,     0,
2081      0,     0,     0,     0,   169,   263,   264,   265,   266,     0,
2082     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
2083      0,   269,   270,     0,   271,     0,     0,     0,     0,     0,
2084      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
2085     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
2086      0,   274,     0,   275,     0,     0,   277,     0,    95,     0,
2087      0,     0,     0,   278,     0,     0,    96,     0,     0,     0,
2088      0,     0,     0,    97,     0,     0,   279,     0,   280,   281,
2089      0,     0,     0,   282,     0,     0,     0,     0,     0,   283,
2090      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
2091    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2092    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
2093      0,     0,     0,     0,     0,     0,     0,   108,     0,   170,
2094      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2095    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
2096      0,   113,     0,   114,     0,     0,     0,     0,     0,   115,
2097      0,   288,   191,   289,   251,   290,   291,     0,    86,     0,
2098    659,     0,   292,   660,     0,   294,   295,   296,     0,     0,
2099      0,   260,   261,   262,     0,   657,     0,     0,     0,     0,
2100      0,     0,   169,   263,   264,   265,   266,     0,    87,   267,
2101      0,     0,     0,     0,     0,   268,     0,     0,     0,   269,
2102    270,     0,   271,     0,     0,     0,     0,     0,     0,     0,
2103     89,     0,     0,     0,   272,     0,     0,     0,    90,    91,
2104      0,     0,     0,     0,    92,    93,    94,   273,     0,   274,
2105      0,   275,     0,     0,   277,     0,    95,     0,     0,     0,
2106      0,   278,     0,     0,    96,     0,     0,     0,     0,     0,
2107      0,    97,     0,     0,   279,     0,   280,   281,     0,     0,
2108      0,   282,     0,     0,     0,     0,     0,   283,     0,     0,
2109      0,     0,     0,    99,   100,   284,   101,   285,   286,     0,
2110      0,     0,     0,     0,     0,     0,     0,     0,   103,   104,
2111      0,   105,     0,     0,     0,   106,     0,   107,     0,     0,
2112      0,     0,     0,     0,     0,   108,     0,   170,     0,     0,
2113      0,     0,   109,     0,   110,     0,     0,     0,   111,     0,
2114      0,   287,     0,   112,     0,     0,     0,     0,     0,   113,
2115      0,   114,     0,     0,    86,     0,     0,   115,     0,   288,
2116    191,   289,   251,   290,   291,     0,     0,   260,   261,   262,
2117    292,     0,     0,   294,   295,   296,     0,     0,   169,   263,
2118    264,   265,   266,   661,    87,   267,     0,     0,     0,     0,
2119      0,   268,     0,     0,     0,   269,   270,     0,   271,     0,
2120      0,   573,     0,     0,     0,     0,    89,     0,     0,     0,
2121    272,     0,     0,     0,    90,    91,     0,     0,     0,     0,
2122     92,    93,    94,   273,     0,   274,     0,   275,     0,   276,
2123    277,     0,    95,     0,     0,     0,     0,   278,     0,     0,
2124     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
2125    279,     0,   280,   281,     0,     0,     0,   282,     0,     0,
2126      0,     0,     0,   283,     0,     0,     0,     0,     0,    99,
2127    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
2128      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2129      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2130      0,   108,     0,   170,     0,     0,     0,     0,   109,     0,
2131    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
2132      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2133     86,     0,     0,   115,     0,   288,   191,   289,   251,   290,
2134    291,     0,     0,   260,   261,   262,   292,     0,     0,   294,
2135    295,   296,     0,     0,   169,   263,   264,   265,   266,   297,
2136     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
2137      0,   269,   270,     0,   271,     0,     0,     0,     0,     0,
2138      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
2139     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
2140      0,   274,     0,   275,     0,   276,   277,     0,    95,     0,
2141      0,     0,     0,   278,     0,     0,    96,     0,     0,     0,
2142      0,     0,     0,    97,   543,     0,   279,     0,   280,   281,
2143      0,     0,     0,   282,     0,     0,     0,     0,     0,   283,
2144      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
2145    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2146    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
2147      0,     0,     0,     0,     0,     0,     0,   108,     0,   170,
2148      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2149    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
2150      0,   113,     0,   114,     0,     0,    86,     0,     0,   115,
2151      0,   288,   191,   289,   251,   290,   291,     0,     0,   260,
2152    261,   262,   292,     0,     0,   294,   295,   296,     0,     0,
2153    169,   263,   264,   265,   266,   297,    87,   267,     0,     0,
2154      0,     0,     0,   268,     0,     0,     0,   269,   270,     0,
2155    271,     0,     0,     0,     0,     0,     0,     0,    89,     0,
2156      0,     0,   272,     0,     0,     0,    90,    91,     0,     0,
2157      0,     0,    92,    93,    94,   273,     0,   274,     0,   275,
2158      0,   276,   277,     0,    95,     0,     0,     0,     0,   278,
2159      0,     0,    96,     0,     0,     0,     0,     0,     0,    97,
2160      0,     0,   279,     0,   280,   281,     0,     0,     0,   282,
2161      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
2162      0,    99,   100,   284,   101,   285,   286,     0,     0,     0,
2163      0,     0,     0,     0,     0,     0,   103,   104,     0,   105,
2164      0,     0,     0,   106,     0,   107,     0,     0,     0,     0,
2165      0,     0,     0,   108,     0,   170,     0,     0,     0,     0,
2166    109,     0,   110,     0,     0,     0,   111,     0,     0,   287,
2167      0,   112,     0,     0,     0,     0,     0,   113,     0,   114,
2168      0,     0,     0,     0,     0,   115,     0,   288,   191,   289,
2169    251,   290,   291,     0,    86,     0,   631,     0,   292,   632,
2170      0,   294,   295,   296,     0,     0,     0,   260,   261,   262,
2171      0,   297,     0,     0,     0,     0,     0,     0,   169,   263,
2172    264,   265,   266,     0,    87,   267,     0,     0,     0,     0,
2173      0,   268,     0,     0,     0,   269,   270,     0,   271,     0,
2174      0,     0,     0,     0,     0,     0,    89,     0,     0,     0,
2175    272,     0,     0,     0,    90,    91,     0,     0,     0,     0,
2176     92,    93,    94,   273,     0,   274,     0,     0,     0,     0,
2177    277,     0,    95,     0,     0,     0,     0,   278,     0,     0,
2178     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
2179    279,     0,   280,   281,     0,     0,     0,   282,     0,     0,
2180      0,     0,     0,   283,     0,     0,     0,     0,     0,    99,
2181    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
2182      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2183      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2184      0,   108,     0,   170,     0,     0,     0,     0,   109,     0,
2185    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
2186      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2187     86,     0,     0,   115,     0,   288,   191,-32768,   251,   290,
2188    291,     0,     0,   260,   261,   262,   292,     0,     0,   294,
2189    295,   296,     0,     0,   169,   263,   264,   265,   266,   633,
2190     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
2191      0,   269,   270,     0,   271,     0,     0,     0,     0,     0,
2192      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
2193     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
2194      0,   274,     0,   275,     0,     0,   277,     0,    95,     0,
2195      0,     0,     0,   278,     0,     0,    96,     0,     0,     0,
2196      0,     0,     0,    97,   543,     0,   279,     0,   280,   281,
2197      0,     0,     0,   282,     0,     0,     0,     0,     0,   283,
2198      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
2199    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2200    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
2201      0,     0,     0,     0,     0,     0,     0,   108,     0,   170,
2202      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2203    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
2204      0,   113,     0,   114,     0,     0,    86,     0,     0,   115,
2205      0,   288,   191,   289,   251,   290,   291,     0,     0,   260,
2206    261,   262,   292,     0,     0,   294,   295,   296,     0,     0,
2207    169,   263,   264,   265,   266,   297,    87,   267,     0,     0,
2208      0,     0,     0,   268,     0,     0,     0,   269,   270,     0,
2209    271,     0,     0,     0,     0,     0,     0,     0,    89,     0,
2210      0,     0,   272,     0,     0,     0,    90,    91,     0,     0,
2211      0,     0,    92,    93,    94,   273,     0,   274,     0,   275,
2212      0,     0,   277,     0,    95,     0,     0,     0,     0,   278,
2213      0,     0,    96,     0,     0,     0,     0,     0,     0,    97,
2214      0,     0,   279,     0,   280,   281,     0,     0,     0,   282,
2215      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
2216      0,    99,   100,   284,   101,   285,   286,     0,     0,     0,
2217      0,     0,     0,     0,     0,     0,   103,   104,     0,   105,
2218      0,     0,     0,   106,     0,   107,     0,     0,     0,     0,
2219      0,     0,     0,   108,     0,   170,     0,     0,     0,     0,
2220    109,     0,   110,     0,     0,     0,   111,     0,     0,   287,
2221      0,   112,     0,     0,     0,     0,     0,   113,     0,   114,
2222      0,     0,    86,     0,     0,   115,     0,   288,   191,   289,
2223    251,   290,   291,     0,     0,   602,   261,   262,   292,     0,
2224      0,   294,   295,   296,     0,     0,   169,   603,   604,   605,
2225    606,   297,    87,   267,     0,     0,     0,     0,     0,   268,
2226      0,     0,     0,     0,     0,     0,   271,     0,     0,     0,
2227      0,     0,     0,     0,    89,     0,     0,     0,   272,     0,
2228      0,     0,    90,    91,     0,     0,     0,     0,    92,    93,
2229     94,   273,     0,   274,     0,     0,     0,     0,   277,     0,
2230     95,     0,     0,     0,     0,   607,     0,     0,    96,     0,
2231      0,     0,     0,     0,     0,    97,     0,     0,   608,     0,
2232    280,   281,     0,     0,     0,   609,     0,     0,     0,     0,
2233      0,   283,     0,     0,     0,     0,     0,    99,   100,   284,
2234    101,   285,   286,     0,     0,     0,     0,     0,     0,     0,
2235      0,     0,   103,   104,     0,   105,     0,     0,     0,   106,
2236      0,   107,     0,     0,     0,     0,     0,     0,     0,   108,
2237      0,   170,     0,     0,     0,     0,   109,     0,   110,     0,
2238      0,     0,   111,     0,     0,   287,     0,   112,     0,     0,
2239      0,     0,     0,   113,     0,   114,     0,     0,    86,     0,
2240      0,   115,     0,   288,   191,   610,   251,   290,   291,     0,
2241      0,   602,   261,   262,   611,     0,     0,   612,   613,   614,
2242      0,     0,   169,   603,   604,   605,   606,   615,    87,   267,
2243      0,     0,     0,     0,     0,   268,     0,     0,     0,     0,
2244      0,     0,   271,     0,     0,     0,     0,     0,     0,     0,
2245     89,     0,     0,     0,   272,     0,     0,     0,    90,    91,
2246      0,     0,     0,     0,    92,    93,    94,   273,     0,   274,
2247      0,     0,     0,     0,   277,     0,    95,     0,     0,     0,
2248      0,   607,     0,     0,    96,     0,     0,     0,     0,     0,
2249      0,    97,     0,     0,   608,   424,   280,   281,     0,     0,
2250      0,   609,     0,     0,     0,     0,     0,   283,     0,     0,
2251      0,     0,     0,    99,   100,   284,   101,   285,   286,     0,
2252      0,     0,     0,     0,     0,     0,     0,     0,   103,   104,
2253      0,   105,     0,     0,     0,   106,     0,   107,     0,   425,
2254      0,     0,     0,     0,   426,   108,     0,   170,     0,     0,
2255    427,     0,   109,     0,   110,     0,     0,     0,   111,     0,
2256      0,   287,     0,   112,     0,     0,     0,     0,     0,   113,
2257      0,   114,     0,     0,    86,     0,     0,   115,     0,   288,
2258    191,-32768,   251,   290,   291,     0,     0,  1131,   261,   262,
2259    611,     0,     0,   612,   613,   614,     0,     0,     0,  1132,
2260   1133,  1134,  1135,   615,    87,   267,     0,     0,     0,     0,
2261      0,   268,     0,     0,     0,     0,     0,     0,   271,     0,
2262      0,     0,     0,     0,     0,     0,    89,     0,   430,     0,
2263    272,     0,     0,     0,    90,    91,     0,     0,   431,     0,
2264     92,    93,    94,   273,     0,   274,     0,     0,     0,  1136,
2265    277,     0,    95,     0,     0,     0,     0,     0,     0,     0,
2266     96,     0,     0,     0,     0,     0,     0,    97,     0,   432,
2267      0,     0,   280,   281,   433,   434,   435,   436,   437,   438,
2268    439,     0,     0,   283,     0,     0,     0,     0,   440,    99,
2269    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
2270      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2271      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2272      0,   108,     0,     0,     0,     0,     0,     0,   109,     0,
2273    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
2274      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2275     86,     0,     0,   115,     0,   288,   191,  1137,   251,   290,
2276    291,     0,     0,  1131,   261,   262,  1138,     0,     0,  1139,
2277   1140,  1141,     0,     0,     0,  1132,  1133,  1134,  1135,  1142,
2278     87,   267,     0,     0,     0,     0,     0,   268,     0,     0,
2279      0,     0,     0,     0,   271,     0,     0,     0,     0,     0,
2280      0,     0,    89,     0,     0,     0,   272,     0,     0,     0,
2281     90,    91,     0,     0,     0,     0,    92,    93,    94,   273,
2282      0,   274,     0,     0,     0,  1136,   277,     0,    95,     0,
2283      0,     0,     0,     0,     0,     0,    96,     0,     0,     0,
2284      0,     0,     0,    97,     0,     0,     0,     0,   280,   281,
2285      0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
2286      0,     0,     0,     0,     0,    99,   100,   284,   101,   285,
2287    286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2288    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
2289      0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
2290      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2291    111,     0,     0,   287,     0,   112,     0,     0,     0,     0,
2292      0,   113,     0,   114,     0,     0,    86,     0,     0,   115,
2293      0,   288,   191,-32768,   251,   290,   291,     0,     0,   554,
2294    261,   262,  1138,     0,     0,  1139,  1140,  1141,     0,     0,
2295    169,     0,     0,     0,     0,  1142,    87,   267,     0,     0,
2296      0,     0,     0,   268,     0,     0,     0,     0,     0,     0,
2297    271,     0,     0,     0,     0,     0,     0,     0,    89,     0,
2298      0,     0,   272,     0,     0,     0,    90,    91,     0,     0,
2299      0,     0,    92,    93,    94,   273,     0,   274,     0,     0,
2300      0,     0,   277,     0,    95,     0,     0,     0,     0,   555,
2301      0,     0,    96,     0,     0,     0,     0,     0,     0,    97,
2302      0,     0,   556,     0,   280,   281,     0,     0,     0,   557,
2303      0,     0,     0,     0,     0,   283,     0,     0,     0,     0,
2304      0,    99,   100,   284,   101,   285,   286,     0,     0,     0,
2305      0,     0,     0,     0,     0,     0,   103,   104,     0,   105,
2306      0,     0,     0,   106,     0,   107,     0,     0,     0,     0,
2307      0,     0,     0,   108,     0,   170,     0,     0,     0,     0,
2308    109,     0,   110,     0,     0,     0,   111,     0,     0,   287,
2309      0,   112,     0,     0,     0,     0,     0,   113,     0,   114,
2310      0,     0,    86,     0,     0,   115,     0,   288,   191,   558,
2311    251,   290,   291,     0,     0,   554,   261,   262,   559,     0,
2312      0,   560,     0,     0,     0,     0,   169,     0,     0,     0,
2313      0,   561,    87,   267,     0,     0,     0,     0,     0,   268,
2314      0,     0,     0,     0,     0,     0,   271,     0,     0,     0,
2315      0,     0,     0,     0,    89,     0,     0,     0,   272,     0,
2316      0,     0,    90,    91,     0,     0,     0,     0,    92,    93,
2317     94,   273,     0,   274,     0,     0,     0,     0,   277,     0,
2318     95,     0,     0,     0,     0,   555,     0,     0,    96,     0,
2319      0,     0,     0,     0,     0,    97,     0,     0,   556,     0,
2320    280,   281,     0,     0,     0,   557,     0,     0,     0,     0,
2321      0,   283,     0,     0,     0,     0,     0,    99,   100,   284,
2322    101,   285,   286,     0,     0,     0,     0,     0,     0,     0,
2323      0,     0,   103,   104,     0,   105,     0,     0,     0,   106,
2324      0,   107,     0,     0,     0,     0,     0,     0,     0,   108,
2325      0,   170,     0,     0,     0,     0,   109,     0,   110,     0,
2326      0,     0,   111,     0,     0,   287,     0,   112,     0,     0,
2327      0,     0,     0,   113,     0,   114,     0,     0,    86,     0,
2328      0,   115,     0,   288,   191,-32768,   251,   290,   291,     0,
2329      0,   893,   261,   262,   559,     0,     0,   560,     0,     0,
2330      0,     0,     0,     0,     0,     0,     0,   561,    87,   267,
2331      0,     0,     0,     0,     0,   268,     0,     0,     0,     0,
2332      0,     0,   271,     0,     0,     0,     0,     0,     0,     0,
2333     89,     0,     0,     0,   272,     0,     0,     0,    90,    91,
2334      0,     0,     0,     0,    92,    93,    94,   273,     0,   274,
2335      0,   894,     0,   895,   277,     0,    95,     0,     0,     0,
2336      0,     0,     0,     0,    96,     0,     0,     0,     0,     0,
2337      0,    97,     0,     0,     0,     0,   280,   281,     0,     0,
2338      0,     0,     0,     0,     0,     0,     0,   283,     0,     0,
2339      0,     0,     0,    99,   100,   284,   101,   285,   286,     0,
2340      0,     0,     0,     0,     0,     0,     0,     0,   103,   104,
2341      0,   105,     0,     0,     0,   106,     0,   107,     0,     0,
2342      0,     0,     0,     0,     0,   108,     0,     0,     0,     0,
2343      0,     0,   109,     0,   110,     0,     0,     0,   111,     0,
2344      0,   287,     0,   112,     0,     0,     0,     0,     0,   113,
2345      0,   114,     0,     0,    86,     0,     0,   115,     0,   288,
2346    191,   896,   251,   290,   291,     0,     0,   893,   261,   262,
2347    897,     0,     0,   898,   899,   900,     0,     0,     0,     0,
2348      0,     0,     0,   901,    87,   267,     0,     0,     0,     0,
2349      0,   268,     0,     0,     0,     0,     0,     0,   271,     0,
2350      0,     0,     0,     0,     0,     0,    89,     0,     0,     0,
2351    272,     0,     0,     0,    90,    91,     0,     0,     0,     0,
2352     92,    93,    94,   273,     0,   274,     0,   894,     0,   895,
2353    277,     0,    95,     0,     0,     0,     0,     0,     0,     0,
2354     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
2355      0,     0,   280,   281,     0,     0,     0,     0,     0,     0,
2356      0,     0,     0,   283,     0,     0,     0,     0,     0,    99,
2357    100,   284,   101,   285,   286,     0,     0,     0,     0,     0,
2358      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2359      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2360      0,   108,     0,     0,    86,     0,     0,     0,   109,     0,
2361    110,     0,     0,     0,   111,     0,     0,   287,     0,   112,
2362      0,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2363      0,     0,     0,   115,    87,   288,   191,-32768,   251,   290,
2364    291,    88,     0,     0,     0,     0,   897,     0,     0,   898,
2365    899,   900,     0,     0,     0,     0,    89,     0,     0,   901,
2366      0,     0,     0,     0,    90,    91,     0,     0,     0,     0,
2367     92,    93,    94,     0,     0,     0,     0,     0,     0,     0,
2368      0,     0,    95,     0,     0,     0,     0,     0,     0,     0,
2369     96,     0,     0,     0,     0,     0,     0,    97,     0,     0,
2370      0,     0,    98,     0,     0,     0,     0,     0,     0,     0,
2371      0,     0,     0,     0,     0,     0,     0,     0,     0,    99,
2372    100,     0,   101,     0,   102,     0,     0,     0,     0,     0,
2373      0,     0,     0,     0,   103,   104,     0,   105,     0,     0,
2374      0,   106,     0,   107,     0,     0,     0,     0,     0,     0,
2375      0,   108,     0,     0,     0,     0,     0,     0,   109,     0,
2376    110,     0,     0,     0,   111,     0,     0,   943,     0,   112,
2377     86,     0,     0,     0,     0,   113,     0,   114,     0,     0,
2378      0,     0,     0,   115,     0,   116,   191,   241,   251,     0,
2379    720,     0,   220,   221,   222,   223,   224,   225,   226,     0,
2380     87,     0,     0,   516,     0,     0,     0,    88,     0,     0,
2381      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2382      0,     0,    89,     0,     0,     0,     0,     0,     0,   217,
2383     90,    91,     0,     0,     0,     0,    92,    93,    94,     0,
2384      0,     0,     0,     0,     0,     0,     0,     0,    95,     0,
2385      0,     0,     0,     0,     0,     0,    96,   218,     0,     0,
2386      0,     0,     0,    97,     0,     0,     0,     0,    98,     0,
2387      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2388      0,     0,     0,     0,     0,    99,   100,     0,   101,     0,
2389    102,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2390    103,   104,     0,   105,     0,     0,     0,   106,     0,   107,
2391      0,     0,     0,     0,     0,    86,     0,   108,     0,     0,
2392      0,     0,     0,     0,   109,     0,   110,     0,     0,     0,
2393    111,     0,     0,     0,     0,   112,     0,     0,     0,     0,
2394      0,   113,     0,   114,     0,    87,     0,     0,     0,   115,
2395      0,   116,    88,   219,     0,     0,     0,     0,   220,   221,
2396    222,   223,   224,   225,   226,     0,     0,    89,     0,     0,
2397      0,     0,     0,     0,   217,    90,    91,     0,     0,     0,
2398      0,    92,    93,    94,     0,     0,     0,     0,     0,     0,
2399      0,     0,     0,    95,     0,     0,     0,     0,     0,    86,
2400      0,    96,   218,     0,     0,     0,     0,     0,    97,     0,
2401      0,     0,     0,    98,     0,     0,     0,     0,     0,     0,
2402      0,     0,     0,   169,     0,     0,     0,     0,     0,    87,
2403     99,   100,     0,   101,     0,   102,    88,     0,     0,     0,
2404      0,     0,     0,     0,     0,   103,   104,     0,   105,     0,
2405      0,    89,   106,     0,   107,     0,     0,     0,     0,    90,
2406     91,     0,   108,     0,     0,    92,    93,    94,     0,   109,
2407      0,   110,     0,     0,     0,   111,     0,    95,     0,     0,
2408    112,     0,     0,    86,     0,    96,   113,     0,   114,     0,
2409      0,     0,    97,     0,   115,     0,   116,    98,   219,     0,
2410      0,     0,     0,   220,   221,   222,   223,   224,   225,   226,
2411      0,     0,     0,    87,    99,   100,     0,   101,     0,   102,
2412     88,     0,     0,     0,     0,     0,     0,     0,     0,   103,
2413    104,     0,   105,     0,     0,    89,   106,     0,   107,     0,
2414      0,     0,     0,    90,    91,     0,   108,     0,   170,    92,
2415     93,    94,     0,   109,     0,   110,     0,     0,     0,   111,
2416      0,    95,     0,     0,   112,     0,     0,    86,     0,    96,
2417    113,     0,   114,     0,     0,     0,    97,     0,   115,     0,
2418    116,    98,     0,     0,   290,     0,     0,     0,     0,     0,
2419      0,     0,   457,     0,     0,     0,     0,    87,    99,   100,
2420      0,   101,     0,   102,    88,     0,     0,     0,     0,     0,
2421      0,     0,     0,   103,   104,     0,   105,     0,     0,    89,
2422    106,     0,   107,     0,     0,     0,     0,    90,    91,     0,
2423    108,     0,     0,    92,    93,    94,     0,   109,     0,   110,
2424      0,     0,     0,   111,     0,    95,     0,     0,   112,     0,
2425      0,    86,     0,    96,   113,     0,   114,     0,     0,     0,
2426     97,     0,   115,     0,   116,    98,     0,     0,     0,     0,
2427      0,     0,     0,     0,     0,     0,   360,     0,     0,     0,
2428      0,    87,    99,   100,     0,   101,     0,   102,    88,     0,
2429      0,     0,     0,     0,     0,     0,     0,   103,   104,     0,
2430    105,     0,     0,    89,   106,     0,   107,     0,     0,     0,
2431      0,    90,    91,     0,   108,     0,     0,    92,    93,    94,
2432      0,   109,     0,   110,     0,     0,     0,   111,     0,    95,
2433      0,     0,   112,     0,     0,    86,     0,    96,   113,     0,
2434    114,     0,     0,     0,    97,     0,   115,     0,   116,    98,
2435      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2436    669,     0,     0,     0,     0,    87,    99,   100,     0,   101,
2437      0,   102,    88,     0,     0,     0,     0,     0,     0,     0,
2438      0,   103,   104,     0,   105,     0,     0,    89,   106,     0,
2439    107,     0,     0,     0,     0,    90,    91,     0,   108,     0,
2440      0,    92,    93,    94,     0,   109,     0,   110,     0,     0,
2441      0,   111,     0,    95,     0,     0,   112,     0,     0,    86,
2442      0,    96,   113,     0,   114,     0,     0,     0,    97,     0,
2443    115,     0,   116,    98,     0,     0,     0,     0,     0,     0,
2444      0,     0,     0,   169,   876,     0,     0,     0,     0,    87,
2445     99,   100,     0,   101,     0,   102,    88,     0,     0,     0,
2446      0,     0,     0,     0,     0,   103,   104,     0,   105,     0,
2447      0,    89,   106,     0,   107,     0,     0,     0,     0,    90,
2448     91,     0,   108,     0,     0,    92,    93,    94,     0,   109,
2449      0,   110,     0,     0,     0,   111,     0,    95,     0,     0,
2450    112,     0,     0,    86,     0,    96,   113,     0,   114,     0,
2451      0,     0,    97,     0,   115,     0,   116,    98,     0,     0,
2452      0,     0,     0,     0,     0,     0,     0,     0,  1084,     0,
2453      0,     0,     0,    87,    99,   100,     0,   101,     0,   102,
2454     88,     0,     0,     0,     0,     0,     0,     0,     0,   103,
2455    104,     0,   105,     0,     0,    89,   106,     0,   107,     0,
2456      0,     0,     0,    90,    91,     0,   108,     0,   170,    92,
2457     93,    94,     0,   109,     0,   110,     0,     0,     0,   111,
2458      0,    95,     0,     0,   112,     0,     0,     0,     0,    96,
2459    113,     0,   114,     0,     0,     0,    97,     0,   115,     0,
2460    116,    98,     0,     0,   290,     0,     0,     0,     0,     0,
2461      0,     0,     0,     0,     0,     0,     0,     0,    99,   100,
2462      0,   101,     0,   102,     0,    86,     0,     0,     0,     0,
2463      0,     0,     0,   103,   104,     0,   105,     0,     0,     0,
2464    106,     0,   107,     0,     0,     0,   585,     0,   586,     0,
2465    108,     0,     0,     0,     0,    87,     0,   109,     0,   110,
2466      0,     0,    88,   111,     0,     0,     0,     0,   112,     0,
2467      0,   587,     0,     0,   113,   588,   114,    89,     0,     0,
2468      0,     0,   115,     0,   116,    90,    91,   251,     0,     0,
2469      0,    92,    93,    94,     0,     0,     0,     0,     0,     0,
2470      0,     0,     0,    95,     0,   589,     0,     0,   590,   591,
2471      0,    96,     0,     0,     0,     0,     0,     0,    97,     0,
2472      0,     0,   592,    98,     0,     0,     0,   593,     0,     0,
2473      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2474     99,   100,   594,   101,   595,   102,     0,     0,     0,     0,
2475      0,     0,     0,   596,     0,   103,   104,     0,   105,     0,
2476      0,     0,   106,    86,   107,     0,     0,     0,     0,     0,
2477    597,     0,   108,     0,     0,     0,     0,   261,   262,   109,
2478      0,   110,     0,     0,     0,   111,     0,     0,     0,     0,
2479    112,     0,     0,    87,   500,     0,   113,   598,   114,     0,
2480    501,     0,     0,     0,   115,     0,   116,   502,     0,     0,
2481      0,     0,     0,     0,     0,    89,     0,     0,     0,     0,
2482      0,     0,     0,    90,    91,     0,     0,     0,     0,    92,
2483     93,    94,   273,     0,   274,     0,     0,     0,     0,   503,
2484      0,    95,     0,     0,     0,     0,     0,     0,     0,    96,
2485      0,     0,     0,     0,     0,     0,    97,     0,     0,     0,
2486      0,    98,     0,     0,     0,     0,     0,     0,     0,     0,
2487      0,     0,   283,     0,     0,     0,     0,     0,    99,   100,
2488      0,   101,     0,   102,     0,    86,     0,     0,     0,     0,
2489      0,     0,     0,   103,   104,     0,   105,     0,     0,     0,
2490    106,   479,   107,     0,     0,     0,   480,     0,     0,     0,
2491    108,     0,     0,     0,     0,    87,     0,   109,     0,   110,
2492      0,     0,    88,   111,     0,     0,     0,     0,   112,     0,
2493      0,   481,     0,     0,   113,     0,   114,    89,     0,     0,
2494      0,     0,   115,     0,   116,    90,    91,     0,     0,     0,
2495      0,    92,    93,    94,     0,     0,     0,     0,     0,     0,
2496      0,     0,     0,    95,     0,     0,     0,     0,     0,    86,
2497    482,    96,     0,     0,     0,     0,     0,     0,    97,     0,
2498      0,     0,     0,    98,     0,     0,     0,     0,     0,     0,
2499    483,     0,     0,   169,     0,     0,     0,     0,     0,    87,
2500     99,   100,     0,   101,     0,   102,    88,     0,     0,     0,
2501      0,     0,     0,     0,     0,   103,   104,     0,   105,     0,
2502      0,    89,   106,     0,   107,     0,     0,     0,     0,    90,
2503     91,     0,   108,     0,     0,    92,    93,    94,     0,   109,
2504      0,   110,     0,     0,     0,   111,     0,    95,     0,     0,
2505    112,     0,     0,    86,     0,    96,   113,     0,   114,     0,
2506      0,     0,    97,     0,   115,     0,   116,    98,     0,     0,
2507      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2508      0,     0,     0,    87,    99,   100,     0,   101,     0,   102,
2509     88,     0,     0,     0,     0,     0,     0,     0,     0,   103,
2510    104,     0,   105,   734,     0,    89,   106,     0,   107,     0,
2511      0,     0,     0,    90,    91,     0,   108,     0,   170,    92,
2512     93,    94,     0,   109,     0,   110,     0,     0,     0,   111,
2513      0,    95,     0,     0,   112,     0,     0,    86,     0,    96,
2514    113,   735,   114,     0,     0,     0,    97,     0,   115,     0,
2515    116,    98,     0,     0,     0,     0,     0,     0,     0,     0,
2516      0,     0,     0,     0,     0,     0,     0,    87,    99,   100,
2517      0,   101,     0,   102,    88,     0,     0,     0,     0,     0,
2518      0,     0,     0,   103,   104,     0,   105,     0,     0,    89,
2519    106,     0,   107,     0,     0,     0,     0,    90,    91,     0,
2520    108,     0,     0,    92,    93,    94,     0,   109,     0,   110,
2521      0,     0,     0,   111,     0,    95,     0,     0,   112,     0,
2522      0,     0,     0,    96,   113,     0,   114,     0,    86,     0,
2523     97,     0,   115,     0,   116,    98,     0,     0,     0,     0,
2524      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2525      0,     0,    99,   100,     0,   101,     0,   102,    87,     0,
2526      0,     0,     0,     0,     0,    88,     0,   103,   104,     0,
2527    105,     0,     0,     0,   106,     0,   107,     0,     0,     0,
2528     89,     0,     0,     0,   108,     0,     0,   525,    90,    91,
2529      0,   109,     0,   110,    92,    93,    94,   111,     0,     0,
2530      0,     0,   112,     0,     0,     0,    95,     0,   113,     0,
2531    114,     0,     0,     0,    96,     0,   115,     0,   116,    86,
2532      0,    97,     0,     0,     0,  1079,    98,     0,     0,     0,
2533      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2534      0,     0,     0,    99,   100,     0,   101,     0,   102,    87,
2535      0,     0,     0,     0,     0,     0,    88,     0,   103,   104,
2536      0,   105,     0,     0,     0,   106,     0,   107,     0,     0,
2537      0,    89,     0,     0,     0,   108,     0,     0,   955,    90,
2538     91,     0,   109,     0,   110,    92,    93,    94,   111,     0,
2539      0,     0,     0,   112,     0,     0,     0,    95,     0,   113,
2540      0,   114,     0,    86,     0,    96,     0,   115,     0,   116,
2541      0,     0,    97,     0,     0,     0,     0,    98,     0,     0,
2542      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2543      0,     0,     0,    87,    99,   100,     0,   101,     0,   102,
2544     88,     0,     0,     0,     0,     0,     0,     0,     0,   103,
2545    104,     0,   105,     0,     0,    89,   106,     0,   107,     0,
2546      0,     0,     0,    90,    91,     0,   108,     0,     0,    92,
2547     93,    94,     0,   109,     0,   110,     0,     0,     0,   111,
2548      0,    95,     0,     0,   112,     0,     0,    86,     0,    96,
2549    113,     0,   114,     0,     0,     0,    97,     0,   115,     0,
2550    116,    98,     0,     0,     0,     0,     0,     0,     0,     0,
2551      0,     0,     0,     0,     0,     0,     0,    87,    99,   100,
2552      0,   101,     0,   102,    88,     0,     0,     0,     0,     0,
2553      0,     0,     0,   103,   104,     0,   105,     0,     0,    89,
2554    106,     0,   107,     0,     0,     0,     0,    90,    91,     0,
2555    108,     0,     0,    92,    93,    94,     0,   109,     0,   110,
2556      0,     0,     0,   111,     0,    95,     0,     0,   112,     0,
2557      0,    86,     0,    96,   113,     0,   114,     0,     0,     0,
2558     97,     0,   115,     0,   116,   179,     0,     0,     0,     0,
2559      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2560      0,    87,    99,   100,     0,   101,     0,   102,    88,     0,
2561      0,     0,     0,     0,     0,     0,     0,   103,   104,     0,
2562    105,     0,     0,    89,   106,     0,   107,     0,     0,     0,
2563      0,    90,    91,     0,   108,     0,     0,    92,    93,    94,
2564      0,   109,     0,   110,     0,     0,     0,   111,     0,    95,
2565      0,     0,   112,     0,     0,    86,     0,    96,   113,     0,
2566    114,     0,     0,     0,    97,     0,   115,     0,   116,   196,
2567      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2568      0,     0,     0,     0,     0,    87,    99,   100,     0,   101,
2569      0,   102,    88,     0,     0,     0,     0,     0,     0,     0,
2570      0,   103,   104,     0,   105,     0,     0,    89,   106,     0,
2571    107,     0,     0,     0,     0,    90,    91,     0,   108,     0,
2572      0,    92,    93,    94,     0,   109,     0,   110,     0,     0,
2573      0,   111,     0,    95,     0,     0,   112,     0,     0,     0,
2574      0,    96,   113,     0,   114,     0,     0,     0,    97,     0,
2575    115,     0,   116,   198,     0,     0,     0,     0,     0,     0,
2576      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2577     99,   100,     0,   101,     0,   102,     0,     0,     0,     0,
2578      0,     0,     0,     0,     0,   103,   104,     0,   105,   261,
2579    262,     0,   106,     0,   107,     0,     0,     0,     0,     0,
2580      0,     0,   108,     0,     0,    87,   267,     0,     0,   109,
2581      0,   110,   403,     0,     0,   111,     0,     0,     0,   271,
2582    112,     0,     0,     0,   261,   262,   113,    89,   114,     0,
2583      0,   272,     0,     0,   115,     0,   116,     0,     0,     0,
2584     87,   267,    93,    94,   273,     0,   274,   403,     0,     0,
2585      0,   277,     0,     0,   271,     0,     0,     0,     0,     0,
2586      0,     0,    89,     0,     0,     0,   272,     0,    97,   543,
2587      0,     0,     0,   404,   281,     0,     0,    93,    94,   273,
2588      0,   274,     0,     0,   283,     0,   277,     0,     0,     0,
2589     99,     0,   284,     0,   285,   405,     0,     0,     0,     0,
2590      0,     0,     0,    97,     0,     0,     0,     0,   404,   281,
2591      0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
2592      0,     0,     0,     0,     0,    99,     0,   284,     0,   285,
2593    405,     0,     0,     0,     0,     0,     0,     0,   287,     0,
2594      0,     0,     0,     0,     0,     0,   261,   262,     0,     0,
2595      0,     0,     0,     0,     0,     0,   406,   191,     0,   251,
2596    290,   291,    87,   267,     0,     0,     0,     0,     0,   403,
2597      0,     0,     0,   287,     0,     0,   271,     0,     0,     0,
2598      0,     0,     0,     0,    89,     0,     0,     0,   272,     0,
2599      0,   406,   191,     0,   251,   290,   291,     1,     0,    93,
2600     94,   273,     2,   274,     0,     0,     0,     0,   277,     0,
2601      0,     3,     0,     0,     4,     0,     5,     0,     0,     0,
2602      0,     0,     0,     0,     0,    97,     6,     0,     7,     0,
2603    404,   281,     8,     9,    10,     0,     0,    11,     0,     0,
2604      0,   283,     0,    12,     0,     0,     0,    99,     0,    13,
2605      0,     0,   405,     0,     0,     0,     0,     0,     0,     0,
2606      0,     0,     0,     0,     0,     0,     0,     0,    14,     0,
2607      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2608      0,     0,     0,     0,    15,     0,    16,     0,    17,    18,
2609      0,     0,     0,     0,     0,   287,     0,     0,     0,     0,
2610     19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2611      0,     0,     0,   406,     0,    20,     0,     0,     0,     0,
2612      0,     0,    21,    22,     0,     0,     0,     0,    23,    24,
2613      0,     0,     0,     0,     0,     0,     0,     0,    25,    26,
2614     27,     0,    28,     0,     0,     0,     0,     0,     0,     0,
2615      0,     0,    29,     0,     0,     0,     0,     0,    30,     0,
2616      0,     0,     0,    31
2617 };
2618
2619 static const short yycheck[] = {     3,
2620    151,   133,     6,   188,   459,   135,   327,   148,   871,   865,
2621     14,   711,   470,     7,    18,    19,  1148,    21,   703,   458,
2622    152,    25,   399,    27,   463,    29,    30,   346,     5,   741,
2623    742,     8,   808,     5,     5,     5,     8,     8,     8,     5,
2624    752,    50,    50,  1077,   572,    26,   574,   575,   440,   110,
2625      5,    50,   178,     8,     4,   110,     6,    10,   894,     6,
2626    896,   897,   898,   899,   900,   901,     5,   533,     5,     8,
2627    447,     8,   103,    36,   262,    48,    19,   543,    82,    22,
2628      5,     5,    60,   100,     8,    38,   274,    10,   110,   117,
2629     78,    41,   110,   532,    36,    36,    15,  1336,  1337,   491,
2630   1533,   110,    37,   185,   255,    68,    49,   258,    37,    37,
2631    110,   766,    37,    70,    50,    38,   202,   121,    50,   123,
2632    124,   203,   208,   127,   128,   564,   130,   131,   767,    58,
2633     58,   135,   120,    58,   122,   139,   140,    41,   142,    96,
2634    144,   145,   146,    19,   323,    88,   207,   151,     7,   153,
2635     14,   158,   207,  1586,   209,    19,    75,   110,   813,   176,
2636    191,    25,   184,    27,   168,   108,   125,   103,    97,    97,
2637    129,   297,    97,    49,   109,   814,   123,   124,   617,    98,
2638    109,   109,   186,   130,   109,   189,    36,   110,   195,   207,
2639     80,   209,   186,   105,    98,   142,   573,   144,   207,   207,
2640    194,   195,   196,   197,   392,  1444,   153,   207,   207,   209,
2641    160,   205,    88,   610,   611,   612,   613,   614,    82,   398,
2642    110,   187,   185,   908,   909,  1259,   199,   231,    78,   207,
2643    627,   208,   108,   159,   238,   164,   208,   208,   208,   164,
2644    768,   953,   700,   185,   185,   424,  1022,  1445,  1446,   202,
2645     78,   255,    12,   208,   258,   259,    76,   121,    78,   189,
2646    178,   179,  1098,   244,   730,   208,  1502,   131,    33,   208,
2647   1106,   208,  1108,  1109,    55,   139,  1112,  1113,  1114,  1115,
2648   1116,  1117,  1118,  1119,   208,    60,  1122,   815,  1524,    70,
2649     55,   238,   120,  1129,   122,    37,    56,   105,  1161,     5,
2650    120,   231,   122,  1501,   168,    70,    71,    67,  1137,  1138,
2651   1139,  1140,  1141,  1142,   178,    96,    58,   298,   444,   323,
2652    324,   117,   186,   558,   559,   560,   561,   186,   332,   130,
2653     51,    96,   185,    39,   338,   194,   195,   196,   197,   320,
2654    321,   322,   346,   475,   187,  1477,   205,   668,   352,   173,
2655    203,   185,   744,   118,   358,   359,   185,   187,   679,   189,
2656    364,   204,   366,    76,    85,    78,   370,   109,   187,   203,
2657    351,   378,   379,   380,   203,   142,     9,    97,   385,   558,
2658    559,   560,   561,   196,   197,   204,   169,   170,   780,   396,
2659    767,   111,   205,   128,   398,   714,   105,   714,    19,   718,
2660    185,   718,   185,    24,   139,   782,   783,   120,   117,   122,
2661    200,   358,   419,   810,   421,    36,   793,   364,   422,   366,
2662    424,   471,   472,   473,   863,   822,   823,   824,   825,   826,
2663    827,   610,   611,   612,   613,   614,   828,   814,  1267,  1215,
2664     19,   207,   446,   209,   448,   973,   974,   975,   627,   196,
2665    197,   163,  1152,   830,   186,    76,   168,    36,   205,   323,
2666    324,   184,   194,   195,   196,   197,  1252,    88,   332,  1255,
2667   1299,    92,   158,   205,   142,    35,   480,    37,    64,  1308,
2668   1309,  1310,  1311,  1312,  1313,  1314,  1315,   108,  1317,    56,
2669    184,   196,   197,   885,    89,   359,    80,    76,    58,   678,
2670    205,   119,  1030,  1031,  1032,   512,   961,   633,   207,    88,
2671    209,   637,   967,    92,   186,   641,   520,    77,   207,   645,
2672    192,   193,   207,   649,   209,   529,   207,   653,   209,   108,
2673    765,   657,   536,   480,  1390,   661,   207,    97,   209,   774,
2674    775,   776,   777,   778,   779,   207,    80,   209,   552,   109,
2675    207,    33,   209,   186,   558,   559,   560,   561,   191,   192,
2676    193,   194,   195,   196,   197,    98,   196,   197,   196,   197,
2677     80,  1407,   205,    55,  1437,   205,  1439,   205,   202,   203,
2678    444,     9,   186,    80,   725,   726,   765,   766,    70,    71,
2679    194,   195,   196,   197,   724,   774,   775,   776,   777,   778,
2680    779,   205,     9,   180,   181,   209,   610,   611,   612,   613,
2681    614,   119,   119,   990,    96,   741,   742,   200,   207,   186,
2682    209,   196,   207,   627,   209,   127,   752,   194,   195,   196,
2683    197,   810,   116,     9,   813,    51,   118,   207,   205,   209,
2684    208,    57,   116,   822,   823,   824,   825,   826,   827,   208,
2685     66,  1048,  1481,   207,     9,   209,   520,    73,   207,   785,
2686    209,   665,   186,   667,   184,   185,    64,   187,    84,   189,
2687    194,   195,   196,   197,   678,   207,   680,   209,    94,   208,
2688     32,   205,   686,   115,   207,   689,   209,   691,   692,   693,
2689    694,   107,   207,   207,   209,   699,   207,    80,   209,   703,
2690    704,   207,   706,   209,   685,   208,   710,  1162,    56,   207,
2691    714,   209,   208,   208,   718,   208,   113,   208,   725,   726,
2692    724,   725,   726,   727,    87,   208,    18,   731,  1120,   733,
2693    734,   712,   208,   208,   738,    56,   208,   208,   208,   686,
2694    208,   745,   746,   750,   725,   726,   116,   694,   208,   203,
2695    208,   877,     9,   203,   202,    76,   763,   208,   186,   202,
2696    177,   765,   766,   116,     9,    97,   194,   195,   196,   197,
2697    774,   775,   776,   777,   778,   779,   150,   205,  1170,   186,
2698    162,   184,    80,    48,   731,   103,   733,   194,   195,   196,
2699    197,    50,    35,    18,    37,   187,    97,   103,   205,   806,
2700    103,   665,   202,   667,   811,   812,   810,    61,   103,   813,
2701   1249,   101,   205,    67,   678,    58,   207,   100,   822,   823,
2702    824,   825,   826,   827,  1216,   209,    50,   953,   209,   202,
2703    186,   156,    22,   208,    77,   191,   192,   193,   194,   195,
2704    196,   197,   208,  1164,    63,    63,   710,  1168,   208,   205,
2705     80,    82,   191,   209,    97,    87,   166,    80,   191,   141,
2706    191,   865,    97,   207,   868,   186,   109,   871,   209,  1048,
2707    191,   192,   193,   194,   195,   196,   197,   741,   742,   207,
2708     21,   208,    98,   209,    50,   209,   209,   209,   752,   209,
2709    894,   145,   896,   897,   898,   899,   900,   901,    71,   208,
2710    208,   155,   209,   208,   908,   909,   208,   119,   208,    33,
2711     34,   154,   209,   917,   918,   209,    40,   921,   203,   186,
2712    204,   209,     3,    47,  1316,   192,   193,   194,   195,   196,
2713    197,    55,   186,   208,   208,    59,    17,    18,   205,   943,
2714    194,   195,   196,   197,   208,   208,    70,    71,   208,   202,
2715    208,   205,    33,    34,   209,    79,   208,   208,   208,    40,
2716    203,   208,   208,  1095,   208,   191,    47,   208,   208,   208,
2717    917,   208,    96,    56,    55,  1126,   143,   101,   102,   208,
2718    208,     7,    63,    64,   116,   110,    12,   208,    69,    70,
2719     71,    72,    48,    74,   118,   208,   116,   208,    79,   123,
2720     81,   865,   208,  1324,   208,   208,   208,   208,    89,   205,
2721    209,  1403,   209,  1334,   209,    96,   208,   186,    56,   205,
2722    101,   208,   191,   192,   193,   194,   195,   196,   197,   209,
2723     56,   112,   209,   209,   209,    61,   205,   118,   119,   209,
2724    121,    67,   123,    26,  1048,   209,   209,   209,  1440,  1441,
2725     76,   207,   133,   134,   196,   136,    82,    53,   110,   140,
2726    184,   142,  1000,   103,    53,  1003,   182,   175,  1006,   150,
2727    208,  1009,   208,  1077,  1012,  1079,   157,  1015,   159,   208,
2728   1018,   208,   163,  1021,    78,  1089,  1478,   168,    63,   953,
2729   1094,   208,    48,   174,  1098,   176,    61,    82,     9,   103,
2730    146,   182,  1106,   184,  1108,  1109,   184,   208,  1112,  1113,
2731   1114,  1115,  1116,  1117,  1118,  1119,    61,    52,  1122,   145,
2732    209,   209,  1126,   209,   209,  1129,    62,   209,   209,   155,
2733    209,   208,   208,  1137,  1138,  1139,  1140,  1141,  1142,   208,
2734    208,   208,  1089,   208,   186,   208,   208,  1094,   208,   208,
2735    208,  1155,   194,   195,   196,   197,   204,  1161,   208,   208,
2736    186,   208,   207,   205,   208,   191,   192,   193,   194,   195,
2737    196,   197,   208,  1154,   208,    14,  1157,   186,   209,   205,
2738    145,   209,   209,   209,   209,   194,   195,   196,   197,   209,
2739    155,   209,   209,     7,   209,   209,   205,   209,    12,   209,
2740    145,     3,   209,   209,     6,    54,   209,   209,   209,   209,
2741    155,   209,    14,  1077,   209,   134,    18,    19,   209,    21,
2742     36,   186,     7,    25,    36,    27,   186,    29,    30,   194,
2743    195,   196,   197,   209,   194,   195,   196,   197,   209,   183,
2744    205,   186,    56,   205,   191,   205,   136,    61,    43,   194,
2745    195,   196,   197,    67,  1261,  1259,   208,  1261,   208,   208,
2746    205,    81,    76,  1267,    62,   208,   207,   209,    82,  1401,
2747    209,   209,   209,    84,   107,   209,    61,   209,   209,   186,
2748     82,   209,    67,  1264,   191,   192,   193,   194,   195,   196,
2749    197,  1155,   209,  1300,  1301,  1299,   209,    82,   185,   209,
2750    209,   209,   207,   209,  1308,  1309,  1310,  1311,  1312,  1313,
2751   1314,  1315,   209,  1317,   209,   209,   209,   209,   209,   121,
2752    209,   123,   124,   209,   209,   127,   128,   209,   130,   131,
2753     92,   145,   209,   135,   153,   205,  1521,   139,   140,    69,
2754    142,   155,   144,   145,   146,    90,    64,   202,   209,   151,
2755    207,   153,   208,     5,    83,   209,   209,   209,   209,   209,
2756    145,   209,   209,  1548,   209,   209,   168,   209,   209,   209,
2757    155,   209,   186,   209,   209,   209,   207,   191,   192,   193,
2758    194,   195,   196,   197,   186,   209,  1390,   189,  1573,   202,
2759     80,   205,   209,   207,   209,  1259,   135,    14,   144,   209,
2760    209,   186,   209,  1407,   208,  1409,   191,   192,   193,   194,
2761    195,   196,   197,   184,   208,     7,   208,   207,   209,   107,
2762    205,   209,     3,   202,   209,   200,   204,   200,     0,   231,
2763   1434,     0,    32,  1437,   215,  1439,   238,   723,   350,  1443,
2764    514,   941,   322,     7,   137,   924,  1130,   689,    12,  1513,
2765   1534,  1487,  1517,   255,  1435,   704,   258,   259,   691,  1570,
2766    933,  1468,    28,   195,  1468,  1469,   727,    15,   706,    61,
2767    272,  1439,   256,  1551,  1523,    67,  1438,  1481,   726,   536,
2768    240,   148,   328,  1529,    31,   287,  1552,  1434,   128,  1559,
2769     82,    12,    56,  1468,  1443,  1253,   678,    61,  1578,   145,
2770    287,  1496,   738,    67,  1511,  1079,   146,  1511,   340,    -1,
2771     -1,    -1,    76,   512,   444,   448,    -1,    -1,    82,    -1,
2772   1527,   323,   324,  1527,     7,    -1,  1390,    -1,    -1,    12,
2773    332,    -1,    -1,    -1,    -1,    56,   338,    -1,  1519,    -1,
2774     61,    -1,    -1,    -1,   346,    -1,    67,    -1,    -1,    -1,
2775    352,    -1,  1559,   145,    -1,  1559,   358,   359,    -1,    -1,
2776   1564,    -1,   364,   155,   366,    -1,    -1,    -1,   370,    -1,
2777     -1,  1578,    -1,    56,  1578,    -1,  1580,    -1,    61,    -1,
2778     -1,   145,   384,    -1,    67,    -1,    -1,    -1,    -1,  1570,
2779     -1,   155,    -1,    76,   186,    -1,    -1,    -1,    -1,   191,
2780    192,   193,   194,   195,   196,   197,    -1,    -1,    -1,    -1,
2781     61,    -1,    -1,   205,    -1,    -1,    67,   209,    -1,    -1,
2782    422,    -1,   186,    -1,   145,    -1,    -1,   191,   192,   193,
2783    194,   195,   196,   197,   155,    -1,    -1,    -1,   440,    -1,
2784     -1,   205,    -1,    -1,   446,   209,   448,    -1,    -1,   275,
2785     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2786     -1,    -1,   145,   289,    -1,   186,   292,    -1,   294,   295,
2787    296,   297,   155,   194,   195,   196,   197,    -1,   480,    -1,
2788     -1,    -1,    -1,    -1,   205,    -1,    -1,    -1,    -1,   491,
2789     -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,    -1,    -1,
2790     -1,     3,    -1,   186,   155,    -1,    -1,    -1,   191,   192,
2791    193,   194,   195,   196,   197,    -1,    -1,    -1,   520,    -1,
2792     -1,    -1,   205,    -1,    -1,    27,    -1,   529,    -1,    -1,
2793    356,    33,    -1,    -1,   536,   186,    -1,    -1,    40,    -1,
2794    191,   192,   193,   194,   195,   196,   197,    -1,   374,    -1,
2795    552,    -1,    -1,    55,   205,    -1,    -1,    -1,   398,    -1,
2796     -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,
2797     -1,    -1,    -1,    -1,    -1,    -1,   402,    -1,    -1,    81,
2798     -1,    -1,    -1,    -1,   424,    -1,    -1,    89,    -1,    -1,
2799     -1,    -1,    -1,    -1,    96,    -1,    -1,   423,    -1,   101,
2800     -1,   427,    -1,   429,    -1,    -1,   432,   433,   434,   435,
2801    436,   437,   438,   439,    -1,   441,   118,   119,    -1,   121,
2802     -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2803     -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,
2804    142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,
2805    152,    -1,    -1,   492,    -1,   157,    -1,   159,    -1,    -1,
2806     -1,   163,    -1,   665,    -1,   667,   168,    -1,    -1,    -1,
2807     -1,    -1,   174,    -1,   176,    -1,   678,    -1,   680,    -1,
2808    182,    -1,   184,    -1,   686,    -1,    -1,   689,    -1,   691,
2809    692,   693,   694,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2810     -1,   703,   704,    -1,   706,    -1,   208,     7,   710,    -1,
2811     -1,    -1,   714,    -1,    -1,    -1,   718,    -1,   558,   559,
2812    560,   561,   724,   725,   726,   727,    -1,    -1,    -1,   731,
2813     -1,   733,   734,    -1,    -1,    -1,   738,    -1,    -1,    -1,
2814     -1,    -1,   744,   745,   746,    -1,   572,    -1,   574,   575,
2815     -1,    -1,    -1,    -1,   323,   581,    -1,    -1,    -1,    -1,
2816     -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
2817    610,   611,   612,   613,   614,    -1,     7,    -1,   780,    -1,
2818     -1,    -1,    82,    -1,    -1,    -1,    -1,   627,    -1,   615,
2819     -1,    -1,    -1,    -1,   633,    -1,    -1,    -1,   637,    -1,
2820     -1,    -1,   641,   629,    -1,    -1,   645,   633,    -1,    -1,
2821    649,   637,    -1,    -1,   653,   641,    -1,    -1,   657,   645,
2822     -1,    -1,   661,   649,    -1,    -1,   828,   653,    -1,   831,
2823     61,   657,    -1,    -1,    -1,   661,    67,    -1,    -1,    -1,
2824     -1,    -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,    -1,
2825     -1,    82,    -1,    -1,    -1,   155,    -1,    -1,    -1,   699,
2826     -1,    -1,    -1,   865,    -1,    -1,   868,    -1,    -1,   871,
2827     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2828     -1,    -1,    -1,   885,    -1,    -1,   186,    -1,    -1,    -1,
2829     -1,   191,   192,   193,   194,   195,   196,   197,    -1,    -1,
2830     -1,    -1,    -1,    -1,    -1,   205,   908,   909,    -1,   209,
2831     -1,    -1,    -1,    -1,   145,   917,    -1,    -1,    -1,   921,
2832     -1,    -1,    -1,    -1,   155,   765,   766,    -1,   754,    -1,
2833     -1,    -1,    -1,    -1,   774,   775,   776,   777,   778,   779,
2834     -1,   943,   768,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2835     -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,   784,    -1,
2836    191,   192,   193,   194,   195,   196,   197,    -1,    -1,    61,
2837    810,    -1,    -1,   813,   205,    67,    -1,    -1,    -1,    -1,
2838     -1,    -1,   822,   823,   824,   825,   826,   827,    -1,   815,
2839     -1,    -1,   831,    -1,    -1,    -1,    -1,    -1,    -1,   838,
2840    839,    -1,   841,   842,    -1,   844,   845,    -1,   847,   848,
2841     -1,   850,   851,    -1,   853,   854,    -1,   856,   857,    -1,
2842    859,   860,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2843     -1,    -1,    -1,    -1,    -1,    -1,   862,    -1,    -1,    -1,
2844     -1,    -1,    -1,    -1,    -1,    -1,    -1,  1049,    -1,    -1,
2845     -1,    -1,    -1,   145,   894,    -1,   896,   897,   898,   899,
2846    900,   901,    -1,   155,    -1,     7,    -1,    -1,    -1,    -1,
2847     12,    -1,    -1,    -1,    -1,  1077,    -1,  1079,   918,    -1,
2848     -1,    -1,    -1,    -1,    -1,    -1,    -1,  1089,    -1,    -1,
2849     -1,    -1,  1094,    -1,   186,    -1,    -1,    -1,    -1,    -1,
2850    192,   193,   194,   195,   196,   197,    -1,    -1,    -1,   678,
2851     -1,    -1,    -1,   205,    56,    -1,    -1,    -1,  1120,    61,
2852     -1,    -1,    -1,    -1,  1126,    67,    -1,    -1,    -1,    -1,
2853    699,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
2854     82,    -1,    -1,    -1,    -1,    -1,    -1,   973,   974,   975,
2855     -1,    -1,    -1,  1155,    -1,    -1,    -1,   996,    -1,  1161,
2856     -1,  1000,    -1,    -1,  1003,    -1,    -1,  1006,  1170,    -1,
2857   1009,    -1,    -1,  1012,  1000,    -1,  1015,  1003,    -1,  1018,
2858   1006,    -1,  1021,  1009,    -1,    -1,  1012,    -1,    -1,  1015,
2859     -1,    -1,  1018,    -1,    -1,  1021,    -1,    -1,    -1,    -1,
2860     -1,    -1,    -1,   145,  1030,  1031,  1032,    -1,  1048,    -1,
2861   1049,    -1,    -1,   155,  1216,    -1,    -1,    -1,    -1,    -1,
2862     -1,    -1,    -1,    -1,    -1,  1227,    -1,    -1,    -1,    -1,
2863     -1,    -1,    -1,    -1,    -1,   398,     7,    -1,    -1,    -1,
2864     -1,    12,    -1,    -1,   186,    -1,    -1,    -1,    -1,   191,
2865    192,   193,   194,   195,   196,   197,    -1,  1259,  1098,  1261,
2866     -1,   424,   831,   205,    -1,   207,  1106,    -1,  1108,  1109,
2867     -1,    -1,  1112,  1113,  1114,  1115,  1116,  1117,  1118,  1119,
2868     -1,    -1,  1122,    -1,    -1,    56,    -1,    -1,    -1,  1129,
2869     61,    -1,    -1,    -1,    -1,    -1,    67,  1137,  1138,  1139,
2870   1140,  1141,  1142,    -1,    -1,    76,    -1,    -1,    -1,    -1,
2871     -1,    82,    -1,    -1,  1316,    -1,    -1,    -1,    -1,    -1,
2872     -1,  1161,    -1,    -1,    -1,   894,    -1,   896,   897,   898,
2873    899,   900,   901,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2874     -1,  1180,  1181,  1182,    -1,    -1,    -1,  1186,  1187,   918,
2875     -1,  1190,  1191,    -1,    -1,  1194,  1195,    -1,    -1,  1198,
2876   1199,    -1,    -1,  1202,  1203,    -1,    -1,  1206,  1207,    -1,
2877     -1,  1210,  1211,    -1,   145,    -1,    -1,    -1,    -1,    -1,
2878     -1,  1383,    -1,    -1,   155,    -1,    -1,    -1,  1390,    -1,
2879     -1,    -1,    -1,    -1,    -1,   558,   559,   560,   561,    -1,
2880     -1,  1403,    -1,    -1,    -1,    -1,    -1,  1409,    -1,    -1,
2881     -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,
2882    191,   192,   193,   194,   195,   196,   197,  1267,   199,    -1,
2883     -1,    -1,  1434,   204,   205,  1437,  1262,  1439,  1440,  1441,
2884     -1,  1443,    -1,    -1,    -1,    -1,    -1,   610,   611,   612,
2885    613,   614,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1299,
2886     -1,    -1,    -1,    -1,   627,    -1,  1468,  1469,  1308,  1309,
2887   1310,  1311,  1312,  1313,  1314,  1315,  1478,  1317,    -1,    -1,
2888   1049,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2889     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2890     -1,    -1,    -1,    -1,    -1,     7,    -1,     9,    -1,  1511,
2891     12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2892     -1,    -1,    -1,    -1,    -1,  1527,    -1,    -1,    -1,  1098,
2893     -1,    -1,    -1,    -1,    -1,    -1,   699,  1106,    -1,  1108,
2894   1109,    -1,    -1,  1112,  1113,  1114,  1115,  1116,  1117,  1118,
2895   1119,    -1,    -1,  1122,    56,    -1,    -1,  1559,    -1,    61,
2896   1129,    -1,  1564,    -1,    -1,    67,    -1,  1407,  1137,  1138,
2897   1139,  1140,  1141,  1142,    76,    -1,  1578,     7,  1580,    -1,
2898     82,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2899     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2900     -1,    -1,   765,   766,    -1,    -1,    -1,    -1,    -1,    -1,
2901     -1,   774,   775,   776,   777,   778,   779,    -1,    -1,    -1,
2902     50,     7,    -1,     9,    -1,    -1,    56,    -1,    -1,    -1,
2903     -1,    61,  1471,    -1,    -1,    -1,    -1,    67,    -1,    -1,
2904     -1,  1481,    -1,   145,    -1,    -1,    76,   810,    -1,    -1,
2905    813,    -1,    82,   155,    -1,    -1,    -1,    -1,  1227,   822,
2906    823,   824,   825,   826,   827,    -1,    -1,    -1,   831,    -1,
2907     -1,    -1,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,
2908     -1,    67,    -1,    -1,   186,    -1,    -1,    -1,    -1,   191,
2909    192,   193,   194,   195,   196,   197,    82,    -1,  1267,    -1,
2910   1526,    -1,    -1,   205,    -1,    -1,    -1,    -1,    -1,    -1,
2911     -1,    -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,  1558,
2912     -1,    -1,    -1,    -1,    -1,   155,    -1,    -1,    -1,    -1,
2913   1299,   894,    -1,   896,   897,   898,   899,   900,   901,  1308,
2914   1309,  1310,  1311,  1312,  1313,  1314,  1315,    -1,  1317,    -1,
2915     -1,    -1,    -1,    -1,    -1,   918,   186,    -1,    -1,   145,
2916     -1,   191,   192,   193,   194,   195,   196,   197,    -1,   155,
2917     -1,    -1,    -1,    -1,    -1,   205,    -1,    -1,    -1,    -1,
2918     -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,    12,    -1,
2919     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2920    186,    -1,    -1,    -1,    -1,   191,   192,   193,   194,   195,
2921    196,   197,    -1,   100,  1383,    -1,    -1,    -1,    -1,   205,
2922     -1,   108,    -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,
2923     -1,    -1,    56,    -1,   121,    -1,   123,    61,  1407,   126,
2924     -1,    -1,    -1,    67,     7,    -1,   133,    -1,    -1,    12,
2925     -1,    -1,    76,   140,    -1,   142,    -1,    -1,    82,    -1,
2926      7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2927    157,    -1,    -1,    -1,    -1,    -1,    -1,   164,   165,    -1,
2928     -1,    -1,    -1,    -1,   171,  1048,  1049,    -1,    -1,   176,
2929     -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,    61,    -1,
2930     -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
2931     -1,    -1,  1481,    76,    61,    -1,    -1,    -1,    -1,    82,
2932     67,   145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2933     -1,   155,    -1,    -1,    -1,  1098,    -1,    -1,    -1,    12,
2934     -1,    -1,    -1,  1106,    -1,  1108,  1109,    -1,    -1,  1112,
2935   1113,  1114,  1115,  1116,  1117,  1118,  1119,    -1,    -1,  1122,
2936     -1,    -1,   186,    -1,    -1,    -1,  1129,   191,   192,   193,
2937    194,   195,   196,   197,  1137,  1138,  1139,  1140,  1141,  1142,
2938    204,   205,   145,    56,    -1,    -1,    -1,    -1,    61,    -1,
2939     -1,    -1,   155,    -1,    67,    -1,    -1,    -1,   145,    -1,
2940     -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,   155,    -1,
2941     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2942     -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,   191,   192,
2943    193,   194,   195,   196,   197,    -1,    -1,    -1,    -1,   186,
2944     -1,    -1,   205,    -1,   191,   192,   193,   194,   195,   196,
2945    197,    -1,   100,    -1,    -1,    -1,    -1,    -1,   205,    -1,
2946     -1,    -1,    -1,    -1,  1227,    -1,   114,    -1,    -1,    -1,
2947     -1,    -1,   145,   121,    -1,   123,    -1,    -1,   126,    -1,
2948     -1,    -1,   155,    -1,    -1,   133,    -1,    -1,    -1,    -1,
2949     -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,
2950     -1,    -1,    -1,    -1,  1267,    -1,    -1,    -1,    -1,   157,
2951    158,    -1,    -1,   186,    -1,    -1,   164,   165,   191,   192,
2952    193,   194,   195,   196,   197,    -1,    -1,    -1,   176,    -1,
2953     -1,    -1,   205,    -1,    -1,    -1,  1299,    -1,    -1,    -1,
2954     -1,    -1,    -1,     3,    -1,  1308,  1309,  1310,  1311,  1312,
2955   1313,  1314,  1315,    -1,  1317,    -1,    16,    17,    18,    -1,
2956     -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
2957     30,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
2958     40,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,
2959     -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
2960     -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    69,
2961     70,    71,    72,    -1,    74,    -1,    76,    -1,    78,    79,
2962   1383,    81,    -1,    -1,    -1,    -1,    86,    -1,    -1,    89,
2963     -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,
2964     -1,   101,   102,    -1,  1407,    -1,   106,    -1,    -1,    -1,
2965     -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,   119,
2966    120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,
2967     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,
2968    140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2969    150,    -1,   152,    -1,    -1,    -1,    -1,   157,    -1,   159,
2970     -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,    -1,
2971     -1,    -1,    -1,    -1,   174,    -1,   176,    -1,  1481,    -1,
2972     -1,    -1,   182,    -1,   184,   185,   186,   187,   188,   189,
2973      3,    -1,    -1,    -1,    -1,   195,   196,    -1,   198,   199,
2974    200,    -1,    -1,    16,    17,    18,    -1,    -1,   208,   209,
2975     -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
2976     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
2977     -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
2978     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
2979     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
2980     -1,    74,    -1,    76,    -1,    78,    79,    -1,    81,    -1,
2981     -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,
2982     -1,    -1,    -1,    96,    -1,    -1,    99,    -1,   101,   102,
2983     -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,
2984     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
2985    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2986    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
2987     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,
2988     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
2989    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
2990     -1,   174,    -1,   176,    -1,    -1,    -1,    -1,    -1,   182,
2991     -1,   184,   185,   186,   187,   188,   189,     3,    -1,    -1,
2992     -1,    -1,   195,    -1,    -1,   198,   199,   200,    -1,    -1,
2993     16,    17,    18,    -1,    -1,   208,   209,    -1,    -1,    -1,
2994     -1,    27,    28,    29,    30,    31,    -1,    33,    34,    -1,
2995     -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    45,
2996     -1,    47,    12,    -1,    -1,    -1,    -1,    -1,    -1,    55,
2997     -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
2998     -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,
2999     76,    -1,    78,    79,    -1,    81,    -1,    -1,    -1,    -1,
3000     86,    -1,    -1,    89,    -1,    -1,    56,    -1,    -1,    -1,
3001     96,    61,    -1,    99,    -1,   101,   102,    67,    -1,    -1,
3002    106,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
3003     -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
3004     -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,
3005    136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,
3006     -1,    -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,
3007     -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,
3008    166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,
3009    176,    -1,    -1,    -1,    -1,   145,   182,    -1,   184,   185,
3010    186,   187,   188,   189,     3,   155,    -1,    -1,    -1,   195,
3011     -1,    -1,   198,   199,   200,    -1,    -1,    16,    17,    18,
3012     -1,    -1,   208,   209,    -1,    -1,    -1,    -1,    -1,    28,
3013     29,    30,    31,    -1,    33,    34,   186,    -1,    -1,    -1,
3014     -1,    40,   192,   193,   194,   195,   196,   197,    47,    -1,
3015     -1,    -1,    -1,    -1,    -1,   205,    55,    -1,    -1,    -1,
3016     59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3017     69,    70,    71,    72,    -1,    74,    -1,    -1,    -1,    78,
3018     79,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3019     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3020     -1,    -1,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
3021     -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,
3022    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3023     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3024     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3025     -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
3026    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3027     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3028     -1,    -1,    -1,   182,    -1,   184,   185,   186,   187,   188,
3029    189,     3,    -1,    -1,    -1,    -1,   195,    -1,    -1,   198,
3030    199,   200,    -1,    -1,    16,    17,    18,    -1,    -1,   208,
3031    209,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3032     -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
3033     -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
3034     -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,
3035     -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,
3036     72,    -1,    74,    -1,    76,    -1,    78,    79,    -1,    81,
3037     -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
3038     -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,   101,
3039    102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3040    112,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
3041    122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3042     -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,
3043    142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,
3044     -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,
3045     -1,   163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,
3046     -1,    -1,   174,    -1,   176,    -1,    -1,    -1,    -1,    -1,
3047    182,    -1,   184,   185,   186,   187,   188,   189,    -1,     3,
3048     -1,    -1,    -1,   195,    -1,    -1,   198,   199,   200,    13,
3049     -1,    -1,    16,    17,    18,    -1,   208,   209,    -1,    -1,
3050     -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
3051     34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
3052     44,    45,    -1,    47,    -1,    -1,    50,    -1,    -1,    -1,
3053     -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,
3054     64,    65,    -1,    -1,    -1,    69,    70,    71,    72,    -1,
3055     74,    -1,    76,    -1,    78,    79,    -1,    81,    -1,    -1,
3056     -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,    -1,
3057     -1,    -1,    96,    -1,    -1,    99,    -1,   101,   102,    -1,
3058    104,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,    -1,
3059     -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
3060     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
3061    134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,
3062     -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,    -1,
3063     -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,
3064     -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,
3065    174,    -1,   176,    -1,    -1,    -1,    -1,    -1,   182,    -1,
3066    184,   185,   186,   187,   188,   189,    -1,     3,    -1,    -1,
3067     -1,   195,    -1,    -1,   198,   199,   200,    13,    -1,    -1,
3068     16,    17,    18,    -1,   208,    -1,    -1,    -1,    -1,    -1,
3069     -1,    27,    28,    29,    30,    31,    -1,    33,    34,    -1,
3070     -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    45,
3071     -1,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,
3072     -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    65,
3073     -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,
3074     76,    -1,    78,    79,    -1,    81,    -1,    -1,    -1,    -1,
3075     86,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,
3076     96,    -1,    -1,    99,    -1,   101,   102,    -1,   104,    -1,
3077    106,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
3078     -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
3079     -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,
3080    136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,
3081     -1,    -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,
3082     -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,
3083    166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,
3084    176,    -1,    -1,    -1,    -1,    -1,   182,    -1,   184,   185,
3085    186,   187,   188,   189,    -1,     3,    -1,    -1,    -1,   195,
3086     -1,    -1,   198,   199,   200,    13,    -1,    -1,    16,    17,
3087     18,    -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,    27,
3088     28,    29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,
3089     -1,    -1,    40,    -1,    -1,    -1,    44,    45,    -1,    47,
3090     -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    -1,    -1,
3091     -1,    59,    -1,    -1,    -1,    63,    64,    65,    -1,    -1,
3092     -1,    69,    70,    71,    72,    -1,    74,    -1,    76,    -1,
3093     78,    79,    -1,    81,    -1,    -1,    -1,    -1,    86,    -1,
3094     -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,
3095     -1,    99,    -1,   101,   102,    -1,   104,    -1,   106,    -1,
3096     -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
3097    118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
3098     -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,
3099     -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,
3100     -1,    -1,   150,    -1,   152,    -1,    -1,    -1,    -1,   157,
3101     -1,   159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,
3102    168,    -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,
3103     -1,     3,    -1,    -1,   182,    -1,   184,   185,   186,   187,
3104    188,   189,    -1,    -1,    16,    17,    18,   195,    -1,    -1,
3105    198,   199,   200,    -1,    -1,    27,    28,    29,    30,    31,
3106    208,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
3107     -1,    -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,
3108     -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,
3109     -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,
3110     72,    -1,    74,    -1,    76,    -1,    78,    79,    -1,    81,
3111     -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,
3112     -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,   101,
3113    102,    -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,
3114    112,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
3115    122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3116     -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,
3117    142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,
3118    152,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,
3119     -1,   163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,
3120     -1,    -1,   174,    -1,   176,    -1,    -1,    -1,    -1,    -1,
3121    182,    -1,   184,   185,   186,   187,   188,   189,    -1,    -1,
3122      3,    -1,     5,   195,   196,     8,   198,   199,   200,    -1,
3123     -1,    -1,    -1,    16,    17,    18,   208,    -1,    -1,    -1,
3124     -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
3125     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
3126     -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3127     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
3128     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
3129     -1,    74,    -1,    76,    -1,    -1,    79,    -1,    81,    -1,
3130     -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,
3131     -1,    -1,    -1,    96,    -1,    -1,    99,    -1,   101,   102,
3132     -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,
3133     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
3134    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3135    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3136     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,
3137     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3138    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
3139     -1,   174,    -1,   176,    -1,    -1,    -1,    -1,    -1,   182,
3140     -1,   184,   185,   186,   187,   188,   189,    -1,     3,    -1,
3141      5,    -1,   195,     8,    -1,   198,   199,   200,    -1,    -1,
3142     -1,    16,    17,    18,    -1,   208,    -1,    -1,    -1,    -1,
3143     -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    34,
3144     -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,
3145     45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3146     55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
3147     -1,    -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,
3148     -1,    76,    -1,    -1,    79,    -1,    81,    -1,    -1,    -1,
3149     -1,    86,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,
3150     -1,    96,    -1,    -1,    99,    -1,   101,   102,    -1,    -1,
3151     -1,   106,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
3152     -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
3153     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,
3154     -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,
3155     -1,    -1,    -1,    -1,    -1,   150,    -1,   152,    -1,    -1,
3156     -1,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,
3157     -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,
3158     -1,   176,    -1,    -1,    -1,    -1,    -1,   182,    -1,   184,
3159    185,   186,   187,   188,   189,    -1,     3,    -1,     5,    -1,
3160    195,     8,    -1,   198,   199,   200,    -1,    -1,    -1,    16,
3161     17,    18,    -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,
3162     27,    28,    29,    30,    31,    -1,    33,    34,    -1,    -1,
3163     -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    45,    -1,
3164     47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
3165     -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,
3166     -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,    76,
3167     -1,    -1,    79,    -1,    81,    -1,    -1,    -1,    -1,    86,
3168     -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
3169     -1,    -1,    99,    -1,   101,   102,    -1,    -1,    -1,   106,
3170     -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
3171     -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
3172     -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,
3173     -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,
3174     -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,    -1,
3175    157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,   166,
3176     -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,   176,
3177     -1,    -1,    -1,    -1,    -1,   182,    -1,   184,   185,   186,
3178    187,   188,   189,    -1,     3,    -1,     5,    -1,   195,     8,
3179     -1,   198,   199,   200,    -1,    -1,    -1,    16,    17,    18,
3180     -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
3181     29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
3182     -1,    40,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,
3183     -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
3184     59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3185     69,    70,    71,    72,    -1,    74,    -1,    76,    -1,    -1,
3186     79,    -1,    81,    -1,    -1,    -1,    -1,    86,    -1,    -1,
3187     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3188     99,    -1,   101,   102,    -1,    -1,    -1,   106,    -1,    -1,
3189     -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,
3190    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3191     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3192     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3193     -1,   150,    -1,   152,    -1,    -1,    -1,    -1,   157,    -1,
3194    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3195     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3196     -1,    -1,    -1,   182,    -1,   184,   185,   186,   187,   188,
3197    189,    -1,     3,    -1,     5,    -1,   195,     8,    -1,   198,
3198    199,   200,    -1,    -1,    -1,    16,    17,    18,    -1,   208,
3199     -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
3200     31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
3201     -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,    -1,
3202     -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,
3203     -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,
3204     71,    72,    -1,    74,    -1,    76,    -1,    -1,    79,    -1,
3205     81,    -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    -1,
3206     -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
3207    101,   102,    -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,
3208     -1,   112,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
3209    121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3210     -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,
3211     -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,
3212     -1,   152,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
3213     -1,    -1,   163,    -1,    -1,   166,    -1,   168,    -1,    -1,
3214     -1,    -1,    -1,   174,    -1,   176,    -1,    -1,    -1,    -1,
3215     -1,   182,    -1,   184,   185,   186,   187,   188,   189,    -1,
3216      3,    -1,     5,    -1,   195,     8,    -1,   198,   199,   200,
3217     -1,    -1,    -1,    16,    17,    18,    -1,   208,    -1,    -1,
3218     -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
3219     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
3220     -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3221     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
3222     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
3223     -1,    74,    -1,    76,    -1,    -1,    79,    -1,    81,    -1,
3224     -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,
3225     -1,    -1,    -1,    96,    -1,    -1,    99,    -1,   101,   102,
3226     -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,
3227     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
3228    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3229    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3230     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,
3231     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3232    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
3233     -1,   174,    -1,   176,    -1,    -1,    -1,    -1,    -1,   182,
3234     -1,   184,   185,   186,   187,   188,   189,    -1,     3,    -1,
3235      5,    -1,   195,     8,    -1,   198,   199,   200,    -1,    -1,
3236     -1,    16,    17,    18,    -1,   208,    -1,    -1,    -1,    -1,
3237     -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    34,
3238     -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,
3239     45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3240     55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
3241     -1,    -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,
3242     -1,    76,    -1,    -1,    79,    -1,    81,    -1,    -1,    -1,
3243     -1,    86,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,
3244     -1,    96,    -1,    -1,    99,    -1,   101,   102,    -1,    -1,
3245     -1,   106,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
3246     -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
3247     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,
3248     -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,
3249     -1,    -1,    -1,    -1,    -1,   150,    -1,   152,    -1,    -1,
3250     -1,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,
3251     -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,
3252     -1,   176,    -1,    -1,     3,    -1,    -1,   182,    -1,   184,
3253    185,   186,   187,   188,   189,    -1,    -1,    16,    17,    18,
3254    195,    -1,    -1,   198,   199,   200,    -1,    -1,    27,    28,
3255     29,    30,    31,   208,    33,    34,    -1,    -1,    -1,    -1,
3256     -1,    40,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,
3257     -1,    50,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
3258     59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3259     69,    70,    71,    72,    -1,    74,    -1,    76,    -1,    78,
3260     79,    -1,    81,    -1,    -1,    -1,    -1,    86,    -1,    -1,
3261     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3262     99,    -1,   101,   102,    -1,    -1,    -1,   106,    -1,    -1,
3263     -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,
3264    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3265     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3266     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3267     -1,   150,    -1,   152,    -1,    -1,    -1,    -1,   157,    -1,
3268    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3269     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3270      3,    -1,    -1,   182,    -1,   184,   185,   186,   187,   188,
3271    189,    -1,    -1,    16,    17,    18,   195,    -1,    -1,   198,
3272    199,   200,    -1,    -1,    27,    28,    29,    30,    31,   208,
3273     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
3274     -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3275     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
3276     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
3277     -1,    74,    -1,    76,    -1,    78,    79,    -1,    81,    -1,
3278     -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,
3279     -1,    -1,    -1,    96,    97,    -1,    99,    -1,   101,   102,
3280     -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,
3281     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
3282    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3283    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3284     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,
3285     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3286    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
3287     -1,   174,    -1,   176,    -1,    -1,     3,    -1,    -1,   182,
3288     -1,   184,   185,   186,   187,   188,   189,    -1,    -1,    16,
3289     17,    18,   195,    -1,    -1,   198,   199,   200,    -1,    -1,
3290     27,    28,    29,    30,    31,   208,    33,    34,    -1,    -1,
3291     -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    45,    -1,
3292     47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
3293     -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,
3294     -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,    76,
3295     -1,    78,    79,    -1,    81,    -1,    -1,    -1,    -1,    86,
3296     -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
3297     -1,    -1,    99,    -1,   101,   102,    -1,    -1,    -1,   106,
3298     -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
3299     -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
3300     -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,
3301     -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,
3302     -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,    -1,
3303    157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,   166,
3304     -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,   176,
3305     -1,    -1,    -1,    -1,    -1,   182,    -1,   184,   185,   186,
3306    187,   188,   189,    -1,     3,    -1,     5,    -1,   195,     8,
3307     -1,   198,   199,   200,    -1,    -1,    -1,    16,    17,    18,
3308     -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
3309     29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
3310     -1,    40,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,
3311     -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
3312     59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3313     69,    70,    71,    72,    -1,    74,    -1,    -1,    -1,    -1,
3314     79,    -1,    81,    -1,    -1,    -1,    -1,    86,    -1,    -1,
3315     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3316     99,    -1,   101,   102,    -1,    -1,    -1,   106,    -1,    -1,
3317     -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,
3318    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3319     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3320     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3321     -1,   150,    -1,   152,    -1,    -1,    -1,    -1,   157,    -1,
3322    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3323     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3324      3,    -1,    -1,   182,    -1,   184,   185,   186,   187,   188,
3325    189,    -1,    -1,    16,    17,    18,   195,    -1,    -1,   198,
3326    199,   200,    -1,    -1,    27,    28,    29,    30,    31,   208,
3327     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
3328     -1,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3329     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
3330     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
3331     -1,    74,    -1,    76,    -1,    -1,    79,    -1,    81,    -1,
3332     -1,    -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    -1,
3333     -1,    -1,    -1,    96,    97,    -1,    99,    -1,   101,   102,
3334     -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,    -1,   112,
3335     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
3336    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3337    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3338     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,   152,
3339     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3340    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
3341     -1,   174,    -1,   176,    -1,    -1,     3,    -1,    -1,   182,
3342     -1,   184,   185,   186,   187,   188,   189,    -1,    -1,    16,
3343     17,    18,   195,    -1,    -1,   198,   199,   200,    -1,    -1,
3344     27,    28,    29,    30,    31,   208,    33,    34,    -1,    -1,
3345     -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    45,    -1,
3346     47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
3347     -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,
3348     -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,    76,
3349     -1,    -1,    79,    -1,    81,    -1,    -1,    -1,    -1,    86,
3350     -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
3351     -1,    -1,    99,    -1,   101,   102,    -1,    -1,    -1,   106,
3352     -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
3353     -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
3354     -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,
3355     -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,
3356     -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,    -1,
3357    157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,   166,
3358     -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,   176,
3359     -1,    -1,     3,    -1,    -1,   182,    -1,   184,   185,   186,
3360    187,   188,   189,    -1,    -1,    16,    17,    18,   195,    -1,
3361     -1,   198,   199,   200,    -1,    -1,    27,    28,    29,    30,
3362     31,   208,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
3363     -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
3364     -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,
3365     -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,
3366     71,    72,    -1,    74,    -1,    -1,    -1,    -1,    79,    -1,
3367     81,    -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    -1,
3368     -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
3369    101,   102,    -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,
3370     -1,   112,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
3371    121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3372     -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,
3373     -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,
3374     -1,   152,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
3375     -1,    -1,   163,    -1,    -1,   166,    -1,   168,    -1,    -1,
3376     -1,    -1,    -1,   174,    -1,   176,    -1,    -1,     3,    -1,
3377     -1,   182,    -1,   184,   185,   186,   187,   188,   189,    -1,
3378     -1,    16,    17,    18,   195,    -1,    -1,   198,   199,   200,
3379     -1,    -1,    27,    28,    29,    30,    31,   208,    33,    34,
3380     -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,
3381     -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3382     55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
3383     -1,    -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,
3384     -1,    -1,    -1,    -1,    79,    -1,    81,    -1,    -1,    -1,
3385     -1,    86,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,
3386     -1,    96,    -1,    -1,    99,    12,   101,   102,    -1,    -1,
3387     -1,   106,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
3388     -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
3389     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,
3390     -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,    56,
3391     -1,    -1,    -1,    -1,    61,   150,    -1,   152,    -1,    -1,
3392     67,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,
3393     -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,
3394     -1,   176,    -1,    -1,     3,    -1,    -1,   182,    -1,   184,
3395    185,   186,   187,   188,   189,    -1,    -1,    16,    17,    18,
3396    195,    -1,    -1,   198,   199,   200,    -1,    -1,    -1,    28,
3397     29,    30,    31,   208,    33,    34,    -1,    -1,    -1,    -1,
3398     -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
3399     -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,   145,    -1,
3400     59,    -1,    -1,    -1,    63,    64,    -1,    -1,   155,    -1,
3401     69,    70,    71,    72,    -1,    74,    -1,    -1,    -1,    78,
3402     79,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3403     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,   186,
3404     -1,    -1,   101,   102,   191,   192,   193,   194,   195,   196,
3405    197,    -1,    -1,   112,    -1,    -1,    -1,    -1,   205,   118,
3406    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3407     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3408     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3409     -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
3410    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3411     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3412      3,    -1,    -1,   182,    -1,   184,   185,   186,   187,   188,
3413    189,    -1,    -1,    16,    17,    18,   195,    -1,    -1,   198,
3414    199,   200,    -1,    -1,    -1,    28,    29,    30,    31,   208,
3415     33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
3416     -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3417     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    -1,    -1,
3418     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
3419     -1,    74,    -1,    -1,    -1,    78,    79,    -1,    81,    -1,
3420     -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
3421     -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,   101,   102,
3422     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
3423     -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
3424    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3425    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3426     -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,    -1,    -1,
3427     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3428    163,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
3429     -1,   174,    -1,   176,    -1,    -1,     3,    -1,    -1,   182,
3430     -1,   184,   185,   186,   187,   188,   189,    -1,    -1,    16,
3431     17,    18,   195,    -1,    -1,   198,   199,   200,    -1,    -1,
3432     27,    -1,    -1,    -1,    -1,   208,    33,    34,    -1,    -1,
3433     -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
3434     47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
3435     -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,
3436     -1,    -1,    69,    70,    71,    72,    -1,    74,    -1,    -1,
3437     -1,    -1,    79,    -1,    81,    -1,    -1,    -1,    -1,    86,
3438     -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
3439     -1,    -1,    99,    -1,   101,   102,    -1,    -1,    -1,   106,
3440     -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
3441     -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
3442     -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,
3443     -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,
3444     -1,    -1,    -1,   150,    -1,   152,    -1,    -1,    -1,    -1,
3445    157,    -1,   159,    -1,    -1,    -1,   163,    -1,    -1,   166,
3446     -1,   168,    -1,    -1,    -1,    -1,    -1,   174,    -1,   176,
3447     -1,    -1,     3,    -1,    -1,   182,    -1,   184,   185,   186,
3448    187,   188,   189,    -1,    -1,    16,    17,    18,   195,    -1,
3449     -1,   198,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,
3450     -1,   208,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
3451     -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
3452     -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,
3453     -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    69,    70,
3454     71,    72,    -1,    74,    -1,    -1,    -1,    -1,    79,    -1,
3455     81,    -1,    -1,    -1,    -1,    86,    -1,    -1,    89,    -1,
3456     -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
3457    101,   102,    -1,    -1,    -1,   106,    -1,    -1,    -1,    -1,
3458     -1,   112,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
3459    121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3460     -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,   140,
3461     -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   150,
3462     -1,   152,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
3463     -1,    -1,   163,    -1,    -1,   166,    -1,   168,    -1,    -1,
3464     -1,    -1,    -1,   174,    -1,   176,    -1,    -1,     3,    -1,
3465     -1,   182,    -1,   184,   185,   186,   187,   188,   189,    -1,
3466     -1,    16,    17,    18,   195,    -1,    -1,   198,    -1,    -1,
3467     -1,    -1,    -1,    -1,    -1,    -1,    -1,   208,    33,    34,
3468     -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,
3469     -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3470     55,    -1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,
3471     -1,    -1,    -1,    -1,    69,    70,    71,    72,    -1,    74,
3472     -1,    76,    -1,    78,    79,    -1,    81,    -1,    -1,    -1,
3473     -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,
3474     -1,    96,    -1,    -1,    -1,    -1,   101,   102,    -1,    -1,
3475     -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
3476     -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
3477     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,
3478     -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,
3479     -1,    -1,    -1,    -1,    -1,   150,    -1,    -1,    -1,    -1,
3480     -1,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,
3481     -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,   174,
3482     -1,   176,    -1,    -1,     3,    -1,    -1,   182,    -1,   184,
3483    185,   186,   187,   188,   189,    -1,    -1,    16,    17,    18,
3484    195,    -1,    -1,   198,   199,   200,    -1,    -1,    -1,    -1,
3485     -1,    -1,    -1,   208,    33,    34,    -1,    -1,    -1,    -1,
3486     -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
3487     -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
3488     59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3489     69,    70,    71,    72,    -1,    74,    -1,    76,    -1,    78,
3490     79,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3491     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3492     -1,    -1,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
3493     -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,
3494    119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
3495     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3496     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3497     -1,   150,    -1,    -1,     3,    -1,    -1,    -1,   157,    -1,
3498    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3499     -1,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3500     -1,    -1,    -1,   182,    33,   184,   185,   186,   187,   188,
3501    189,    40,    -1,    -1,    -1,    -1,   195,    -1,    -1,   198,
3502    199,   200,    -1,    -1,    -1,    -1,    55,    -1,    -1,   208,
3503     -1,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,
3504     69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3505     -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3506     89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
3507     -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3508     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,
3509    119,    -1,   121,    -1,   123,    -1,    -1,    -1,    -1,    -1,
3510     -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,
3511     -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,    -1,
3512     -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
3513    159,    -1,    -1,    -1,   163,    -1,    -1,   166,    -1,   168,
3514      3,    -1,    -1,    -1,    -1,   174,    -1,   176,    -1,    -1,
3515     -1,    -1,    -1,   182,    -1,   184,   185,   186,   187,    -1,
3516    189,    -1,   191,   192,   193,   194,   195,   196,   197,    -1,
3517     33,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
3518     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3519     -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    62,
3520     63,    64,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,
3521     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,
3522     -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,
3523     -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,   101,    -1,
3524     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3525     -1,    -1,    -1,    -1,    -1,   118,   119,    -1,   121,    -1,
3526    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3527    133,   134,    -1,   136,    -1,    -1,    -1,   140,    -1,   142,
3528     -1,    -1,    -1,    -1,    -1,     3,    -1,   150,    -1,    -1,
3529     -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
3530    163,    -1,    -1,    -1,    -1,   168,    -1,    -1,    -1,    -1,
3531     -1,   174,    -1,   176,    -1,    33,    -1,    -1,    -1,   182,
3532     -1,   184,    40,   186,    -1,    -1,    -1,    -1,   191,   192,
3533    193,   194,   195,   196,   197,    -1,    -1,    55,    -1,    -1,
3534     -1,    -1,    -1,    -1,    62,    63,    64,    -1,    -1,    -1,
3535     -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
3536     -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,     3,
3537     -1,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    -1,
3538     -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
3539     -1,    -1,    -1,    27,    -1,    -1,    -1,    -1,    -1,    33,
3540    118,   119,    -1,   121,    -1,   123,    40,    -1,    -1,    -1,
3541     -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,
3542     -1,    55,   140,    -1,   142,    -1,    -1,    -1,    -1,    63,
3543     64,    -1,   150,    -1,    -1,    69,    70,    71,    -1,   157,
3544     -1,   159,    -1,    -1,    -1,   163,    -1,    81,    -1,    -1,
3545    168,    -1,    -1,     3,    -1,    89,   174,    -1,   176,    -1,
3546     -1,    -1,    96,    -1,   182,    -1,   184,   101,   186,    -1,
3547     -1,    -1,    -1,   191,   192,   193,   194,   195,   196,   197,
3548     -1,    -1,    -1,    33,   118,   119,    -1,   121,    -1,   123,
3549     40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
3550    134,    -1,   136,    -1,    -1,    55,   140,    -1,   142,    -1,
3551     -1,    -1,    -1,    63,    64,    -1,   150,    -1,   152,    69,
3552     70,    71,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,
3553     -1,    81,    -1,    -1,   168,    -1,    -1,     3,    -1,    89,
3554    174,    -1,   176,    -1,    -1,    -1,    96,    -1,   182,    -1,
3555    184,   101,    -1,    -1,   188,    -1,    -1,    -1,    -1,    -1,
3556     -1,    -1,   196,    -1,    -1,    -1,    -1,    33,   118,   119,
3557     -1,   121,    -1,   123,    40,    -1,    -1,    -1,    -1,    -1,
3558     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    55,
3559    140,    -1,   142,    -1,    -1,    -1,    -1,    63,    64,    -1,
3560    150,    -1,    -1,    69,    70,    71,    -1,   157,    -1,   159,
3561     -1,    -1,    -1,   163,    -1,    81,    -1,    -1,   168,    -1,
3562     -1,     3,    -1,    89,   174,    -1,   176,    -1,    -1,    -1,
3563     96,    -1,   182,    -1,   184,   101,    -1,    -1,    -1,    -1,
3564     -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,
3565     -1,    33,   118,   119,    -1,   121,    -1,   123,    40,    -1,
3566     -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,
3567    136,    -1,    -1,    55,   140,    -1,   142,    -1,    -1,    -1,
3568     -1,    63,    64,    -1,   150,    -1,    -1,    69,    70,    71,
3569     -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,    81,
3570     -1,    -1,   168,    -1,    -1,     3,    -1,    89,   174,    -1,
3571    176,    -1,    -1,    -1,    96,    -1,   182,    -1,   184,   101,
3572     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3573    196,    -1,    -1,    -1,    -1,    33,   118,   119,    -1,   121,
3574     -1,   123,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3575     -1,   133,   134,    -1,   136,    -1,    -1,    55,   140,    -1,
3576    142,    -1,    -1,    -1,    -1,    63,    64,    -1,   150,    -1,
3577     -1,    69,    70,    71,    -1,   157,    -1,   159,    -1,    -1,
3578     -1,   163,    -1,    81,    -1,    -1,   168,    -1,    -1,     3,
3579     -1,    89,   174,    -1,   176,    -1,    -1,    -1,    96,    -1,
3580    182,    -1,   184,   101,    -1,    -1,    -1,    -1,    -1,    -1,
3581     -1,    -1,    -1,    27,   196,    -1,    -1,    -1,    -1,    33,
3582    118,   119,    -1,   121,    -1,   123,    40,    -1,    -1,    -1,
3583     -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,
3584     -1,    55,   140,    -1,   142,    -1,    -1,    -1,    -1,    63,
3585     64,    -1,   150,    -1,    -1,    69,    70,    71,    -1,   157,
3586     -1,   159,    -1,    -1,    -1,   163,    -1,    81,    -1,    -1,
3587    168,    -1,    -1,     3,    -1,    89,   174,    -1,   176,    -1,
3588     -1,    -1,    96,    -1,   182,    -1,   184,   101,    -1,    -1,
3589     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,
3590     -1,    -1,    -1,    33,   118,   119,    -1,   121,    -1,   123,
3591     40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
3592    134,    -1,   136,    -1,    -1,    55,   140,    -1,   142,    -1,
3593     -1,    -1,    -1,    63,    64,    -1,   150,    -1,   152,    69,
3594     70,    71,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,
3595     -1,    81,    -1,    -1,   168,    -1,    -1,    -1,    -1,    89,
3596    174,    -1,   176,    -1,    -1,    -1,    96,    -1,   182,    -1,
3597    184,   101,    -1,    -1,   188,    -1,    -1,    -1,    -1,    -1,
3598     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
3599     -1,   121,    -1,   123,    -1,     3,    -1,    -1,    -1,    -1,
3600     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,
3601    140,    -1,   142,    -1,    -1,    -1,    24,    -1,    26,    -1,
3602    150,    -1,    -1,    -1,    -1,    33,    -1,   157,    -1,   159,
3603     -1,    -1,    40,   163,    -1,    -1,    -1,    -1,   168,    -1,
3604     -1,    49,    -1,    -1,   174,    53,   176,    55,    -1,    -1,
3605     -1,    -1,   182,    -1,   184,    63,    64,   187,    -1,    -1,
3606     -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
3607     -1,    -1,    -1,    81,    -1,    83,    -1,    -1,    86,    87,
3608     -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,
3609     -1,    -1,   100,   101,    -1,    -1,    -1,   105,    -1,    -1,
3610     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3611    118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
3612     -1,    -1,    -1,   131,    -1,   133,   134,    -1,   136,    -1,
3613     -1,    -1,   140,     3,   142,    -1,    -1,    -1,    -1,    -1,
3614    148,    -1,   150,    -1,    -1,    -1,    -1,    17,    18,   157,
3615     -1,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
3616    168,    -1,    -1,    33,    34,    -1,   174,   175,   176,    -1,
3617     40,    -1,    -1,    -1,   182,    -1,   184,    47,    -1,    -1,
3618     -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
3619     -1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    69,
3620     70,    71,    72,    -1,    74,    -1,    -1,    -1,    -1,    79,
3621     -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
3622     -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
3623     -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3624     -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,   118,   119,
3625     -1,   121,    -1,   123,    -1,     3,    -1,    -1,    -1,    -1,
3626     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    -1,
3627    140,    19,   142,    -1,    -1,    -1,    24,    -1,    -1,    -1,
3628    150,    -1,    -1,    -1,    -1,    33,    -1,   157,    -1,   159,
3629     -1,    -1,    40,   163,    -1,    -1,    -1,    -1,   168,    -1,
3630     -1,    49,    -1,    -1,   174,    -1,   176,    55,    -1,    -1,
3631     -1,    -1,   182,    -1,   184,    63,    64,    -1,    -1,    -1,
3632     -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
3633     -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,     3,
3634     88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,
3635     -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
3636    108,    -1,    -1,    27,    -1,    -1,    -1,    -1,    -1,    33,
3637    118,   119,    -1,   121,    -1,   123,    40,    -1,    -1,    -1,
3638     -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,    -1,
3639     -1,    55,   140,    -1,   142,    -1,    -1,    -1,    -1,    63,
3640     64,    -1,   150,    -1,    -1,    69,    70,    71,    -1,   157,
3641     -1,   159,    -1,    -1,    -1,   163,    -1,    81,    -1,    -1,
3642    168,    -1,    -1,     3,    -1,    89,   174,    -1,   176,    -1,
3643     -1,    -1,    96,    -1,   182,    -1,   184,   101,    -1,    -1,
3644     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3645     -1,    -1,    -1,    33,   118,   119,    -1,   121,    -1,   123,
3646     40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
3647    134,    -1,   136,    53,    -1,    55,   140,    -1,   142,    -1,
3648     -1,    -1,    -1,    63,    64,    -1,   150,    -1,   152,    69,
3649     70,    71,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,
3650     -1,    81,    -1,    -1,   168,    -1,    -1,     3,    -1,    89,
3651    174,    91,   176,    -1,    -1,    -1,    96,    -1,   182,    -1,
3652    184,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3653     -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,   118,   119,
3654     -1,   121,    -1,   123,    40,    -1,    -1,    -1,    -1,    -1,
3655     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    55,
3656    140,    -1,   142,    -1,    -1,    -1,    -1,    63,    64,    -1,
3657    150,    -1,    -1,    69,    70,    71,    -1,   157,    -1,   159,
3658     -1,    -1,    -1,   163,    -1,    81,    -1,    -1,   168,    -1,
3659     -1,    -1,    -1,    89,   174,    -1,   176,    -1,     3,    -1,
3660     96,    -1,   182,    -1,   184,   101,    -1,    -1,    -1,    -1,
3661     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3662     -1,    -1,   118,   119,    -1,   121,    -1,   123,    33,    -1,
3663     -1,    -1,    -1,    -1,    -1,    40,    -1,   133,   134,    -1,
3664    136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,    -1,
3665     55,    -1,    -1,    -1,   150,    -1,    -1,   153,    63,    64,
3666     -1,   157,    -1,   159,    69,    70,    71,   163,    -1,    -1,
3667     -1,    -1,   168,    -1,    -1,    -1,    81,    -1,   174,    -1,
3668    176,    -1,    -1,    -1,    89,    -1,   182,    -1,   184,     3,
3669     -1,    96,    -1,    -1,    -1,     9,   101,    -1,    -1,    -1,
3670     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3671     -1,    -1,    -1,   118,   119,    -1,   121,    -1,   123,    33,
3672     -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,   133,   134,
3673     -1,   136,    -1,    -1,    -1,   140,    -1,   142,    -1,    -1,
3674     -1,    55,    -1,    -1,    -1,   150,    -1,    -1,   153,    63,
3675     64,    -1,   157,    -1,   159,    69,    70,    71,   163,    -1,
3676     -1,    -1,    -1,   168,    -1,    -1,    -1,    81,    -1,   174,
3677     -1,   176,    -1,     3,    -1,    89,    -1,   182,    -1,   184,
3678     -1,    -1,    96,    -1,    -1,    -1,    -1,   101,    -1,    -1,
3679     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3680     -1,    -1,    -1,    33,   118,   119,    -1,   121,    -1,   123,
3681     40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
3682    134,    -1,   136,    -1,    -1,    55,   140,    -1,   142,    -1,
3683     -1,    -1,    -1,    63,    64,    -1,   150,    -1,    -1,    69,
3684     70,    71,    -1,   157,    -1,   159,    -1,    -1,    -1,   163,
3685     -1,    81,    -1,    -1,   168,    -1,    -1,     3,    -1,    89,
3686    174,    -1,   176,    -1,    -1,    -1,    96,    -1,   182,    -1,
3687    184,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3688     -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,   118,   119,
3689     -1,   121,    -1,   123,    40,    -1,    -1,    -1,    -1,    -1,
3690     -1,    -1,    -1,   133,   134,    -1,   136,    -1,    -1,    55,
3691    140,    -1,   142,    -1,    -1,    -1,    -1,    63,    64,    -1,
3692    150,    -1,    -1,    69,    70,    71,    -1,   157,    -1,   159,
3693     -1,    -1,    -1,   163,    -1,    81,    -1,    -1,   168,    -1,
3694     -1,     3,    -1,    89,   174,    -1,   176,    -1,    -1,    -1,
3695     96,    -1,   182,    -1,   184,   101,    -1,    -1,    -1,    -1,
3696     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3697     -1,    33,   118,   119,    -1,   121,    -1,   123,    40,    -1,
3698     -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,   134,    -1,
3699    136,    -1,    -1,    55,   140,    -1,   142,    -1,    -1,    -1,
3700     -1,    63,    64,    -1,   150,    -1,    -1,    69,    70,    71,
3701     -1,   157,    -1,   159,    -1,    -1,    -1,   163,    -1,    81,
3702     -1,    -1,   168,    -1,    -1,     3,    -1,    89,   174,    -1,
3703    176,    -1,    -1,    -1,    96,    -1,   182,    -1,   184,   101,
3704     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3705     -1,    -1,    -1,    -1,    -1,    33,   118,   119,    -1,   121,
3706     -1,   123,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3707     -1,   133,   134,    -1,   136,    -1,    -1,    55,   140,    -1,
3708    142,    -1,    -1,    -1,    -1,    63,    64,    -1,   150,    -1,
3709     -1,    69,    70,    71,    -1,   157,    -1,   159,    -1,    -1,
3710     -1,   163,    -1,    81,    -1,    -1,   168,    -1,    -1,    -1,
3711     -1,    89,   174,    -1,   176,    -1,    -1,    -1,    96,    -1,
3712    182,    -1,   184,   101,    -1,    -1,    -1,    -1,    -1,    -1,
3713     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3714    118,   119,    -1,   121,    -1,   123,    -1,    -1,    -1,    -1,
3715     -1,    -1,    -1,    -1,    -1,   133,   134,    -1,   136,    17,
3716     18,    -1,   140,    -1,   142,    -1,    -1,    -1,    -1,    -1,
3717     -1,    -1,   150,    -1,    -1,    33,    34,    -1,    -1,   157,
3718     -1,   159,    40,    -1,    -1,   163,    -1,    -1,    -1,    47,
3719    168,    -1,    -1,    -1,    17,    18,   174,    55,   176,    -1,
3720     -1,    59,    -1,    -1,   182,    -1,   184,    -1,    -1,    -1,
3721     33,    34,    70,    71,    72,    -1,    74,    40,    -1,    -1,
3722     -1,    79,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
3723     -1,    -1,    55,    -1,    -1,    -1,    59,    -1,    96,    97,
3724     -1,    -1,    -1,   101,   102,    -1,    -1,    70,    71,    72,
3725     -1,    74,    -1,    -1,   112,    -1,    79,    -1,    -1,    -1,
3726    118,    -1,   120,    -1,   122,   123,    -1,    -1,    -1,    -1,
3727     -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,   101,   102,
3728     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
3729     -1,    -1,    -1,    -1,    -1,   118,    -1,   120,    -1,   122,
3730    123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   166,    -1,
3731     -1,    -1,    -1,    -1,    -1,    -1,    17,    18,    -1,    -1,
3732     -1,    -1,    -1,    -1,    -1,    -1,   184,   185,    -1,   187,
3733    188,   189,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
3734     -1,    -1,    -1,   166,    -1,    -1,    47,    -1,    -1,    -1,
3735     -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,
3736     -1,   184,   185,    -1,   187,   188,   189,     6,    -1,    70,
3737     71,    72,    11,    74,    -1,    -1,    -1,    -1,    79,    -1,
3738     -1,    20,    -1,    -1,    23,    -1,    25,    -1,    -1,    -1,
3739     -1,    -1,    -1,    -1,    -1,    96,    35,    -1,    37,    -1,
3740    101,   102,    41,    42,    43,    -1,    -1,    46,    -1,    -1,
3741     -1,   112,    -1,    52,    -1,    -1,    -1,   118,    -1,    58,
3742     -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3743     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,
3744     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3745     -1,    -1,    -1,    -1,    93,    -1,    95,    -1,    97,    98,
3746     -1,    -1,    -1,    -1,    -1,   166,    -1,    -1,    -1,    -1,
3747    109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3748     -1,    -1,    -1,   184,    -1,   124,    -1,    -1,    -1,    -1,
3749     -1,    -1,   131,   132,    -1,    -1,    -1,    -1,   137,   138,
3750     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   147,   148,
3751    149,    -1,   151,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3752     -1,    -1,   161,    -1,    -1,    -1,    -1,    -1,   167,    -1,
3753     -1,    -1,    -1,   172
3754 };
3755 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
3756 #line 3 "/usr/share/misc/bison.simple"
3757
3758 /* Skeleton output parser for bison,
3759    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
3760
3761    This program is free software; you can redistribute it and/or modify
3762    it under the terms of the GNU General Public License as published by
3763    the Free Software Foundation; either version 2, or (at your option)
3764    any later version.
3765
3766    This program is distributed in the hope that it will be useful,
3767    but WITHOUT ANY WARRANTY; without even the implied warranty of
3768    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3769    GNU General Public License for more details.
3770
3771    You should have received a copy of the GNU General Public License
3772    along with this program; if not, write to the Free Software
3773    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
3774
3775 /* As a special exception, when this file is copied by Bison into a
3776    Bison output file, you may use that output file without restriction.
3777    This special exception was added by the Free Software Foundation
3778    in version 1.24 of Bison.  */
3779
3780 #ifndef alloca
3781 #ifdef __GNUC__
3782 #define alloca __builtin_alloca
3783 #else /* not GNU C.  */
3784 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
3785 #include <alloca.h>
3786 #else /* not sparc */
3787 #if defined (MSDOS) && !defined (__TURBOC__)
3788 #include <malloc.h>
3789 #else /* not MSDOS, or __TURBOC__ */
3790 #if defined(_AIX)
3791 #include <malloc.h>
3792  #pragma alloca
3793 #else /* not MSDOS, __TURBOC__, or _AIX */
3794 #ifdef __hpux
3795 #ifdef __cplusplus
3796 extern "C" {
3797 void *alloca (unsigned int);
3798 };
3799 #else /* not __cplusplus */
3800 void *alloca ();
3801 #endif /* not __cplusplus */
3802 #endif /* __hpux */
3803 #endif /* not _AIX */
3804 #endif /* not MSDOS, or __TURBOC__ */
3805 #endif /* not sparc.  */
3806 #endif /* not GNU C.  */
3807 #endif /* alloca not defined.  */
3808
3809 /* This is the parser code that is written into each bison parser
3810   when the %semantic_parser declaration is not specified in the grammar.
3811   It was written by Richard Stallman by simplifying the hairy parser
3812   used when %semantic_parser is specified.  */
3813
3814 /* Note: there must be only one dollar sign in this file.
3815    It is replaced by the list of actions, each action
3816    as one case of the switch.  */
3817
3818 #define yyerrok         (yyerrstatus = 0)
3819 #define yyclearin       (yychar = YYEMPTY)
3820 #define YYEMPTY         -2
3821 #define YYEOF           0
3822 #define YYACCEPT        return(0)
3823 #define YYABORT         return(1)
3824 #define YYERROR         goto yyerrlab1
3825 /* Like YYERROR except do call yyerror.
3826    This remains here temporarily to ease the
3827    transition to the new meaning of YYERROR, for GCC.
3828    Once GCC version 2 has supplanted version 1, this can go.  */
3829 #define YYFAIL          goto yyerrlab
3830 #define YYRECOVERING()  (!!yyerrstatus)
3831 #define YYBACKUP(token, value) \
3832 do                                                              \
3833   if (yychar == YYEMPTY && yylen == 1)                          \
3834     { yychar = (token), yylval = (value);                       \
3835       yychar1 = YYTRANSLATE (yychar);                           \
3836       YYPOPSTACK;                                               \
3837       goto yybackup;                                            \
3838     }                                                           \
3839   else                                                          \
3840     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
3841 while (0)
3842
3843 #define YYTERROR        1
3844 #define YYERRCODE       256
3845
3846 #ifndef YYPURE
3847 #define YYLEX           yylex()
3848 #endif
3849
3850 #ifdef YYPURE
3851 #ifdef YYLSP_NEEDED
3852 #ifdef YYLEX_PARAM
3853 #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
3854 #else
3855 #define YYLEX           yylex(&yylval, &yylloc)
3856 #endif
3857 #else /* not YYLSP_NEEDED */
3858 #ifdef YYLEX_PARAM
3859 #define YYLEX           yylex(&yylval, YYLEX_PARAM)
3860 #else
3861 #define YYLEX           yylex(&yylval)
3862 #endif
3863 #endif /* not YYLSP_NEEDED */
3864 #endif
3865
3866 /* If nonreentrant, generate the variables here */
3867
3868 #ifndef YYPURE
3869
3870 int     yychar;                 /*  the lookahead symbol                */
3871 YYSTYPE yylval;                 /*  the semantic value of the           */
3872                                 /*  lookahead symbol                    */
3873
3874 #ifdef YYLSP_NEEDED
3875 YYLTYPE yylloc;                 /*  location data for the lookahead     */
3876                                 /*  symbol                              */
3877 #endif
3878
3879 int yynerrs;                    /*  number of parse errors so far       */
3880 #endif  /* not YYPURE */
3881
3882 #if YYDEBUG != 0
3883 int yydebug;                    /*  nonzero means print parse trace     */
3884 /* Since this is uninitialized, it does not stop multiple parsers
3885    from coexisting.  */
3886 #endif
3887
3888 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
3889
3890 #ifndef YYINITDEPTH
3891 #define YYINITDEPTH 200
3892 #endif
3893
3894 /*  YYMAXDEPTH is the maximum size the stacks can grow to
3895     (effective only if the built-in stack extension method is used).  */
3896
3897 #if YYMAXDEPTH == 0
3898 #undef YYMAXDEPTH
3899 #endif
3900
3901 #ifndef YYMAXDEPTH
3902 #define YYMAXDEPTH 10000
3903 #endif
3904
3905 /* Prevent warning if -Wstrict-prototypes.  */
3906 #ifdef __GNUC__
3907 int yyparse (void);
3908 #endif
3909 \f
3910 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
3911 #define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
3912 #else                           /* not GNU C or C++ */
3913 #ifndef __cplusplus
3914
3915 /* This is the most reliable way to avoid incompatibilities
3916    in available built-in functions on various systems.  */
3917 static void
3918 __yy_memcpy (to, from, count)
3919      char *to;
3920      char *from;
3921      int count;
3922 {
3923   register char *f = from;
3924   register char *t = to;
3925   register int i = count;
3926
3927   while (i-- > 0)
3928     *t++ = *f++;
3929 }
3930
3931 #else /* __cplusplus */
3932
3933 /* This is the most reliable way to avoid incompatibilities
3934    in available built-in functions on various systems.  */
3935 static void
3936 __yy_memcpy (char *to, char *from, int count)
3937 {
3938   register char *f = from;
3939   register char *t = to;
3940   register int i = count;
3941
3942   while (i-- > 0)
3943     *t++ = *f++;
3944 }
3945
3946 #endif
3947 #endif
3948 \f
3949 #line 196 "/usr/share/misc/bison.simple"
3950
3951 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
3952    into yyparse.  The argument should have type void *.
3953    It should actually point to an object.
3954    Grammar actions can access the variable by casting it
3955    to the proper pointer type.  */
3956
3957 #ifdef YYPARSE_PARAM
3958 #ifdef __cplusplus
3959 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
3960 #define YYPARSE_PARAM_DECL
3961 #else /* not __cplusplus */
3962 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
3963 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
3964 #endif /* not __cplusplus */
3965 #else /* not YYPARSE_PARAM */
3966 #define YYPARSE_PARAM_ARG
3967 #define YYPARSE_PARAM_DECL
3968 #endif /* not YYPARSE_PARAM */
3969
3970 int
3971 yyparse(YYPARSE_PARAM_ARG)
3972      YYPARSE_PARAM_DECL
3973 {
3974   register int yystate;
3975   register int yyn;
3976   register short *yyssp;
3977   register YYSTYPE *yyvsp;
3978   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
3979   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
3980
3981   short yyssa[YYINITDEPTH];     /*  the state stack                     */
3982   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
3983
3984   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
3985   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
3986
3987 #ifdef YYLSP_NEEDED
3988   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
3989   YYLTYPE *yyls = yylsa;
3990   YYLTYPE *yylsp;
3991
3992 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
3993 #else
3994 #define YYPOPSTACK   (yyvsp--, yyssp--)
3995 #endif
3996
3997   int yystacksize = YYINITDEPTH;
3998
3999 #ifdef YYPURE
4000   int yychar;
4001   YYSTYPE yylval;
4002   int yynerrs;
4003 #ifdef YYLSP_NEEDED
4004   YYLTYPE yylloc;
4005 #endif
4006 #endif
4007
4008   YYSTYPE yyval;                /*  the variable used to return         */
4009                                 /*  semantic values from the action     */
4010                                 /*  routines                            */
4011
4012   int yylen;
4013
4014 #if YYDEBUG != 0
4015   if (yydebug)
4016     fprintf(stderr, "Starting parse\n");
4017 #endif
4018
4019   yystate = 0;
4020   yyerrstatus = 0;
4021   yynerrs = 0;
4022   yychar = YYEMPTY;             /* Cause a token to be read.  */
4023
4024   /* Initialize stack pointers.
4025      Waste one element of value and location stack
4026      so that they stay on the same level as the state stack.
4027      The wasted elements are never initialized.  */
4028
4029   yyssp = yyss - 1;
4030   yyvsp = yyvs;
4031 #ifdef YYLSP_NEEDED
4032   yylsp = yyls;
4033 #endif
4034
4035 /* Push a new state, which is found in  yystate  .  */
4036 /* In all cases, when you get here, the value and location stacks
4037    have just been pushed. so pushing a state here evens the stacks.  */
4038 yynewstate:
4039
4040   *++yyssp = yystate;
4041
4042   if (yyssp >= yyss + yystacksize - 1)
4043     {
4044       /* Give user a chance to reallocate the stack */
4045       /* Use copies of these so that the &'s don't force the real ones into memory. */
4046       YYSTYPE *yyvs1 = yyvs;
4047       short *yyss1 = yyss;
4048 #ifdef YYLSP_NEEDED
4049       YYLTYPE *yyls1 = yyls;
4050 #endif
4051
4052       /* Get the current used size of the three stacks, in elements.  */
4053       int size = yyssp - yyss + 1;
4054
4055 #ifdef yyoverflow
4056       /* Each stack pointer address is followed by the size of
4057          the data in use in that stack, in bytes.  */
4058 #ifdef YYLSP_NEEDED
4059       /* This used to be a conditional around just the two extra args,
4060          but that might be undefined if yyoverflow is a macro.  */
4061       yyoverflow("parser stack overflow",
4062                  &yyss1, size * sizeof (*yyssp),
4063                  &yyvs1, size * sizeof (*yyvsp),
4064                  &yyls1, size * sizeof (*yylsp),
4065                  &yystacksize);
4066 #else
4067       yyoverflow("parser stack overflow",
4068                  &yyss1, size * sizeof (*yyssp),
4069                  &yyvs1, size * sizeof (*yyvsp),
4070                  &yystacksize);
4071 #endif
4072
4073       yyss = yyss1; yyvs = yyvs1;
4074 #ifdef YYLSP_NEEDED
4075       yyls = yyls1;
4076 #endif
4077 #else /* no yyoverflow */
4078       /* Extend the stack our own way.  */
4079       if (yystacksize >= YYMAXDEPTH)
4080         {
4081           yyerror("parser stack overflow");
4082           return 2;
4083         }
4084       yystacksize *= 2;
4085       if (yystacksize > YYMAXDEPTH)
4086         yystacksize = YYMAXDEPTH;
4087       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
4088       __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
4089       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
4090       __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
4091 #ifdef YYLSP_NEEDED
4092       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
4093       __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
4094 #endif
4095 #endif /* no yyoverflow */
4096
4097       yyssp = yyss + size - 1;
4098       yyvsp = yyvs + size - 1;
4099 #ifdef YYLSP_NEEDED
4100       yylsp = yyls + size - 1;
4101 #endif
4102
4103 #if YYDEBUG != 0
4104       if (yydebug)
4105         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
4106 #endif
4107
4108       if (yyssp >= yyss + yystacksize - 1)
4109         YYABORT;
4110     }
4111
4112 #if YYDEBUG != 0
4113   if (yydebug)
4114     fprintf(stderr, "Entering state %d\n", yystate);
4115 #endif
4116
4117   goto yybackup;
4118  yybackup:
4119
4120 /* Do appropriate processing given the current state.  */
4121 /* Read a lookahead token if we need one and don't already have one.  */
4122 /* yyresume: */
4123
4124   /* First try to decide what to do without reference to lookahead token.  */
4125
4126   yyn = yypact[yystate];
4127   if (yyn == YYFLAG)
4128     goto yydefault;
4129
4130   /* Not known => get a lookahead token if don't already have one.  */
4131
4132   /* yychar is either YYEMPTY or YYEOF
4133      or a valid token in external form.  */
4134
4135   if (yychar == YYEMPTY)
4136     {
4137 #if YYDEBUG != 0
4138       if (yydebug)
4139         fprintf(stderr, "Reading a token: ");
4140 #endif
4141       yychar = YYLEX;
4142     }
4143
4144   /* Convert token to internal form (in yychar1) for indexing tables with */
4145
4146   if (yychar <= 0)              /* This means end of input. */
4147     {
4148       yychar1 = 0;
4149       yychar = YYEOF;           /* Don't call YYLEX any more */
4150
4151 #if YYDEBUG != 0
4152       if (yydebug)
4153         fprintf(stderr, "Now at end of input.\n");
4154 #endif
4155     }
4156   else
4157     {
4158       yychar1 = YYTRANSLATE(yychar);
4159
4160 #if YYDEBUG != 0
4161       if (yydebug)
4162         {
4163           fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
4164           /* Give the individual parser a way to print the precise meaning
4165              of a token, for further debugging info.  */
4166 #ifdef YYPRINT
4167           YYPRINT (stderr, yychar, yylval);
4168 #endif
4169           fprintf (stderr, ")\n");
4170         }
4171 #endif
4172     }
4173
4174   yyn += yychar1;
4175   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
4176     goto yydefault;
4177
4178   yyn = yytable[yyn];
4179
4180   /* yyn is what to do for this token type in this state.
4181      Negative => reduce, -yyn is rule number.
4182      Positive => shift, yyn is new state.
4183        New state is final state => don't bother to shift,
4184        just return success.
4185      0, or most negative number => error.  */
4186
4187   if (yyn < 0)
4188     {
4189       if (yyn == YYFLAG)
4190         goto yyerrlab;
4191       yyn = -yyn;
4192       goto yyreduce;
4193     }
4194   else if (yyn == 0)
4195     goto yyerrlab;
4196
4197   if (yyn == YYFINAL)
4198     YYACCEPT;
4199
4200   /* Shift the lookahead token.  */
4201
4202 #if YYDEBUG != 0
4203   if (yydebug)
4204     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
4205 #endif
4206
4207   /* Discard the token being shifted unless it is eof.  */
4208   if (yychar != YYEOF)
4209     yychar = YYEMPTY;
4210
4211   *++yyvsp = yylval;
4212 #ifdef YYLSP_NEEDED
4213   *++yylsp = yylloc;
4214 #endif
4215
4216   /* count tokens shifted since error; after three, turn off error status.  */
4217   if (yyerrstatus) yyerrstatus--;
4218
4219   yystate = yyn;
4220   goto yynewstate;
4221
4222 /* Do the default action for the current state.  */
4223 yydefault:
4224
4225   yyn = yydefact[yystate];
4226   if (yyn == 0)
4227     goto yyerrlab;
4228
4229 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
4230 yyreduce:
4231   yylen = yyr2[yyn];
4232   if (yylen > 0)
4233     yyval = yyvsp[1-yylen]; /* implement default value of the action */
4234
4235 #if YYDEBUG != 0
4236   if (yydebug)
4237     {
4238       int i;
4239
4240       fprintf (stderr, "Reducing via rule %d (line %d), ",
4241                yyn, yyrline[yyn]);
4242
4243       /* Print the symbols being reduced, and their result.  */
4244       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
4245         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
4246       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
4247     }
4248 #endif
4249
4250
4251   switch (yyn) {
4252
4253 case 1:
4254 #line 337 "gram.y"
4255 { parsetree = yyvsp[0].list; ;
4256     break;}
4257 case 2:
4258 #line 339 "gram.y"
4259 { parsetree = lcons(yyvsp[0].node,NIL); ;
4260     break;}
4261 case 3:
4262 #line 343 "gram.y"
4263 { yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
4264     break;}
4265 case 4:
4266 #line 345 "gram.y"
4267 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
4268     break;}
4269 case 5:
4270 #line 347 "gram.y"
4271 { yyval.list = lcons(yyvsp[-1].node,NIL); ;
4272     break;}
4273 case 48:
4274 #line 403 "gram.y"
4275 {
4276                                         CreateUserStmt *n = makeNode(CreateUserStmt);
4277                                         n->user = yyvsp[-5].str;
4278                                         n->password = yyvsp[-4].str;
4279                                         n->createdb = yyvsp[-3].pboolean;
4280                                         n->createuser = yyvsp[-2].pboolean;
4281                                         n->groupElts = yyvsp[-1].list;
4282                                         n->validUntil = yyvsp[0].str;
4283                                         yyval.node = (Node *)n;
4284                                 ;
4285     break;}
4286 case 49:
4287 #line 424 "gram.y"
4288 {
4289                                         AlterUserStmt *n = makeNode(AlterUserStmt);
4290                                         n->user = yyvsp[-5].str;
4291                                         n->password = yyvsp[-4].str;
4292                                         n->createdb = yyvsp[-3].pboolean;
4293                                         n->createuser = yyvsp[-2].pboolean;
4294                                         n->groupElts = yyvsp[-1].list;
4295                                         n->validUntil = yyvsp[0].str;
4296                                         yyval.node = (Node *)n;
4297                                 ;
4298     break;}
4299 case 50:
4300 #line 444 "gram.y"
4301 {
4302                                         DropUserStmt *n = makeNode(DropUserStmt);
4303                                         n->user = yyvsp[0].str;
4304                                         yyval.node = (Node *)n;
4305                                 ;
4306     break;}
4307 case 51:
4308 #line 451 "gram.y"
4309 { yyval.str = yyvsp[0].str; ;
4310     break;}
4311 case 52:
4312 #line 452 "gram.y"
4313 { yyval.str = NULL; ;
4314     break;}
4315 case 53:
4316 #line 456 "gram.y"
4317 {
4318                                         bool*  b;
4319                                         yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4320                                         *b = true;
4321                                 ;
4322     break;}
4323 case 54:
4324 #line 462 "gram.y"
4325 {
4326                                         bool*  b;
4327                                         yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4328                                         *b = false;
4329                                 ;
4330     break;}
4331 case 55:
4332 #line 467 "gram.y"
4333 { yyval.pboolean = NULL; ;
4334     break;}
4335 case 56:
4336 #line 471 "gram.y"
4337 {
4338                                         bool*  b;
4339                                         yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4340                                         *b = true;
4341                                 ;
4342     break;}
4343 case 57:
4344 #line 477 "gram.y"
4345 {
4346                                         bool*  b;
4347                                         yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4348                                         *b = false;
4349                                 ;
4350     break;}
4351 case 58:
4352 #line 482 "gram.y"
4353 { yyval.pboolean = NULL; ;
4354     break;}
4355 case 59:
4356 #line 486 "gram.y"
4357 {
4358                                         yyval.list = lcons((void*)makeString(yyvsp[0].str), yyvsp[-2].list);
4359                                 ;
4360     break;}
4361 case 60:
4362 #line 490 "gram.y"
4363 {
4364                                         yyval.list = lcons((void*)makeString(yyvsp[0].str), NIL);
4365                                 ;
4366     break;}
4367 case 61:
4368 #line 495 "gram.y"
4369 { yyval.list = yyvsp[0].list; ;
4370     break;}
4371 case 62:
4372 #line 496 "gram.y"
4373 { yyval.list = NULL; ;
4374     break;}
4375 case 63:
4376 #line 499 "gram.y"
4377 { yyval.str = yyvsp[0].str; ;
4378     break;}
4379 case 64:
4380 #line 500 "gram.y"
4381 { yyval.str = NULL; ;
4382     break;}
4383 case 65:
4384 #line 513 "gram.y"
4385 {
4386                                         VariableSetStmt *n = makeNode(VariableSetStmt);
4387                                         n->name  = yyvsp[-2].str;
4388                                         n->value = yyvsp[0].str;
4389                                         yyval.node = (Node *) n;
4390                                 ;
4391     break;}
4392 case 66:
4393 #line 520 "gram.y"
4394 {
4395                                         VariableSetStmt *n = makeNode(VariableSetStmt);
4396                                         n->name  = yyvsp[-2].str;
4397                                         n->value = yyvsp[0].str;
4398                                         yyval.node = (Node *) n;
4399                                 ;
4400     break;}
4401 case 67:
4402 #line 527 "gram.y"
4403 {
4404                                         VariableSetStmt *n = makeNode(VariableSetStmt);
4405                                         n->name  = "timezone";
4406                                         n->value = yyvsp[0].str;
4407                                         yyval.node = (Node *) n;
4408                                 ;
4409     break;}
4410 case 68:
4411 #line 535 "gram.y"
4412 { yyval.str = yyvsp[0].str; ;
4413     break;}
4414 case 69:
4415 #line 536 "gram.y"
4416 { yyval.str = NULL; ;
4417     break;}
4418 case 70:
4419 #line 539 "gram.y"
4420 { yyval.str = yyvsp[0].str; ;
4421     break;}
4422 case 71:
4423 #line 540 "gram.y"
4424 { yyval.str = NULL; ;
4425     break;}
4426 case 72:
4427 #line 541 "gram.y"
4428 { yyval.str = "default"; ;
4429     break;}
4430 case 73:
4431 #line 545 "gram.y"
4432 {
4433                                         VariableShowStmt *n = makeNode(VariableShowStmt);
4434                                         n->name  = yyvsp[0].str;
4435                                         yyval.node = (Node *) n;
4436                                 ;
4437     break;}
4438 case 74:
4439 #line 551 "gram.y"
4440 {
4441                                         VariableShowStmt *n = makeNode(VariableShowStmt);
4442                                         n->name  = "timezone";
4443                                         yyval.node = (Node *) n;
4444                                 ;
4445     break;}
4446 case 75:
4447 #line 559 "gram.y"
4448 {
4449                                         VariableResetStmt *n = makeNode(VariableResetStmt);
4450                                         n->name  = yyvsp[0].str;
4451                                         yyval.node = (Node *) n;
4452                                 ;
4453     break;}
4454 case 76:
4455 #line 565 "gram.y"
4456 {
4457                                         VariableResetStmt *n = makeNode(VariableResetStmt);
4458                                         n->name  = "timezone";
4459                                         yyval.node = (Node *) n;
4460                                 ;
4461     break;}
4462 case 77:
4463 #line 581 "gram.y"
4464 {
4465                                         AddAttrStmt *n = makeNode(AddAttrStmt);
4466                                         n->relname = yyvsp[-2].str;
4467                                         n->inh = yyvsp[-1].boolean;
4468                                         n->colDef = yyvsp[0].node;
4469                                         yyval.node = (Node *)n;
4470                                 ;
4471     break;}
4472 case 78:
4473 #line 591 "gram.y"
4474 {
4475                                         yyval.node = yyvsp[0].node;
4476                                 ;
4477     break;}
4478 case 79:
4479 #line 595 "gram.y"
4480 {
4481                                         Node *lp = lfirst(yyvsp[-1].list);
4482
4483                                         if (length(yyvsp[-1].list) != 1)
4484                                                 elog(ERROR,"ALTER TABLE/ADD() allows one column only");
4485                                         yyval.node = lp;
4486                                 ;
4487     break;}
4488 case 80:
4489 #line 603 "gram.y"
4490 {       elog(ERROR,"ALTER TABLE/DROP COLUMN not yet implemented"); ;
4491     break;}
4492 case 81:
4493 #line 605 "gram.y"
4494 {       elog(ERROR,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented"); ;
4495     break;}
4496 case 82:
4497 #line 607 "gram.y"
4498 {       elog(ERROR,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented"); ;
4499     break;}
4500 case 83:
4501 #line 609 "gram.y"
4502 {       elog(ERROR,"ALTER TABLE/ADD CONSTRAINT not yet implemented"); ;
4503     break;}
4504 case 84:
4505 #line 621 "gram.y"
4506 {
4507                                         ClosePortalStmt *n = makeNode(ClosePortalStmt);
4508                                         n->portalname = yyvsp[0].str;
4509                                         yyval.node = (Node *)n;
4510                                 ;
4511     break;}
4512 case 85:
4513 #line 638 "gram.y"
4514 {
4515                                         CopyStmt *n = makeNode(CopyStmt);
4516                                         n->binary = yyvsp[-5].boolean;
4517                                         n->relname = yyvsp[-4].str;
4518                                         n->oids = yyvsp[-3].boolean;
4519                                         n->direction = yyvsp[-2].ival;
4520                                         n->filename = yyvsp[-1].str;
4521                                         n->delimiter = yyvsp[0].str;
4522                                         yyval.node = (Node *)n;
4523                                 ;
4524     break;}
4525 case 86:
4526 #line 651 "gram.y"
4527 { yyval.ival = TO; ;
4528     break;}
4529 case 87:
4530 #line 653 "gram.y"
4531 { yyval.ival = FROM; ;
4532     break;}
4533 case 88:
4534 #line 661 "gram.y"
4535 { yyval.str = yyvsp[0].str; ;
4536     break;}
4537 case 89:
4538 #line 662 "gram.y"
4539 { yyval.str = NULL; ;
4540     break;}
4541 case 90:
4542 #line 663 "gram.y"
4543 { yyval.str = NULL; ;
4544     break;}
4545 case 91:
4546 #line 666 "gram.y"
4547 { yyval.boolean = TRUE; ;
4548     break;}
4549 case 92:
4550 #line 667 "gram.y"
4551 { yyval.boolean = FALSE; ;
4552     break;}
4553 case 93:
4554 #line 670 "gram.y"
4555 { yyval.boolean = TRUE; ;
4556     break;}
4557 case 94:
4558 #line 671 "gram.y"
4559 { yyval.boolean = FALSE; ;
4560     break;}
4561 case 95:
4562 #line 677 "gram.y"
4563 { yyval.str = yyvsp[0].str; ;
4564     break;}
4565 case 96:
4566 #line 678 "gram.y"
4567 { yyval.str = "\t"; ;
4568     break;}
4569 case 97:
4570 #line 691 "gram.y"
4571 {
4572                                         CreateStmt *n = makeNode(CreateStmt);
4573                                         n->relname = yyvsp[-5].str;
4574                                         n->tableElts = yyvsp[-3].list;
4575                                         n->inhRelnames = yyvsp[-1].list;
4576                                         n->constraints = NIL;
4577                                         yyval.node = (Node *)n;
4578                                 ;
4579     break;}
4580 case 98:
4581 #line 702 "gram.y"
4582 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
4583     break;}
4584 case 99:
4585 #line 703 "gram.y"
4586 { yyval.list = lcons(yyvsp[0].node, NIL); ;
4587     break;}
4588 case 100:
4589 #line 704 "gram.y"
4590 { yyval.list = NULL; ;
4591     break;}
4592 case 101:
4593 #line 707 "gram.y"
4594 { yyval.node = yyvsp[0].node; ;
4595     break;}
4596 case 102:
4597 #line 708 "gram.y"
4598 { yyval.node = yyvsp[0].node; ;
4599     break;}
4600 case 103:
4601 #line 712 "gram.y"
4602 {
4603                                         ColumnDef *n = makeNode(ColumnDef);
4604                                         n->colname = yyvsp[-2].str;
4605                                         n->typename = yyvsp[-1].typnam;
4606                                         n->defval = NULL;
4607                                         n->is_not_null = FALSE;
4608                                         n->constraints = yyvsp[0].list;
4609                                         yyval.node = (Node *)n;
4610                                 ;
4611     break;}
4612 case 104:
4613 #line 723 "gram.y"
4614 { yyval.list = yyvsp[0].list; ;
4615     break;}
4616 case 105:
4617 #line 724 "gram.y"
4618 { yyval.list = NULL; ;
4619     break;}
4620 case 106:
4621 #line 727 "gram.y"
4622 { yyval.list = lappend(yyvsp[-1].list,yyvsp[0].node); ;
4623     break;}
4624 case 107:
4625 #line 728 "gram.y"
4626 { yyval.list = lcons(yyvsp[0].node, NIL); ;
4627     break;}
4628 case 108:
4629 #line 733 "gram.y"
4630 {
4631                                                 Constraint *n = (Constraint *)yyvsp[0].node;
4632                                                 n->name = fmtId(yyvsp[-1].str);
4633                                                 yyval.node = yyvsp[0].node;
4634                                 ;
4635     break;}
4636 case 109:
4637 #line 739 "gram.y"
4638 { yyval.node = yyvsp[0].node; ;
4639     break;}
4640 case 110:
4641 #line 743 "gram.y"
4642 {
4643                                         Constraint *n = makeNode(Constraint);
4644                                         n->contype = CONSTR_CHECK;
4645                                         n->name = NULL;
4646                                         n->def = FlattenStringList(yyvsp[-1].list);
4647                                         n->keys = NULL;
4648                                         yyval.node = (Node *)n;
4649                                 ;
4650     break;}
4651 case 111:
4652 #line 752 "gram.y"
4653 {
4654                                         Constraint *n = makeNode(Constraint);
4655                                         n->contype = CONSTR_DEFAULT;
4656                                         n->name = NULL;
4657                                         n->def = FlattenStringList(yyvsp[0].list);
4658                                         n->keys = NULL;
4659                                         yyval.node = (Node *)n;
4660                                 ;
4661     break;}
4662 case 112:
4663 #line 761 "gram.y"
4664 {
4665                                         Constraint *n = makeNode(Constraint);
4666                                         n->contype = CONSTR_NOTNULL;
4667                                         n->name = NULL;
4668                                         n->def = NULL;
4669                                         n->keys = NULL;
4670                                         yyval.node = (Node *)n;
4671                                 ;
4672     break;}
4673 case 113:
4674 #line 770 "gram.y"
4675 {
4676                                         Constraint *n = makeNode(Constraint);
4677                                         n->contype = CONSTR_UNIQUE;
4678                                         n->name = NULL;
4679                                         n->def = NULL;
4680                                         n->keys = NULL;
4681                                         yyval.node = (Node *)n;
4682                                 ;
4683     break;}
4684 case 114:
4685 #line 779 "gram.y"
4686 {
4687                                         Constraint *n = makeNode(Constraint);
4688                                         n->contype = CONSTR_PRIMARY;
4689                                         n->name = NULL;
4690                                         n->def = NULL;
4691                                         n->keys = NULL;
4692                                         yyval.node = (Node *)n;
4693                                 ;
4694     break;}
4695 case 115:
4696 #line 788 "gram.y"
4697 {
4698                                         elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");
4699                                         yyval.node = NULL;
4700                                 ;
4701     break;}
4702 case 116:
4703 #line 795 "gram.y"
4704 {
4705                                         yyval.list = lappend(yyvsp[-2].list,makeString(","));
4706                                         yyval.list = nconc(yyval.list, yyvsp[0].list);
4707                                 ;
4708     break;}
4709 case 117:
4710 #line 800 "gram.y"
4711 {
4712                                         yyval.list = yyvsp[0].list;
4713                                 ;
4714     break;}
4715 case 118:
4716 #line 806 "gram.y"
4717 {       yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
4718     break;}
4719 case 119:
4720 #line 808 "gram.y"
4721 {       yyval.list = lcons( makeString("NULL"), NIL); ;
4722     break;}
4723 case 120:
4724 #line 810 "gram.y"
4725 {       yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
4726     break;}
4727 case 121:
4728 #line 812 "gram.y"
4729 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
4730     break;}
4731 case 122:
4732 #line 814 "gram.y"
4733 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
4734     break;}
4735 case 123:
4736 #line 816 "gram.y"
4737 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
4738     break;}
4739 case 124:
4740 #line 818 "gram.y"
4741 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
4742     break;}
4743 case 125:
4744 #line 820 "gram.y"
4745 {       elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4746     break;}
4747 case 126:
4748 #line 822 "gram.y"
4749 {       elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4750     break;}
4751 case 127:
4752 #line 824 "gram.y"
4753 {       elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4754     break;}
4755 case 128:
4756 #line 826 "gram.y"
4757 {       yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
4758     break;}
4759 case 129:
4760 #line 828 "gram.y"
4761 {       yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
4762     break;}
4763 case 130:
4764 #line 830 "gram.y"
4765 {       yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
4766     break;}
4767 case 131:
4768 #line 832 "gram.y"
4769 {
4770                                         yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name);
4771                                         yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1));
4772                                 ;
4773     break;}
4774 case 132:
4775 #line 837 "gram.y"
4776 {
4777                                         yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name);
4778                                         yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1));
4779                                 ;
4780     break;}
4781 case 133:
4782 #line 842 "gram.y"
4783 {       yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
4784     break;}
4785 case 134:
4786 #line 844 "gram.y"
4787 {
4788                                         yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
4789                                         yyval.list = lappend( yyval.list, makeString(")"));
4790                                 ;
4791     break;}
4792 case 135:
4793 #line 849 "gram.y"
4794 {
4795                                         yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1);
4796                                         yyval.list = nconc( yyval.list, yyvsp[-1].list);
4797                                         yyval.list = lappend( yyval.list, makeString(")"));
4798                                 ;
4799     break;}
4800 case 136:
4801 #line 855 "gram.y"
4802 {
4803                                         if (!strcmp("<=", yyvsp[-1].str) || !strcmp(">=", yyvsp[-1].str))
4804                                                 elog(ERROR,"boolean expressions not supported in DEFAULT");
4805                                         yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list));
4806                                 ;
4807     break;}
4808 case 137:
4809 #line 861 "gram.y"
4810 {       yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
4811     break;}
4812 case 138:
4813 #line 863 "gram.y"
4814 {       yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
4815     break;}
4816 case 139:
4817 #line 866 "gram.y"
4818 {       yyval.list = lcons( makeString( "date( 'current'::datetime + '0 sec')"), NIL); ;
4819     break;}
4820 case 140:
4821 #line 868 "gram.y"
4822 {       yyval.list = lcons( makeString( "'now'::time"), NIL); ;
4823     break;}
4824 case 141:
4825 #line 870 "gram.y"
4826 {
4827                                         if (yyvsp[-1].ival != 0)
4828                                                 elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
4829                                         yyval.list = lcons( makeString( "'now'::time"), NIL);
4830                                 ;
4831     break;}
4832 case 142:
4833 #line 876 "gram.y"
4834 {       yyval.list = lcons( makeString( "now()"), NIL); ;
4835     break;}
4836 case 143:
4837 #line 878 "gram.y"
4838 {
4839                                         if (yyvsp[-1].ival != 0)
4840                                                 elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
4841                                         yyval.list = lcons( makeString( "now()"), NIL);
4842                                 ;
4843     break;}
4844 case 144:
4845 #line 884 "gram.y"
4846 {       yyval.list = lcons( makeString( "CURRENT_USER"), NIL); ;
4847     break;}
4848 case 145:
4849 #line 892 "gram.y"
4850 {
4851                                                 Constraint *n = (Constraint *)yyvsp[0].node;
4852                                                 n->name = fmtId(yyvsp[-1].str);
4853                                                 yyval.node = yyvsp[0].node;
4854                                 ;
4855     break;}
4856 case 146:
4857 #line 898 "gram.y"
4858 { yyval.node = yyvsp[0].node; ;
4859     break;}
4860 case 147:
4861 #line 902 "gram.y"
4862 {
4863                                         Constraint *n = makeNode(Constraint);
4864                                         n->contype = CONSTR_CHECK;
4865                                         n->name = NULL;
4866                                         n->def = FlattenStringList(yyvsp[-1].list);
4867                                         yyval.node = (Node *)n;
4868                                 ;
4869     break;}
4870 case 148:
4871 #line 910 "gram.y"
4872 {
4873                                         Constraint *n = makeNode(Constraint);
4874                                         n->contype = CONSTR_UNIQUE;
4875                                         n->name = NULL;
4876                                         n->def = NULL;
4877                                         n->keys = yyvsp[-1].list;
4878                                         yyval.node = (Node *)n;
4879                                 ;
4880     break;}
4881 case 149:
4882 #line 919 "gram.y"
4883 {
4884                                         Constraint *n = makeNode(Constraint);
4885                                         n->contype = CONSTR_PRIMARY;
4886                                         n->name = NULL;
4887                                         n->def = NULL;
4888                                         n->keys = yyvsp[-1].list;
4889                                         yyval.node = (Node *)n;
4890                                 ;
4891     break;}
4892 case 150:
4893 #line 928 "gram.y"
4894 {       elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"); ;
4895     break;}
4896 case 151:
4897 #line 932 "gram.y"
4898 {
4899                                         yyval.list = lappend(yyvsp[-2].list,makeString(","));
4900                                         yyval.list = nconc(yyval.list, yyvsp[0].list);
4901                                 ;
4902     break;}
4903 case 152:
4904 #line 937 "gram.y"
4905 {
4906                                         yyval.list = yyvsp[0].list;
4907                                 ;
4908     break;}
4909 case 153:
4910 #line 943 "gram.y"
4911 {       yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
4912     break;}
4913 case 154:
4914 #line 945 "gram.y"
4915 {       yyval.list = lcons( makeString("NULL"), NIL); ;
4916     break;}
4917 case 155:
4918 #line 947 "gram.y"
4919 {
4920                                         yyval.list = lcons( makeString(fmtId(yyvsp[0].str)), NIL);
4921                                 ;
4922     break;}
4923 case 156:
4924 #line 951 "gram.y"
4925 {       yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
4926     break;}
4927 case 157:
4928 #line 953 "gram.y"
4929 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
4930     break;}
4931 case 158:
4932 #line 955 "gram.y"
4933 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
4934     break;}
4935 case 159:
4936 #line 957 "gram.y"
4937 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
4938     break;}
4939 case 160:
4940 #line 959 "gram.y"
4941 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
4942     break;}
4943 case 161:
4944 #line 961 "gram.y"
4945 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "="), yyvsp[0].list)); ;
4946     break;}
4947 case 162:
4948 #line 963 "gram.y"
4949 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "<"), yyvsp[0].list)); ;
4950     break;}
4951 case 163:
4952 #line 965 "gram.y"
4953 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( ">"), yyvsp[0].list)); ;
4954     break;}
4955 case 164:
4956 #line 967 "gram.y"
4957 {       yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
4958     break;}
4959 case 165:
4960 #line 969 "gram.y"
4961 {       yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
4962     break;}
4963 case 166:
4964 #line 971 "gram.y"
4965 {       yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
4966     break;}
4967 case 167:
4968 #line 973 "gram.y"
4969 {
4970                                         yyvsp[0].typnam->name = fmtId(yyvsp[0].typnam->name);
4971                                         yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-2].list), makeList( makeString("AS"), yyvsp[0].typnam, -1));
4972                                 ;
4973     break;}
4974 case 168:
4975 #line 978 "gram.y"
4976 {
4977                                         yyvsp[-1].typnam->name = fmtId(yyvsp[-1].typnam->name);
4978                                         yyval.list = nconc( lcons( makeString( "CAST"), yyvsp[-3].list), makeList( makeString("AS"), yyvsp[-1].typnam, -1));
4979                                 ;
4980     break;}
4981 case 169:
4982 #line 983 "gram.y"
4983 {       yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
4984     break;}
4985 case 170:
4986 #line 985 "gram.y"
4987 {
4988                                         yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
4989                                         yyval.list = lappend( yyval.list, makeString(")"));
4990                                 ;
4991     break;}
4992 case 171:
4993 #line 990 "gram.y"
4994 {
4995                                         yyval.list = makeList( makeString(yyvsp[-3].str), makeString("("), -1);
4996                                         yyval.list = nconc( yyval.list, yyvsp[-1].list);
4997                                         yyval.list = lappend( yyval.list, makeString(")"));
4998                                 ;
4999     break;}
5000 case 172:
5001 #line 996 "gram.y"
5002 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list)); ;
5003     break;}
5004 case 173:
5005 #line 998 "gram.y"
5006 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "like"), yyvsp[0].list)); ;
5007     break;}
5008 case 174:
5009 #line 1000 "gram.y"
5010 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "AND"), yyvsp[0].list)); ;
5011     break;}
5012 case 175:
5013 #line 1002 "gram.y"
5014 {       yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "OR"), yyvsp[0].list)); ;
5015     break;}
5016 case 176:
5017 #line 1004 "gram.y"
5018 {       yyval.list = lcons( makeString( "NOT"), yyvsp[0].list); ;
5019     break;}
5020 case 177:
5021 #line 1006 "gram.y"
5022 {       yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
5023     break;}
5024 case 178:
5025 #line 1008 "gram.y"
5026 {       yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
5027     break;}
5028 case 179:
5029 #line 1010 "gram.y"
5030 {       yyval.list = lappend( yyvsp[-1].list, makeString( "IS NULL")); ;
5031     break;}
5032 case 180:
5033 #line 1012 "gram.y"
5034 {       yyval.list = lappend( yyvsp[-2].list, makeString( "IS NULL")); ;
5035     break;}
5036 case 181:
5037 #line 1014 "gram.y"
5038 {       yyval.list = lappend( yyvsp[-1].list, makeString( "IS NOT NULL")); ;
5039     break;}
5040 case 182:
5041 #line 1016 "gram.y"
5042 {       yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT NULL")); ;
5043     break;}
5044 case 183:
5045 #line 1018 "gram.y"
5046 {       yyval.list = lappend( yyvsp[-2].list, makeString( "IS TRUE")); ;
5047     break;}
5048 case 184:
5049 #line 1020 "gram.y"
5050 {       yyval.list = lappend( yyvsp[-2].list, makeString( "IS FALSE")); ;
5051     break;}
5052 case 185:
5053 #line 1022 "gram.y"
5054 {       yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT TRUE")); ;
5055     break;}
5056 case 186:
5057 #line 1024 "gram.y"
5058 {       yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT FALSE")); ;
5059     break;}
5060 case 187:
5061 #line 1027 "gram.y"
5062 { yyval.str = NULL; ;
5063     break;}
5064 case 188:
5065 #line 1028 "gram.y"
5066 { yyval.str = NULL; ;
5067     break;}
5068 case 189:
5069 #line 1029 "gram.y"
5070 { yyval.str = NULL; ;
5071     break;}
5072 case 190:
5073 #line 1032 "gram.y"
5074 { yyval.list = NIL; ;
5075     break;}
5076 case 191:
5077 #line 1033 "gram.y"
5078 { yyval.list = NIL; ;
5079     break;}
5080 case 192:
5081 #line 1034 "gram.y"
5082 { yyval.list = NIL; ;
5083     break;}
5084 case 193:
5085 #line 1037 "gram.y"
5086 { yyval.list = NIL; ;
5087     break;}
5088 case 194:
5089 #line 1038 "gram.y"
5090 { yyval.list = NIL; ;
5091     break;}
5092 case 195:
5093 #line 1041 "gram.y"
5094 { yyval.str = NULL; ;
5095     break;}
5096 case 196:
5097 #line 1042 "gram.y"
5098 { yyval.str = NULL; ;
5099     break;}
5100 case 197:
5101 #line 1043 "gram.y"
5102 { yyval.str = NULL; ;
5103     break;}
5104 case 198:
5105 #line 1044 "gram.y"
5106 { yyval.str = NULL; ;
5107     break;}
5108 case 199:
5109 #line 1047 "gram.y"
5110 { yyval.list = yyvsp[-1].list; ;
5111     break;}
5112 case 200:
5113 #line 1048 "gram.y"
5114 { yyval.list = NIL; ;
5115     break;}
5116 case 201:
5117 #line 1055 "gram.y"
5118 { ;
5119     break;}
5120 case 202:
5121 #line 1056 "gram.y"
5122 { ;
5123     break;}
5124 case 203:
5125 #line 1060 "gram.y"
5126 {
5127                                         SelectStmt *n = (SelectStmt *)yyvsp[0].node;
5128                                         if (yyvsp[-2].list != NIL)
5129                                                 mapTargetColumns(yyvsp[-2].list, n->targetList);
5130                                         n->into = yyvsp[-3].str;
5131                                         yyval.node = (Node *)n;
5132                                 ;
5133     break;}
5134 case 204:
5135 #line 1069 "gram.y"
5136 { yyval.list = yyvsp[-1].list; ;
5137     break;}
5138 case 205:
5139 #line 1070 "gram.y"
5140 { yyval.list = NULL; ;
5141     break;}
5142 case 206:
5143 #line 1073 "gram.y"
5144 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
5145     break;}
5146 case 207:
5147 #line 1074 "gram.y"
5148 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5149     break;}
5150 case 208:
5151 #line 1078 "gram.y"
5152 {
5153                                         ColumnDef *n = makeNode(ColumnDef);
5154                                         n->colname = yyvsp[0].str;
5155                                         n->typename = NULL;
5156                                         n->defval = NULL;
5157                                         n->is_not_null = FALSE;
5158                                         n->constraints = NULL;
5159                                         yyval.node = (Node *)n;
5160                                 ;
5161     break;}
5162 case 209:
5163 #line 1098 "gram.y"
5164 {
5165                                         CreateSeqStmt *n = makeNode(CreateSeqStmt);
5166                                         n->seqname = yyvsp[-1].str;
5167                                         n->options = yyvsp[0].list;
5168                                         yyval.node = (Node *)n;
5169                                 ;
5170     break;}
5171 case 210:
5172 #line 1108 "gram.y"
5173 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].defelt); ;
5174     break;}
5175 case 211:
5176 #line 1109 "gram.y"
5177 { yyval.list = NIL; ;
5178     break;}
5179 case 212:
5180 #line 1113 "gram.y"
5181 {
5182                                         yyval.defelt = makeNode(DefElem);
5183                                         yyval.defelt->defname = yyvsp[-1].str;
5184                                         yyval.defelt->arg = (Node *)yyvsp[0].value;
5185                                 ;
5186     break;}
5187 case 213:
5188 #line 1119 "gram.y"
5189 {
5190                                         yyval.defelt = makeNode(DefElem);
5191                                         yyval.defelt->defname = yyvsp[0].str;
5192                                         yyval.defelt->arg = (Node *)NULL;
5193                                 ;
5194     break;}
5195 case 214:
5196 #line 1136 "gram.y"
5197 {
5198                                 CreatePLangStmt *n = makeNode(CreatePLangStmt);
5199                                 n->plname = yyvsp[-4].str;
5200                                 n->plhandler = yyvsp[-2].str;
5201                                 n->plcompiler = yyvsp[0].str;
5202                                 n->pltrusted = yyvsp[-7].boolean;
5203                                 yyval.node = (Node *)n;
5204                         ;
5205     break;}
5206 case 215:
5207 #line 1146 "gram.y"
5208 { yyval.boolean = TRUE; ;
5209     break;}
5210 case 216:
5211 #line 1147 "gram.y"
5212 { yyval.boolean = FALSE; ;
5213     break;}
5214 case 217:
5215 #line 1150 "gram.y"
5216 {
5217                                 DropPLangStmt *n = makeNode(DropPLangStmt);
5218                                 n->plname = yyvsp[0].str;
5219                                 yyval.node = (Node *)n;
5220                         ;
5221     break;}
5222 case 218:
5223 #line 1168 "gram.y"
5224 {
5225                                         CreateTrigStmt *n = makeNode(CreateTrigStmt);
5226                                         n->trigname = yyvsp[-11].str;
5227                                         n->relname = yyvsp[-7].str;
5228                                         n->funcname = yyvsp[-3].str;
5229                                         n->args = yyvsp[-1].list;
5230                                         n->before = yyvsp[-10].boolean;
5231                                         n->row = yyvsp[-6].boolean;
5232                                         memcpy (n->actions, yyvsp[-9].str, 4);
5233                                         yyval.node = (Node *)n;
5234                                 ;
5235     break;}
5236 case 219:
5237 #line 1181 "gram.y"
5238 { yyval.boolean = TRUE; ;
5239     break;}
5240 case 220:
5241 #line 1182 "gram.y"
5242 { yyval.boolean = FALSE; ;
5243     break;}
5244 case 221:
5245 #line 1186 "gram.y"
5246 {
5247                                         char *e = palloc (4);
5248                                         e[0] = yyvsp[0].chr; e[1] = 0; yyval.str = e;
5249                                 ;
5250     break;}
5251 case 222:
5252 #line 1191 "gram.y"
5253 {
5254                                         char *e = palloc (4);
5255                                         e[0] = yyvsp[-2].chr; e[1] = yyvsp[0].chr; e[2] = 0; yyval.str = e;
5256                                 ;
5257     break;}
5258 case 223:
5259 #line 1196 "gram.y"
5260 {
5261                                         char *e = palloc (4);
5262                                         e[0] = yyvsp[-4].chr; e[1] = yyvsp[-2].chr; e[2] = yyvsp[0].chr; e[3] = 0;
5263                                         yyval.str = e;
5264                                 ;
5265     break;}
5266 case 224:
5267 #line 1203 "gram.y"
5268 { yyval.chr = 'i'; ;
5269     break;}
5270 case 225:
5271 #line 1204 "gram.y"
5272 { yyval.chr = 'd'; ;
5273     break;}
5274 case 226:
5275 #line 1205 "gram.y"
5276 { yyval.chr = 'u'; ;
5277     break;}
5278 case 227:
5279 #line 1209 "gram.y"
5280 {
5281                                         yyval.boolean = yyvsp[0].boolean;
5282                                 ;
5283     break;}
5284 case 228:
5285 #line 1214 "gram.y"
5286 { yyval.boolean = TRUE; ;
5287     break;}
5288 case 229:
5289 #line 1215 "gram.y"
5290 { yyval.boolean = FALSE; ;
5291     break;}
5292 case 230:
5293 #line 1218 "gram.y"
5294 { yyval.boolean = TRUE; ;
5295     break;}
5296 case 231:
5297 #line 1219 "gram.y"
5298 { yyval.boolean = FALSE; ;
5299     break;}
5300 case 232:
5301 #line 1223 "gram.y"
5302 { yyval.list = lcons(yyvsp[0].str, NIL); ;
5303     break;}
5304 case 233:
5305 #line 1225 "gram.y"
5306 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].str); ;
5307     break;}
5308 case 234:
5309 #line 1227 "gram.y"
5310 { yyval.list = NIL; ;
5311     break;}
5312 case 235:
5313 #line 1231 "gram.y"
5314 {
5315                                         char *s = (char *) palloc (256);
5316                                         sprintf (s, "%d", yyvsp[0].ival);
5317                                         yyval.str = s;
5318                                 ;
5319     break;}
5320 case 236:
5321 #line 1237 "gram.y"
5322 {
5323                                         char *s = (char *) palloc (256);
5324                                         sprintf (s, "%g", yyvsp[0].dval);
5325                                         yyval.str = s;
5326                                 ;
5327     break;}
5328 case 237:
5329 #line 1242 "gram.y"
5330 {  yyval.str = yyvsp[0].str; ;
5331     break;}
5332 case 238:
5333 #line 1243 "gram.y"
5334 {  yyval.str = yyvsp[0].str; ;
5335     break;}
5336 case 239:
5337 #line 1247 "gram.y"
5338 {
5339                                         DropTrigStmt *n = makeNode(DropTrigStmt);
5340                                         n->trigname = yyvsp[-2].str;
5341                                         n->relname = yyvsp[0].str;
5342                                         yyval.node = (Node *) n;
5343                                 ;
5344     break;}
5345 case 240:
5346 #line 1264 "gram.y"
5347 {
5348                                         yyvsp[0].dstmt->defType = yyvsp[-1].ival;
5349                                         yyval.node = (Node *)yyvsp[0].dstmt;
5350                                 ;
5351     break;}
5352 case 241:
5353 #line 1271 "gram.y"
5354 {
5355                                         yyval.dstmt = makeNode(DefineStmt);
5356                                         yyval.dstmt->defname = yyvsp[-1].str;
5357                                         yyval.dstmt->definition = yyvsp[0].list;
5358                                 ;
5359     break;}
5360 case 242:
5361 #line 1278 "gram.y"
5362 { yyval.ival = OPERATOR; ;
5363     break;}
5364 case 243:
5365 #line 1279 "gram.y"
5366 { yyval.ival = TYPE_P; ;
5367     break;}
5368 case 244:
5369 #line 1280 "gram.y"
5370 { yyval.ival = AGGREGATE; ;
5371     break;}
5372 case 245:
5373 #line 1283 "gram.y"
5374 { yyval.str = "procedure"; ;
5375     break;}
5376 case 246:
5377 #line 1284 "gram.y"
5378 { yyval.str = "join"; ;
5379     break;}
5380 case 247:
5381 #line 1285 "gram.y"
5382 { yyval.str = yyvsp[0].str; ;
5383     break;}
5384 case 248:
5385 #line 1286 "gram.y"
5386 { yyval.str = yyvsp[0].str; ;
5387     break;}
5388 case 249:
5389 #line 1287 "gram.y"
5390 { yyval.str = yyvsp[0].str; ;
5391     break;}
5392 case 250:
5393 #line 1290 "gram.y"
5394 { yyval.list = yyvsp[-1].list; ;
5395     break;}
5396 case 251:
5397 #line 1293 "gram.y"
5398 { yyval.list = lcons(yyvsp[0].defelt, NIL); ;
5399     break;}
5400 case 252:
5401 #line 1294 "gram.y"
5402 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].defelt); ;
5403     break;}
5404 case 253:
5405 #line 1298 "gram.y"
5406 {
5407                                         yyval.defelt = makeNode(DefElem);
5408                                         yyval.defelt->defname = yyvsp[-2].str;
5409                                         yyval.defelt->arg = (Node *)yyvsp[0].node;
5410                                 ;
5411     break;}
5412 case 254:
5413 #line 1304 "gram.y"
5414 {
5415                                         yyval.defelt = makeNode(DefElem);
5416                                         yyval.defelt->defname = yyvsp[0].str;
5417                                         yyval.defelt->arg = (Node *)NULL;
5418                                 ;
5419     break;}
5420 case 255:
5421 #line 1310 "gram.y"
5422 {
5423                                         yyval.defelt = makeNode(DefElem);
5424                                         yyval.defelt->defname = "default";
5425                                         yyval.defelt->arg = (Node *)yyvsp[0].node;
5426                                 ;
5427     break;}
5428 case 256:
5429 #line 1317 "gram.y"
5430 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
5431     break;}
5432 case 257:
5433 #line 1318 "gram.y"
5434 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
5435     break;}
5436 case 258:
5437 #line 1319 "gram.y"
5438 {  yyval.node = (Node *)yyvsp[0].value; /* already a Value */ ;
5439     break;}
5440 case 259:
5441 #line 1320 "gram.y"
5442 {  yyval.node = (Node *)makeString(yyvsp[0].str); ;
5443     break;}
5444 case 260:
5445 #line 1322 "gram.y"
5446 {
5447                                         TypeName *n = makeNode(TypeName);
5448                                         n->name = yyvsp[0].str;
5449                                         n->setof = TRUE;
5450                                         n->arrayBounds = NULL;
5451                                         n->typmod = -1;
5452                                         yyval.node = (Node *)n;
5453                                 ;
5454     break;}
5455 case 261:
5456 #line 1341 "gram.y"
5457 {
5458                                         DestroyStmt *n = makeNode(DestroyStmt);
5459                                         n->relNames = yyvsp[0].list;
5460                                         n->sequence = FALSE;
5461                                         yyval.node = (Node *)n;
5462                                 ;
5463     break;}
5464 case 262:
5465 #line 1348 "gram.y"
5466 {
5467                                         DestroyStmt *n = makeNode(DestroyStmt);
5468                                         n->relNames = yyvsp[0].list;
5469                                         n->sequence = TRUE;
5470                                         yyval.node = (Node *)n;
5471                                 ;
5472     break;}
5473 case 263:
5474 #line 1365 "gram.y"
5475 {
5476                                         FetchStmt *n = makeNode(FetchStmt);
5477                                         n->direction = yyvsp[-2].ival;
5478                                         n->howMany = yyvsp[-1].ival;
5479                                         n->portalname = yyvsp[0].str;
5480                                         n->ismove = false;
5481                                         yyval.node = (Node *)n;
5482                                 ;
5483     break;}
5484 case 264:
5485 #line 1374 "gram.y"
5486 {
5487                                         FetchStmt *n = makeNode(FetchStmt);
5488                                         n->direction = yyvsp[-2].ival;
5489                                         n->howMany = yyvsp[-1].ival;
5490                                         n->portalname = yyvsp[0].str;
5491                                         n->ismove = TRUE;
5492                                         yyval.node = (Node *)n;
5493                                 ;
5494     break;}
5495 case 265:
5496 #line 1384 "gram.y"
5497 { yyval.ival = FORWARD; ;
5498     break;}
5499 case 266:
5500 #line 1385 "gram.y"
5501 { yyval.ival = BACKWARD; ;
5502     break;}
5503 case 267:
5504 #line 1386 "gram.y"
5505 { yyval.ival = FORWARD; /* default */ ;
5506     break;}
5507 case 268:
5508 #line 1390 "gram.y"
5509 { yyval.ival = yyvsp[0].ival;
5510                                  if (yyvsp[0].ival <= 0) elog(ERROR,"Please specify nonnegative count for fetch"); ;
5511     break;}
5512 case 269:
5513 #line 1392 "gram.y"
5514 { yyval.ival = 0; /* 0 means fetch all tuples*/ ;
5515     break;}
5516 case 270:
5517 #line 1393 "gram.y"
5518 { yyval.ival = 1; /*default*/ ;
5519     break;}
5520 case 271:
5521 #line 1396 "gram.y"
5522 { yyval.str = yyvsp[0].str; ;
5523     break;}
5524 case 272:
5525 #line 1397 "gram.y"
5526 { yyval.str = NULL; ;
5527     break;}
5528 case 273:
5529 #line 1409 "gram.y"
5530 {
5531                                         yyval.node = (Node*)makeAclStmt(yyvsp[-5].str,yyvsp[-3].list,yyvsp[-1].str,'+');
5532                                 ;
5533     break;}
5534 case 274:
5535 #line 1415 "gram.y"
5536 {
5537                                  yyval.str = aclmakepriv("rwaR",0);
5538                                 ;
5539     break;}
5540 case 275:
5541 #line 1419 "gram.y"
5542 {
5543                                  yyval.str = aclmakepriv("rwaR",0);
5544                                 ;
5545     break;}
5546 case 276:
5547 #line 1423 "gram.y"
5548 {
5549                                  yyval.str = yyvsp[0].str;
5550                                 ;
5551     break;}
5552 case 277:
5553 #line 1429 "gram.y"
5554 {
5555                                                 yyval.str = aclmakepriv("",yyvsp[0].chr);
5556                                 ;
5557     break;}
5558 case 278:
5559 #line 1433 "gram.y"
5560 {
5561                                                 yyval.str = aclmakepriv(yyvsp[-2].str,yyvsp[0].chr);
5562                                 ;
5563     break;}
5564 case 279:
5565 #line 1439 "gram.y"
5566 {
5567                                                 yyval.chr = ACL_MODE_RD_CHR;
5568                                 ;
5569     break;}
5570 case 280:
5571 #line 1443 "gram.y"
5572 {
5573                                                 yyval.chr = ACL_MODE_AP_CHR;
5574                                 ;
5575     break;}
5576 case 281:
5577 #line 1447 "gram.y"
5578 {
5579                                                 yyval.chr = ACL_MODE_WR_CHR;
5580                                 ;
5581     break;}
5582 case 282:
5583 #line 1451 "gram.y"
5584 {
5585                                                 yyval.chr = ACL_MODE_WR_CHR;
5586                                 ;
5587     break;}
5588 case 283:
5589 #line 1455 "gram.y"
5590 {
5591                                                 yyval.chr = ACL_MODE_RU_CHR;
5592                                 ;
5593     break;}
5594 case 284:
5595 #line 1461 "gram.y"
5596 {
5597                                                 yyval.str = aclmakeuser("A","");
5598                                 ;
5599     break;}
5600 case 285:
5601 #line 1465 "gram.y"
5602 {
5603                                                 yyval.str = aclmakeuser("G",yyvsp[0].str);
5604                                 ;
5605     break;}
5606 case 286:
5607 #line 1469 "gram.y"
5608 {
5609                                                 yyval.str = aclmakeuser("U",yyvsp[0].str);
5610                                 ;
5611     break;}
5612 case 287:
5613 #line 1475 "gram.y"
5614 {
5615                                         yyerror("WITH GRANT OPTION is not supported.  Only relation owners can set privileges");
5616                                  ;
5617     break;}
5618 case 289:
5619 #line 1490 "gram.y"
5620 {
5621                                         yyval.node = (Node*)makeAclStmt(yyvsp[-4].str,yyvsp[-2].list,yyvsp[0].str,'-');
5622                                 ;
5623     break;}
5624 case 290:
5625 #line 1508 "gram.y"
5626 {
5627                                         /* should check that access_method is valid,
5628                                            etc ... but doesn't */
5629                                         IndexStmt *n = makeNode(IndexStmt);
5630                                         n->unique = yyvsp[-9].boolean;
5631                                         n->idxname = yyvsp[-7].str;
5632                                         n->relname = yyvsp[-5].str;
5633                                         n->accessMethod = yyvsp[-4].str;
5634                                         n->indexParams = yyvsp[-2].list;
5635                                         n->withClause = yyvsp[0].list;
5636                                         n->whereClause = NULL;
5637                                         yyval.node = (Node *)n;
5638                                 ;
5639     break;}
5640 case 291:
5641 #line 1523 "gram.y"
5642 { yyval.boolean = TRUE; ;
5643     break;}
5644 case 292:
5645 #line 1524 "gram.y"
5646 { yyval.boolean = FALSE; ;
5647     break;}
5648 case 293:
5649 #line 1527 "gram.y"
5650 { yyval.str = yyvsp[0].str; ;
5651     break;}
5652 case 294:
5653 #line 1528 "gram.y"
5654 { yyval.str = "btree"; ;
5655     break;}
5656 case 295:
5657 #line 1531 "gram.y"
5658 { yyval.list = yyvsp[0].list; ;
5659     break;}
5660 case 296:
5661 #line 1532 "gram.y"
5662 { yyval.list = lcons(yyvsp[0].ielem,NIL); ;
5663     break;}
5664 case 297:
5665 #line 1535 "gram.y"
5666 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].ielem); ;
5667     break;}
5668 case 298:
5669 #line 1536 "gram.y"
5670 { yyval.list = lcons(yyvsp[0].ielem, NIL); ;
5671     break;}
5672 case 299:
5673 #line 1540 "gram.y"
5674 {
5675                                         yyval.ielem = makeNode(IndexElem);
5676                                         yyval.ielem->name = yyvsp[-5].str;
5677                                         yyval.ielem->args = yyvsp[-3].list;
5678                                         yyval.ielem->class = yyvsp[0].str;
5679                                         yyval.ielem->tname = yyvsp[-1].typnam;
5680                                 ;
5681     break;}
5682 case 300:
5683 #line 1550 "gram.y"
5684 {
5685                                         yyval.ielem = makeNode(IndexElem);
5686                                         yyval.ielem->name = yyvsp[-2].str;
5687                                         yyval.ielem->args = NIL;
5688                                         yyval.ielem->class = yyvsp[0].str;
5689                                         yyval.ielem->tname = yyvsp[-1].typnam;
5690                                 ;
5691     break;}
5692 case 301:
5693 #line 1559 "gram.y"
5694 { yyval.typnam = yyvsp[0].typnam; ;
5695     break;}
5696 case 302:
5697 #line 1560 "gram.y"
5698 { yyval.typnam = yyvsp[0].typnam; ;
5699     break;}
5700 case 303:
5701 #line 1561 "gram.y"
5702 { yyval.typnam = NULL; ;
5703     break;}
5704 case 304:
5705 #line 1570 "gram.y"
5706 { yyval.str = yyvsp[0].str; ;
5707     break;}
5708 case 305:
5709 #line 1571 "gram.y"
5710 { yyval.str = yyvsp[0].str; ;
5711     break;}
5712 case 306:
5713 #line 1572 "gram.y"
5714 { yyval.str = NULL; ;
5715     break;}
5716 case 307:
5717 #line 1584 "gram.y"
5718 {
5719                                         ExtendStmt *n = makeNode(ExtendStmt);
5720                                         n->idxname = yyvsp[-1].str;
5721                                         n->whereClause = yyvsp[0].node;
5722                                         yyval.node = (Node *)n;
5723                                 ;
5724     break;}
5725 case 308:
5726 #line 1601 "gram.y"
5727 {
5728                                         RecipeStmt *n;
5729                                         if (!IsTransactionBlock())
5730                                                 elog(ERROR,"EXECUTE RECIPE may only be used in begin/end transaction blocks");
5731
5732                                         n = makeNode(RecipeStmt);
5733                                         n->recipeName = yyvsp[0].str;
5734                                         yyval.node = (Node *)n;
5735                                 ;
5736     break;}
5737 case 309:
5738 #line 1631 "gram.y"
5739 {
5740                                         ProcedureStmt *n = makeNode(ProcedureStmt);
5741                                         n->funcname = yyvsp[-8].str;
5742                                         n->defArgs = yyvsp[-7].list;
5743                                         n->returnType = yyvsp[-5].node;
5744                                         n->withClause = yyvsp[-4].list;
5745                                         n->as = yyvsp[-2].str;
5746                                         n->language = yyvsp[0].str;
5747                                         yyval.node = (Node *)n;
5748                                 ;
5749     break;}
5750 case 310:
5751 #line 1642 "gram.y"
5752 { yyval.list = yyvsp[0].list; ;
5753     break;}
5754 case 311:
5755 #line 1643 "gram.y"
5756 { yyval.list = NIL; ;
5757     break;}
5758 case 312:
5759 #line 1646 "gram.y"
5760 { yyval.list = yyvsp[-1].list; ;
5761     break;}
5762 case 313:
5763 #line 1647 "gram.y"
5764 { yyval.list = NIL; ;
5765     break;}
5766 case 314:
5767 #line 1651 "gram.y"
5768 {       yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
5769     break;}
5770 case 315:
5771 #line 1653 "gram.y"
5772 {       yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
5773     break;}
5774 case 316:
5775 #line 1657 "gram.y"
5776 {
5777                                         TypeName *n = makeNode(TypeName);
5778                                         n->name = yyvsp[0].str;
5779                                         n->setof = yyvsp[-1].boolean;
5780                                         n->arrayBounds = NULL;
5781                                         yyval.node = (Node *)n;
5782                                 ;
5783     break;}
5784 case 317:
5785 #line 1666 "gram.y"
5786 { yyval.boolean = TRUE; ;
5787     break;}
5788 case 318:
5789 #line 1667 "gram.y"
5790 { yyval.boolean = FALSE; ;
5791     break;}
5792 case 319:
5793 #line 1688 "gram.y"
5794 {
5795                                         RemoveStmt *n = makeNode(RemoveStmt);
5796                                         n->removeType = yyvsp[-1].ival;
5797                                         n->name = yyvsp[0].str;
5798                                         yyval.node = (Node *)n;
5799                                 ;
5800     break;}
5801 case 320:
5802 #line 1696 "gram.y"
5803 {  yyval.ival = TYPE_P; ;
5804     break;}
5805 case 321:
5806 #line 1697 "gram.y"
5807 {  yyval.ival = INDEX; ;
5808     break;}
5809 case 322:
5810 #line 1698 "gram.y"
5811 {  yyval.ival = RULE; ;
5812     break;}
5813 case 323:
5814 #line 1699 "gram.y"
5815 {  yyval.ival = VIEW; ;
5816     break;}
5817 case 324:
5818 #line 1704 "gram.y"
5819 {
5820                                                 RemoveAggrStmt *n = makeNode(RemoveAggrStmt);
5821                                                 n->aggname = yyvsp[-1].str;
5822                                                 n->aggtype = yyvsp[0].str;
5823                                                 yyval.node = (Node *)n;
5824                                 ;
5825     break;}
5826 case 325:
5827 #line 1712 "gram.y"
5828 { yyval.str = yyvsp[0].str; ;
5829     break;}
5830 case 326:
5831 #line 1713 "gram.y"
5832 { yyval.str = NULL; ;
5833     break;}
5834 case 327:
5835 #line 1718 "gram.y"
5836 {
5837                                         RemoveFuncStmt *n = makeNode(RemoveFuncStmt);
5838                                         n->funcname = yyvsp[-1].str;
5839                                         n->args = yyvsp[0].list;
5840                                         yyval.node = (Node *)n;
5841                                 ;
5842     break;}
5843 case 328:
5844 #line 1728 "gram.y"
5845 {
5846                                         RemoveOperStmt *n = makeNode(RemoveOperStmt);
5847                                         n->opname = yyvsp[-3].str;
5848                                         n->args = yyvsp[-1].list;
5849                                         yyval.node = (Node *)n;
5850                                 ;
5851     break;}
5852 case 331:
5853 #line 1738 "gram.y"
5854 { yyval.str = "+"; ;
5855     break;}
5856 case 332:
5857 #line 1739 "gram.y"
5858 { yyval.str = "-"; ;
5859     break;}
5860 case 333:
5861 #line 1740 "gram.y"
5862 { yyval.str = "*"; ;
5863     break;}
5864 case 334:
5865 #line 1741 "gram.y"
5866 { yyval.str = "/"; ;
5867     break;}
5868 case 335:
5869 #line 1742 "gram.y"
5870 { yyval.str = "<"; ;
5871     break;}
5872 case 336:
5873 #line 1743 "gram.y"
5874 { yyval.str = ">"; ;
5875     break;}
5876 case 337:
5877 #line 1744 "gram.y"
5878 { yyval.str = "="; ;
5879     break;}
5880 case 338:
5881 #line 1748 "gram.y"
5882 {
5883                                    elog(ERROR,"parser: argument type missing (use NONE for unary operators)");
5884                                 ;
5885     break;}
5886 case 339:
5887 #line 1752 "gram.y"
5888 { yyval.list = makeList(makeString(yyvsp[-2].str), makeString(yyvsp[0].str), -1); ;
5889     break;}
5890 case 340:
5891 #line 1754 "gram.y"
5892 { yyval.list = makeList(NULL, makeString(yyvsp[0].str), -1); ;
5893     break;}
5894 case 341:
5895 #line 1756 "gram.y"
5896 { yyval.list = makeList(makeString(yyvsp[-2].str), NULL, -1); ;
5897     break;}
5898 case 342:
5899 #line 1770 "gram.y"
5900 {
5901                                         RenameStmt *n = makeNode(RenameStmt);
5902                                         n->relname = yyvsp[-6].str;
5903                                         n->inh = yyvsp[-5].boolean;
5904                                         n->column = yyvsp[-2].str;
5905                                         n->newname = yyvsp[0].str;
5906                                         yyval.node = (Node *)n;
5907                                 ;
5908     break;}
5909 case 343:
5910 #line 1780 "gram.y"
5911 { yyval.str = yyvsp[0].str; ;
5912     break;}
5913 case 344:
5914 #line 1781 "gram.y"
5915 { yyval.str = NULL; ;
5916     break;}
5917 case 345:
5918 #line 1784 "gram.y"
5919 { yyval.ival = COLUMN; ;
5920     break;}
5921 case 346:
5922 #line 1785 "gram.y"
5923 { yyval.ival = 0; ;
5924     break;}
5925 case 347:
5926 #line 1799 "gram.y"
5927 { QueryIsRule=TRUE; ;
5928     break;}
5929 case 348:
5930 #line 1802 "gram.y"
5931 {
5932                                         RuleStmt *n = makeNode(RuleStmt);
5933                                         n->rulename = yyvsp[-10].str;
5934                                         n->event = yyvsp[-6].ival;
5935                                         n->object = yyvsp[-4].attr;
5936                                         n->whereClause = yyvsp[-3].node;
5937                                         n->instead = yyvsp[-1].boolean;
5938                                         n->actions = yyvsp[0].list;
5939                                         yyval.node = (Node *)n;
5940                                 ;
5941     break;}
5942 case 349:
5943 #line 1814 "gram.y"
5944 { yyval.list = NIL; ;
5945     break;}
5946 case 350:
5947 #line 1815 "gram.y"
5948 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5949     break;}
5950 case 351:
5951 #line 1816 "gram.y"
5952 { yyval.list = yyvsp[-1].list; ;
5953     break;}
5954 case 352:
5955 #line 1820 "gram.y"
5956 {  yyval.list = yyvsp[0].list; ;
5957     break;}
5958 case 353:
5959 #line 1822 "gram.y"
5960 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5961     break;}
5962 case 354:
5963 #line 1826 "gram.y"
5964 {  yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
5965     break;}
5966 case 355:
5967 #line 1828 "gram.y"
5968 {  yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
5969     break;}
5970 case 356:
5971 #line 1830 "gram.y"
5972 { yyval.list = lcons(yyvsp[-1].node, NIL); ;
5973     break;}
5974 case 357:
5975 #line 1834 "gram.y"
5976 {
5977                                         yyval.attr = makeNode(Attr);
5978                                         yyval.attr->relname = yyvsp[-2].str;
5979                                         yyval.attr->paramNo = NULL;
5980                                         yyval.attr->attrs = lcons(makeString(yyvsp[0].str), NIL);
5981                                         yyval.attr->indirection = NIL;
5982                                 ;
5983     break;}
5984 case 358:
5985 #line 1842 "gram.y"
5986 {
5987                                         yyval.attr = makeNode(Attr);
5988                                         yyval.attr->relname = yyvsp[0].str;
5989                                         yyval.attr->paramNo = NULL;
5990                                         yyval.attr->attrs = NIL;
5991                                         yyval.attr->indirection = NIL;
5992                                 ;
5993     break;}
5994 case 359:
5995 #line 1852 "gram.y"
5996 { yyval.ival = CMD_SELECT; ;
5997     break;}
5998 case 360:
5999 #line 1853 "gram.y"
6000 { yyval.ival = CMD_UPDATE; ;
6001     break;}
6002 case 361:
6003 #line 1854 "gram.y"
6004 { yyval.ival = CMD_DELETE; ;
6005     break;}
6006 case 362:
6007 #line 1855 "gram.y"
6008 { yyval.ival = CMD_INSERT; ;
6009     break;}
6010 case 363:
6011 #line 1858 "gram.y"
6012 { yyval.boolean = TRUE; ;
6013     break;}
6014 case 364:
6015 #line 1859 "gram.y"
6016 { yyval.boolean = FALSE; ;
6017     break;}
6018 case 365:
6019 #line 1872 "gram.y"
6020 {
6021                                         NotifyStmt *n = makeNode(NotifyStmt);
6022                                         n->relname = yyvsp[0].str;
6023                                         yyval.node = (Node *)n;
6024                                 ;
6025     break;}
6026 case 366:
6027 #line 1880 "gram.y"
6028 {
6029                                         ListenStmt *n = makeNode(ListenStmt);
6030                                         n->relname = yyvsp[0].str;
6031                                         yyval.node = (Node *)n;
6032                                 ;
6033     break;}
6034 case 367:
6035 #line 1902 "gram.y"
6036 {
6037                                         TransactionStmt *n = makeNode(TransactionStmt);
6038                                         n->command = ABORT_TRANS;
6039                                         yyval.node = (Node *)n;
6040                                 ;
6041     break;}
6042 case 368:
6043 #line 1908 "gram.y"
6044 {
6045                                         TransactionStmt *n = makeNode(TransactionStmt);
6046                                         n->command = BEGIN_TRANS;
6047                                         yyval.node = (Node *)n;
6048                                 ;
6049     break;}
6050 case 369:
6051 #line 1914 "gram.y"
6052 {
6053                                         TransactionStmt *n = makeNode(TransactionStmt);
6054                                         n->command = BEGIN_TRANS;
6055                                         yyval.node = (Node *)n;
6056                                 ;
6057     break;}
6058 case 370:
6059 #line 1920 "gram.y"
6060 {
6061                                         TransactionStmt *n = makeNode(TransactionStmt);
6062                                         n->command = END_TRANS;
6063                                         yyval.node = (Node *)n;
6064                                 ;
6065     break;}
6066 case 371:
6067 #line 1926 "gram.y"
6068 {
6069                                         TransactionStmt *n = makeNode(TransactionStmt);
6070                                         n->command = END_TRANS;
6071                                         yyval.node = (Node *)n;
6072                                 ;
6073     break;}
6074 case 372:
6075 #line 1932 "gram.y"
6076 {
6077                                         TransactionStmt *n = makeNode(TransactionStmt);
6078                                         n->command = ABORT_TRANS;
6079                                         yyval.node = (Node *)n;
6080                                 ;
6081     break;}
6082 case 373:
6083 #line 1939 "gram.y"
6084 {
6085                                         TransactionStmt *n = makeNode(TransactionStmt);
6086                                         n->command = ABORT_TRANS;
6087                                         yyval.node = (Node *)n;
6088                                 ;
6089     break;}
6090 case 374:
6091 #line 1945 "gram.y"
6092 {
6093                                         TransactionStmt *n = makeNode(TransactionStmt);
6094                                         n->command = BEGIN_TRANS;
6095                                         yyval.node = (Node *)n;
6096                                 ;
6097     break;}
6098 case 375:
6099 #line 1951 "gram.y"
6100 {
6101                                         TransactionStmt *n = makeNode(TransactionStmt);
6102                                         n->command = END_TRANS;
6103                                         yyval.node = (Node *)n;
6104                                 ;
6105     break;}
6106 case 376:
6107 #line 1958 "gram.y"
6108 {
6109                                         TransactionStmt *n = makeNode(TransactionStmt);
6110                                         n->command = END_TRANS;
6111                                         yyval.node = (Node *)n;
6112                                 ;
6113     break;}
6114 case 377:
6115 #line 1964 "gram.y"
6116 {
6117                                         TransactionStmt *n = makeNode(TransactionStmt);
6118                                         n->command = ABORT_TRANS;
6119                                         yyval.node = (Node *)n;
6120                                 ;
6121     break;}
6122 case 378:
6123 #line 1980 "gram.y"
6124 {
6125                                         ViewStmt *n = makeNode(ViewStmt);
6126                                         n->viewname = yyvsp[-2].str;
6127                                         n->query = (Query *)yyvsp[0].node;
6128                                         if (((SelectStmt *)n->query)->sortClause != NULL)
6129                                                 elog(ERROR,"Order by and Distinct on views is not implemented.");
6130                                         if (((SelectStmt *)n->query)->unionClause != NULL)
6131                                                 elog(ERROR,"Views on unions not implemented.");
6132                                         yyval.node = (Node *)n;
6133                                 ;
6134     break;}
6135 case 379:
6136 #line 2001 "gram.y"
6137 {
6138                                         LoadStmt *n = makeNode(LoadStmt);
6139                                         n->filename = yyvsp[0].str;
6140                                         yyval.node = (Node *)n;
6141                                 ;
6142     break;}
6143 case 380:
6144 #line 2017 "gram.y"
6145 {
6146                                         CreatedbStmt *n = makeNode(CreatedbStmt);
6147                                         n->dbname = yyvsp[-1].str;
6148                                         n->dbpath = yyvsp[0].str;
6149                                         yyval.node = (Node *)n;
6150                                 ;
6151     break;}
6152 case 381:
6153 #line 2025 "gram.y"
6154 { yyval.str = yyvsp[0].str; ;
6155     break;}
6156 case 382:
6157 #line 2026 "gram.y"
6158 { yyval.str = NULL; ;
6159     break;}
6160 case 383:
6161 #line 2029 "gram.y"
6162 { yyval.str = yyvsp[0].str; ;
6163     break;}
6164 case 384:
6165 #line 2030 "gram.y"
6166 { yyval.str = NULL; ;
6167     break;}
6168 case 385:
6169 #line 2031 "gram.y"
6170 { yyval.str = NULL; ;
6171     break;}
6172 case 386:
6173 #line 2042 "gram.y"
6174 {
6175                                         DestroydbStmt *n = makeNode(DestroydbStmt);
6176                                         n->dbname = yyvsp[0].str;
6177                                         yyval.node = (Node *)n;
6178                                 ;
6179     break;}
6180 case 387:
6181 #line 2058 "gram.y"
6182 {
6183                                    ClusterStmt *n = makeNode(ClusterStmt);
6184                                    n->relname = yyvsp[0].str;
6185                                    n->indexname = yyvsp[-2].str;
6186                                    yyval.node = (Node*)n;
6187                                 ;
6188     break;}
6189 case 388:
6190 #line 2075 "gram.y"
6191 {
6192                                         VacuumStmt *n = makeNode(VacuumStmt);
6193                                         n->verbose = yyvsp[-1].boolean;
6194                                         n->analyze = yyvsp[0].boolean;
6195                                         n->vacrel = NULL;
6196                                         n->va_spec = NIL;
6197                                         yyval.node = (Node *)n;
6198                                 ;
6199     break;}
6200 case 389:
6201 #line 2084 "gram.y"
6202 {
6203                                         VacuumStmt *n = makeNode(VacuumStmt);
6204                                         n->verbose = yyvsp[-3].boolean;
6205                                         n->analyze = yyvsp[-2].boolean;
6206                                         n->vacrel = yyvsp[-1].str;
6207                                         n->va_spec = yyvsp[0].list;
6208                                         if ( yyvsp[0].list != NIL && !yyvsp[-1].str )
6209                                                 elog(ERROR,"parser: syntax error at or near \"(\"");
6210                                         yyval.node = (Node *)n;
6211                                 ;
6212     break;}
6213 case 390:
6214 #line 2096 "gram.y"
6215 { yyval.boolean = TRUE; ;
6216     break;}
6217 case 391:
6218 #line 2097 "gram.y"
6219 { yyval.boolean = FALSE; ;
6220     break;}
6221 case 392:
6222 #line 2100 "gram.y"
6223 { yyval.boolean = TRUE; ;
6224     break;}
6225 case 393:
6226 #line 2101 "gram.y"
6227 { yyval.boolean = FALSE; ;
6228     break;}
6229 case 394:
6230 #line 2105 "gram.y"
6231 { yyval.list = yyvsp[-1].list; ;
6232     break;}
6233 case 395:
6234 #line 2107 "gram.y"
6235 { yyval.list = NIL; ;
6236     break;}
6237 case 396:
6238 #line 2111 "gram.y"
6239 { yyval.list=lcons(yyvsp[0].str,NIL); ;
6240     break;}
6241 case 397:
6242 #line 2113 "gram.y"
6243 { yyval.list=lappend(yyvsp[-2].list,yyvsp[0].str); ;
6244     break;}
6245 case 398:
6246 #line 2125 "gram.y"
6247 {
6248                                         ExplainStmt *n = makeNode(ExplainStmt);
6249                                         n->verbose = yyvsp[-1].boolean;
6250                                         n->query = (Query*)yyvsp[0].node;
6251                                         yyval.node = (Node *)n;
6252                                 ;
6253     break;}
6254 case 405:
6255 #line 2162 "gram.y"
6256 {
6257                                         yyvsp[0].astmt->relname = yyvsp[-2].str;
6258                                         yyvsp[0].astmt->cols = yyvsp[-1].list;
6259                                         yyval.node = (Node *)yyvsp[0].astmt;
6260                                 ;
6261     break;}
6262 case 406:
6263 #line 2170 "gram.y"
6264 {
6265                                         yyval.astmt = makeNode(InsertStmt);
6266                                         yyval.astmt->unique = NULL;
6267                                         yyval.astmt->targetList = yyvsp[-1].list;
6268                                         yyval.astmt->fromClause = NIL;
6269                                         yyval.astmt->whereClause = NULL;
6270                                         yyval.astmt->groupClause = NIL;
6271                                         yyval.astmt->havingClause = NULL;
6272                                         yyval.astmt->unionClause = NIL;
6273                                 ;
6274     break;}
6275 case 407:
6276 #line 2184 "gram.y"
6277 {
6278                                         yyval.astmt = makeNode(InsertStmt);
6279                                         yyval.astmt->unique = yyvsp[-6].str;
6280                                         yyval.astmt->targetList = yyvsp[-5].list;
6281                                         yyval.astmt->fromClause = yyvsp[-4].list;
6282                                         yyval.astmt->whereClause = yyvsp[-3].node;
6283                                         yyval.astmt->groupClause = yyvsp[-2].list;
6284                                         yyval.astmt->havingClause = yyvsp[-1].node;
6285                                         yyval.astmt->unionClause = yyvsp[0].list;
6286                                 ;
6287     break;}
6288 case 408:
6289 #line 2196 "gram.y"
6290 { yyval.list = yyvsp[-1].list; ;
6291     break;}
6292 case 409:
6293 #line 2197 "gram.y"
6294 { yyval.list = NIL; ;
6295     break;}
6296 case 410:
6297 #line 2202 "gram.y"
6298 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
6299     break;}
6300 case 411:
6301 #line 2204 "gram.y"
6302 { yyval.list = lcons(yyvsp[0].node, NIL); ;
6303     break;}
6304 case 412:
6305 #line 2208 "gram.y"
6306 {
6307                                         Ident *id = makeNode(Ident);
6308                                         id->name = yyvsp[-1].str;
6309                                         id->indirection = yyvsp[0].list;
6310                                         yyval.node = (Node *)id;
6311                                 ;
6312     break;}
6313 case 413:
6314 #line 2226 "gram.y"
6315 {
6316                                         DeleteStmt *n = makeNode(DeleteStmt);
6317                                         n->relname = yyvsp[-1].str;
6318                                         n->whereClause = yyvsp[0].node;
6319                                         yyval.node = (Node *)n;
6320                                 ;
6321     break;}
6322 case 414:
6323 #line 2240 "gram.y"
6324 {
6325                                         DeleteStmt *n = makeNode(DeleteStmt);
6326                                         A_Const *c = makeNode(A_Const);
6327
6328                                         c->val.type = T_String;
6329                                         c->val.val.str = "f";
6330                                         c->typename = makeNode(TypeName);
6331                                         c->typename->name = xlateSqlType("bool");
6332                                         c->typename->typmod = -1;
6333
6334                                         n->relname = yyvsp[0].str;
6335                                         n->whereClause = (Node *)c;
6336                                         yyval.node = (Node *)n;
6337                                 ;
6338     break;}
6339 case 415:
6340 #line 2268 "gram.y"
6341 {
6342                                         UpdateStmt *n = makeNode(UpdateStmt);
6343                                         n->relname = yyvsp[-4].str;
6344                                         n->targetList = yyvsp[-2].list;
6345                                         n->fromClause = yyvsp[-1].list;
6346                                         n->whereClause = yyvsp[0].node;
6347                                         yyval.node = (Node *)n;
6348                                 ;
6349     break;}
6350 case 416:
6351 #line 2290 "gram.y"
6352 {
6353                                         SelectStmt *n = makeNode(SelectStmt);
6354
6355                                         /* from PORTAL name */
6356                                         /*
6357                                          *      15 august 1991 -- since 3.0 postgres does locking
6358                                          *      right, we discovered that portals were violating
6359                                          *      locking protocol.  portal locks cannot span xacts.
6360                                          *      as a short-term fix, we installed the check here.
6361                                          *                                                      -- mao
6362                                          */
6363                                         if (!IsTransactionBlock())
6364                                                 elog(ERROR,"Named portals may only be used in begin/end transaction blocks");
6365
6366                                         n->portalname = yyvsp[-12].str;
6367                                         n->binary = yyvsp[-11].boolean;
6368                                         n->unique = yyvsp[-7].str;
6369                                         n->targetList = yyvsp[-6].list;
6370                                         n->fromClause = yyvsp[-5].list;
6371                                         n->whereClause = yyvsp[-4].node;
6372                                         n->groupClause = yyvsp[-3].list;
6373                                         n->havingClause = yyvsp[-2].node;
6374                                         n->unionClause = yyvsp[-1].list;
6375                                         n->sortClause = yyvsp[0].list;
6376                                         yyval.node = (Node *)n;
6377                                 ;
6378     break;}
6379 case 417:
6380 #line 2330 "gram.y"
6381 {
6382                                         SelectStmt *n = makeNode(SelectStmt);
6383                                         n->unique = yyvsp[-8].str;
6384                                         n->targetList = yyvsp[-7].list;
6385                                         n->into = yyvsp[-6].str;
6386                                         n->fromClause = yyvsp[-5].list;
6387                                         n->whereClause = yyvsp[-4].node;
6388                                         n->groupClause = yyvsp[-3].list;
6389                                         n->havingClause = yyvsp[-2].node;
6390                                         n->unionClause = yyvsp[-1].list;
6391                                         n->sortClause = yyvsp[0].list;
6392                                         yyval.node = (Node *)n;
6393                                 ;
6394     break;}
6395 case 418:
6396 #line 2346 "gram.y"
6397 {
6398                                         SelectStmt *n = (SelectStmt *)lfirst(yyvsp[0].list);
6399                                         n->unionall = yyvsp[-1].boolean;
6400                                         yyval.list = yyvsp[0].list;
6401                                 ;
6402     break;}
6403 case 419:
6404 #line 2352 "gram.y"
6405 { yyval.list = NIL; ;
6406     break;}
6407 case 420:
6408 #line 2356 "gram.y"
6409 {
6410                                         SelectStmt *n = (SelectStmt *)yyvsp[0].node;
6411                                         n->unionall = yyvsp[-1].boolean;
6412                                         yyval.list = lappend(yyvsp[-3].list, yyvsp[0].node);
6413                                 ;
6414     break;}
6415 case 421:
6416 #line 2362 "gram.y"
6417 { yyval.list = lcons(yyvsp[0].node, NIL); ;
6418     break;}
6419 case 422:
6420 #line 2368 "gram.y"
6421 {
6422                                         SelectStmt *n = makeNode(SelectStmt);
6423                                         n->unique = yyvsp[-5].str;
6424                                         n->unionall = FALSE;
6425                                         n->targetList = yyvsp[-4].list;
6426                                         n->fromClause = yyvsp[-3].list;
6427                                         n->whereClause = yyvsp[-2].node;
6428                                         n->groupClause = yyvsp[-1].list;
6429                                         n->havingClause = yyvsp[0].node;
6430                                         yyval.node = (Node *)n;
6431                                 ;
6432     break;}
6433 case 423:
6434 #line 2382 "gram.y"
6435 {       yyval.str= yyvsp[0].str; ;
6436     break;}
6437 case 424:
6438 #line 2384 "gram.y"
6439 {       yyval.str = NULL; ;
6440     break;}
6441 case 425:
6442 #line 2387 "gram.y"
6443 { yyval.boolean = TRUE; ;
6444     break;}
6445 case 426:
6446 #line 2388 "gram.y"
6447 { yyval.boolean = FALSE; ;
6448     break;}
6449 case 427:
6450 #line 2391 "gram.y"
6451 { yyval.str = "*"; ;
6452     break;}
6453 case 428:
6454 #line 2392 "gram.y"
6455 { yyval.str = yyvsp[0].str; ;
6456     break;}
6457 case 429:
6458 #line 2393 "gram.y"
6459 { yyval.str = NULL; ;
6460     break;}
6461 case 430:
6462 #line 2394 "gram.y"
6463 { yyval.str = NULL; ;
6464     break;}
6465 case 431:
6466 #line 2397 "gram.y"
6467 { yyval.list = yyvsp[0].list; ;
6468     break;}
6469 case 432:
6470 #line 2398 "gram.y"
6471 { yyval.list = NIL; ;
6472     break;}
6473 case 433:
6474 #line 2401 "gram.y"
6475 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6476     break;}
6477 case 434:
6478 #line 2402 "gram.y"
6479 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
6480     break;}
6481 case 435:
6482 #line 2406 "gram.y"
6483 {
6484                                         yyval.sortgroupby = makeNode(SortGroupBy);
6485                                         yyval.sortgroupby->resno = 0;
6486                                         yyval.sortgroupby->range = NULL;
6487                                         yyval.sortgroupby->name = yyvsp[-1].str;
6488                                         yyval.sortgroupby->useOp = yyvsp[0].str;
6489                                 ;
6490     break;}
6491 case 436:
6492 #line 2414 "gram.y"
6493 {
6494                                         yyval.sortgroupby = makeNode(SortGroupBy);
6495                                         yyval.sortgroupby->resno = 0;
6496                                         yyval.sortgroupby->range = yyvsp[-3].str;
6497                                         yyval.sortgroupby->name = yyvsp[-1].str;
6498                                         yyval.sortgroupby->useOp = yyvsp[0].str;
6499                                 ;
6500     break;}
6501 case 437:
6502 #line 2422 "gram.y"
6503 {
6504                                         yyval.sortgroupby = makeNode(SortGroupBy);
6505                                         yyval.sortgroupby->resno = yyvsp[-1].ival;
6506                                         yyval.sortgroupby->range = NULL;
6507                                         yyval.sortgroupby->name = NULL;
6508                                         yyval.sortgroupby->useOp = yyvsp[0].str;
6509                                 ;
6510     break;}
6511 case 438:
6512 #line 2431 "gram.y"
6513 { yyval.str = yyvsp[0].str; ;
6514     break;}
6515 case 439:
6516 #line 2432 "gram.y"
6517 { yyval.str = "<"; ;
6518     break;}
6519 case 440:
6520 #line 2433 "gram.y"
6521 { yyval.str = ">"; ;
6522     break;}
6523 case 441:
6524 #line 2434 "gram.y"
6525 { yyval.str = "<"; ;
6526     break;}
6527 case 442:
6528 #line 2435 "gram.y"
6529 { yyval.str = ">"; ;
6530     break;}
6531 case 443:
6532 #line 2436 "gram.y"
6533 { yyval.str = "<"; /*default*/ ;
6534     break;}
6535 case 444:
6536 #line 2446 "gram.y"
6537 { yyval.boolean = TRUE; ;
6538     break;}
6539 case 445:
6540 #line 2447 "gram.y"
6541 { yyval.boolean = FALSE; ;
6542     break;}
6543 case 447:
6544 #line 2453 "gram.y"
6545 {       yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
6546     break;}
6547 case 448:
6548 #line 2455 "gram.y"
6549 {       yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
6550     break;}
6551 case 449:
6552 #line 2458 "gram.y"
6553 { yyval.list = yyvsp[0].list; ;
6554     break;}
6555 case 450:
6556 #line 2459 "gram.y"
6557 { yyval.list = NIL; ;
6558     break;}
6559 case 451:
6560 #line 2462 "gram.y"
6561 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6562     break;}
6563 case 452:
6564 #line 2463 "gram.y"
6565 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
6566     break;}
6567 case 453:
6568 #line 2467 "gram.y"
6569 {
6570                                         yyval.sortgroupby = makeNode(SortGroupBy);
6571                                         yyval.sortgroupby->resno = 0;
6572                                         yyval.sortgroupby->range = NULL;
6573                                         yyval.sortgroupby->name = yyvsp[0].str;
6574                                         yyval.sortgroupby->useOp = NULL;
6575                                 ;
6576     break;}
6577 case 454:
6578 #line 2475 "gram.y"
6579 {
6580                                         yyval.sortgroupby = makeNode(SortGroupBy);
6581                                         yyval.sortgroupby->resno = 0;
6582                                         yyval.sortgroupby->range = yyvsp[-2].str;
6583                                         yyval.sortgroupby->name = yyvsp[0].str;
6584                                         yyval.sortgroupby->useOp = NULL;
6585                                 ;
6586     break;}
6587 case 455:
6588 #line 2483 "gram.y"
6589 {
6590                                         yyval.sortgroupby = makeNode(SortGroupBy);
6591                                         yyval.sortgroupby->resno = yyvsp[0].ival;
6592                                         yyval.sortgroupby->range = NULL;
6593                                         yyval.sortgroupby->name = NULL;
6594                                         yyval.sortgroupby->useOp = NULL;
6595                                 ;
6596     break;}
6597 case 456:
6598 #line 2493 "gram.y"
6599 {
6600                                         elog(NOTICE, "HAVING not yet supported; ignore clause");
6601                                         yyval.node = yyvsp[0].node;
6602                                 ;
6603     break;}
6604 case 457:
6605 #line 2497 "gram.y"
6606 { yyval.node = NULL; ;
6607     break;}
6608 case 458:
6609 #line 2510 "gram.y"
6610 {
6611                                         yyval.list = NIL;
6612                                         elog(ERROR,"JOIN not yet implemented");
6613                                 ;
6614     break;}
6615 case 459:
6616 #line 2514 "gram.y"
6617 { yyval.list = yyvsp[0].list; ;
6618     break;}
6619 case 460:
6620 #line 2515 "gram.y"
6621 { yyval.list = NIL; ;
6622     break;}
6623 case 461:
6624 #line 2519 "gram.y"
6625 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].range); ;
6626     break;}
6627 case 462:
6628 #line 2521 "gram.y"
6629 { elog(ERROR,"CROSS JOIN not yet implemented"); ;
6630     break;}
6631 case 463:
6632 #line 2523 "gram.y"
6633 { yyval.list = lcons(yyvsp[0].range, NIL); ;
6634     break;}
6635 case 464:
6636 #line 2527 "gram.y"
6637 {
6638                                         yyval.range = makeNode(RangeVar);
6639                                         yyval.range->relExpr = yyvsp[-2].relexp;
6640                                         yyval.range->name = yyvsp[0].str;
6641                                 ;
6642     break;}
6643 case 465:
6644 #line 2533 "gram.y"
6645 {
6646                                         yyval.range = makeNode(RangeVar);
6647                                         yyval.range->relExpr = yyvsp[-1].relexp;
6648                                         yyval.range->name = yyvsp[0].str;
6649                                 ;
6650     break;}
6651 case 466:
6652 #line 2539 "gram.y"
6653 {
6654                                         yyval.range = makeNode(RangeVar);
6655                                         yyval.range->relExpr = yyvsp[0].relexp;
6656                                         yyval.range->name = NULL;
6657                                 ;
6658     break;}
6659 case 467:
6660 #line 2546 "gram.y"
6661 { yyval.str = NULL; ;
6662     break;}
6663 case 468:
6664 #line 2548 "gram.y"
6665 { elog(ERROR,"FULL OUTER JOIN not yet implemented"); ;
6666     break;}
6667 case 469:
6668 #line 2550 "gram.y"
6669 { elog(ERROR,"LEFT OUTER JOIN not yet implemented"); ;
6670     break;}
6671 case 470:
6672 #line 2552 "gram.y"
6673 { elog(ERROR,"RIGHT OUTER JOIN not yet implemented"); ;
6674     break;}
6675 case 471:
6676 #line 2554 "gram.y"
6677 { elog(ERROR,"OUTER JOIN not yet implemented"); ;
6678     break;}
6679 case 472:
6680 #line 2556 "gram.y"
6681 { elog(ERROR,"INNER JOIN not yet implemented"); ;
6682     break;}
6683 case 473:
6684 #line 2558 "gram.y"
6685 { elog(ERROR,"UNION JOIN not yet implemented"); ;
6686     break;}
6687 case 474:
6688 #line 2560 "gram.y"
6689 { elog(ERROR,"INNER JOIN not yet implemented"); ;
6690     break;}
6691 case 475:
6692 #line 2563 "gram.y"
6693 { yyval.str = NULL; ;
6694     break;}
6695 case 476:
6696 #line 2564 "gram.y"
6697 { yyval.str = NULL;  /* no qualifiers */ ;
6698     break;}
6699 case 477:
6700 #line 2567 "gram.y"
6701 { yyval.str = NULL; ;
6702     break;}
6703 case 478:
6704 #line 2568 "gram.y"
6705 { yyval.str = NULL; ;
6706     break;}
6707 case 479:
6708 #line 2569 "gram.y"
6709 { yyval.str = NULL;  /* no qualifiers */ ;
6710     break;}
6711 case 480:
6712 #line 2572 "gram.y"
6713 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6714     break;}
6715 case 481:
6716 #line 2573 "gram.y"
6717 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
6718     break;}
6719 case 482:
6720 #line 2577 "gram.y"
6721 {
6722                                         yyval.sortgroupby = makeNode(SortGroupBy);
6723                                         yyval.sortgroupby->resno = 0;
6724                                         yyval.sortgroupby->range = NULL;
6725                                         yyval.sortgroupby->name = yyvsp[0].str;
6726                                         yyval.sortgroupby->useOp = NULL;
6727                                 ;
6728     break;}
6729 case 483:
6730 #line 2585 "gram.y"
6731 {
6732                                         yyval.sortgroupby = makeNode(SortGroupBy);
6733                                         yyval.sortgroupby->resno = 0;
6734                                         yyval.sortgroupby->range = yyvsp[-2].str;
6735                                         yyval.sortgroupby->name = yyvsp[0].str;
6736                                         yyval.sortgroupby->useOp = NULL;
6737                                 ;
6738     break;}
6739 case 484:
6740 #line 2593 "gram.y"
6741 {
6742                                         yyval.sortgroupby = makeNode(SortGroupBy);
6743                                         yyval.sortgroupby->resno = yyvsp[0].ival;
6744                                         yyval.sortgroupby->range = NULL;
6745                                         yyval.sortgroupby->name = NULL;
6746                                         yyval.sortgroupby->useOp = NULL;
6747                                 ;
6748     break;}
6749 case 485:
6750 #line 2602 "gram.y"
6751 { yyval.node = yyvsp[0].node; ;
6752     break;}
6753 case 486:
6754 #line 2603 "gram.y"
6755 { yyval.node = NULL;  /* no qualifiers */ ;
6756     break;}
6757 case 487:
6758 #line 2607 "gram.y"
6759 {
6760                                         /* normal relations */
6761                                         yyval.relexp = makeNode(RelExpr);
6762                                         yyval.relexp->relname = yyvsp[0].str;
6763                                         yyval.relexp->inh = FALSE;
6764                                 ;
6765     break;}
6766 case 488:
6767 #line 2614 "gram.y"
6768 {
6769                                         /* inheritance query */
6770                                         yyval.relexp = makeNode(RelExpr);
6771                                         yyval.relexp->relname = yyvsp[-1].str;
6772                                         yyval.relexp->inh = TRUE;
6773                                 ;
6774     break;}
6775 case 489:
6776 #line 2622 "gram.y"
6777 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
6778     break;}
6779 case 490:
6780 #line 2624 "gram.y"
6781 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
6782     break;}
6783 case 491:
6784 #line 2626 "gram.y"
6785 {  yyval.list = NIL; ;
6786     break;}
6787 case 492:
6788 #line 2630 "gram.y"
6789 {  yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
6790     break;}
6791 case 493:
6792 #line 2632 "gram.y"
6793 {  yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
6794     break;}
6795 case 494:
6796 #line 2634 "gram.y"
6797 {  yyval.list = NIL; ;
6798     break;}
6799 case 495:
6800 #line 2649 "gram.y"
6801 {
6802                                         yyval.typnam = yyvsp[-1].typnam;
6803                                         yyval.typnam->arrayBounds = yyvsp[0].list;
6804
6805                                         /* Is this the name of a complex type? If so, implement
6806                                          * it as a set.
6807                                          */
6808                                         if (!strcmp(saved_relname, yyval.typnam->name))
6809                                                 /* This attr is the same type as the relation
6810                                                  * being defined. The classic example: create
6811                                                  * emp(name=text,mgr=emp)
6812                                                  */
6813                                                 yyval.typnam->setof = TRUE;
6814                                         else if (typeTypeRelid(typenameType(yyval.typnam->name)) != InvalidOid)
6815                                                  /* (Eventually add in here that the set can only
6816                                                   * contain one element.)
6817                                                   */
6818                                                 yyval.typnam->setof = TRUE;
6819                                         else
6820                                                 yyval.typnam->setof = FALSE;
6821                                 ;
6822     break;}
6823 case 497:
6824 #line 2672 "gram.y"
6825 {
6826                                         yyval.typnam = yyvsp[0].typnam;
6827                                         yyval.typnam->setof = TRUE;
6828                                 ;
6829     break;}
6830 case 501:
6831 #line 2684 "gram.y"
6832 {
6833                                         yyval.typnam = makeNode(TypeName);
6834                                         yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6835                                         yyval.typnam->typmod = -1;
6836                                 ;
6837     break;}
6838 case 502:
6839 #line 2691 "gram.y"
6840 { yyval.str = yyvsp[0].str; ;
6841     break;}
6842 case 503:
6843 #line 2692 "gram.y"
6844 { yyval.str = xlateSqlType("type"); ;
6845     break;}
6846 case 504:
6847 #line 2702 "gram.y"
6848 {
6849                                         yyval.typnam = makeNode(TypeName);
6850                                         yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6851                                         yyval.typnam->typmod = -1;
6852                                 ;
6853     break;}
6854 case 505:
6855 #line 2708 "gram.y"
6856 {
6857                                         yyval.typnam = makeNode(TypeName);
6858                                         yyval.typnam->name = xlateSqlType("float");
6859                                 ;
6860     break;}
6861 case 506:
6862 #line 2713 "gram.y"
6863 {
6864                                         yyval.typnam = makeNode(TypeName);
6865                                         yyval.typnam->name = xlateSqlType("integer");
6866                                         yyval.typnam->typmod = -1;
6867                                 ;
6868     break;}
6869 case 507:
6870 #line 2719 "gram.y"
6871 {
6872                                         yyval.typnam = makeNode(TypeName);
6873                                         yyval.typnam->name = xlateSqlType("integer");
6874                                         yyval.typnam->typmod = -1;
6875                                 ;
6876     break;}
6877 case 508:
6878 #line 2727 "gram.y"
6879 {       yyval.str = xlateSqlType("float8"); ;
6880     break;}
6881 case 509:
6882 #line 2729 "gram.y"
6883 {       yyval.str = xlateSqlType("float8"); ;
6884     break;}
6885 case 510:
6886 #line 2731 "gram.y"
6887 {       yyval.str = xlateSqlType("decimal"); ;
6888     break;}
6889 case 511:
6890 #line 2733 "gram.y"
6891 {       yyval.str = xlateSqlType("numeric"); ;
6892     break;}
6893 case 512:
6894 #line 2737 "gram.y"
6895 {
6896                                         if (yyvsp[-1].ival < 1)
6897                                                 elog(ERROR,"precision for FLOAT must be at least 1");
6898                                         else if (yyvsp[-1].ival < 7)
6899                                                 yyval.str = xlateSqlType("float4");
6900                                         else if (yyvsp[-1].ival < 16)
6901                                                 yyval.str = xlateSqlType("float8");
6902                                         else
6903                                                 elog(ERROR,"precision for FLOAT must be less than 16");
6904                                 ;
6905     break;}
6906 case 513:
6907 #line 2748 "gram.y"
6908 {
6909                                         yyval.str = xlateSqlType("float8");
6910                                 ;
6911     break;}
6912 case 514:
6913 #line 2754 "gram.y"
6914 {
6915                                         if (yyvsp[-3].ival != 9)
6916                                                 elog(ERROR,"NUMERIC precision %d must be 9",yyvsp[-3].ival);
6917                                         if (yyvsp[-1].ival != 0)
6918                                                 elog(ERROR,"NUMERIC scale %d must be zero",yyvsp[-1].ival);
6919                                 ;
6920     break;}
6921 case 515:
6922 #line 2761 "gram.y"
6923 {
6924                                         if (yyvsp[-1].ival != 9)
6925                                                 elog(ERROR,"NUMERIC precision %d must be 9",yyvsp[-1].ival);
6926                                 ;
6927     break;}
6928 case 516:
6929 #line 2766 "gram.y"
6930 {
6931                                         yyval.str = NULL;
6932                                 ;
6933     break;}
6934 case 517:
6935 #line 2772 "gram.y"
6936 {
6937                                         if (yyvsp[-3].ival > 9)
6938                                                 elog(ERROR,"DECIMAL precision %d exceeds implementation limit of 9",yyvsp[-3].ival);
6939                                         if (yyvsp[-1].ival != 0)
6940                                                 elog(ERROR,"DECIMAL scale %d must be zero",yyvsp[-1].ival);
6941                                         yyval.str = NULL;
6942                                 ;
6943     break;}
6944 case 518:
6945 #line 2780 "gram.y"
6946 {
6947                                         if (yyvsp[-1].ival > 9)
6948                                                 elog(ERROR,"DECIMAL precision %d exceeds implementation limit of 9",yyvsp[-1].ival);
6949                                         yyval.str = NULL;
6950                                 ;
6951     break;}
6952 case 519:
6953 #line 2786 "gram.y"
6954 {
6955                                         yyval.str = NULL;
6956                                 ;
6957     break;}
6958 case 520:
6959 #line 2799 "gram.y"
6960 {
6961                                         yyval.typnam = makeNode(TypeName);
6962                                         if (!strcasecmp(yyvsp[-3].str, "char"))
6963                                                 yyval.typnam->name = xlateSqlType("bpchar");
6964                                         else if (!strcasecmp(yyvsp[-3].str, "varchar"))
6965                                                 yyval.typnam->name = xlateSqlType("varchar");
6966                                         else
6967                                                 yyerror("parse error");
6968                                         if (yyvsp[-1].ival < 1)
6969                                                 elog(ERROR,"length for '%s' type must be at least 1",yyvsp[-3].str);
6970                                         else if (yyvsp[-1].ival > 4096)
6971                                                 /* we can store a char() of length up to the size
6972                                                  * of a page (8KB) - page headers and friends but
6973                                                  * just to be safe here...      - ay 6/95
6974                                                  * XXX note this hardcoded limit - thomas 1997-07-13
6975                                                  */
6976                                                 elog(ERROR,"length for type '%s' cannot exceed 4096",yyvsp[-3].str);
6977
6978                                         /* we actually implement this sort of like a varlen, so
6979                                          * the first 4 bytes is the length. (the difference
6980                                          * between this and "text" is that we blank-pad and
6981                                          * truncate where necessary
6982                                          */
6983                                         yyval.typnam->typmod = VARHDRSZ + yyvsp[-1].ival;
6984                                 ;
6985     break;}
6986 case 521:
6987 #line 2825 "gram.y"
6988 {
6989                                         yyval.typnam = makeNode(TypeName);
6990                                         yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6991                                         yyval.typnam->typmod = -1;
6992                                 ;
6993     break;}
6994 case 522:
6995 #line 2833 "gram.y"
6996 {
6997                                         char *type, *c;
6998                                         if ((yyvsp[-1].str == NULL) || (strcasecmp(yyvsp[-1].str, "sql_text") == 0)) {
6999                                                 if (yyvsp[-2].boolean) type = xlateSqlType("varchar");
7000                                                 else type = xlateSqlType("char");
7001                                         } else {
7002                                                 if (yyvsp[-2].boolean) {
7003                                                         c = palloc(strlen("var") + strlen(yyvsp[-1].str) + 1);
7004                                                         strcpy(c, "var");
7005                                                         strcat(c, yyvsp[-1].str);
7006                                                         type = xlateSqlType(c);
7007                                                 } else {
7008                                                         type = xlateSqlType(yyvsp[-1].str);
7009                                                 }
7010                                         };
7011                                         if (yyvsp[0].str != NULL)
7012                                         elog(ERROR,"COLLATE %s not yet implemented",yyvsp[0].str);
7013                                         yyval.str = type;
7014                                 ;
7015     break;}
7016 case 523:
7017 #line 2852 "gram.y"
7018 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7019     break;}
7020 case 524:
7021 #line 2853 "gram.y"
7022 { yyval.str = xlateSqlType("varchar"); ;
7023     break;}
7024 case 525:
7025 #line 2854 "gram.y"
7026 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7027     break;}
7028 case 526:
7029 #line 2855 "gram.y"
7030 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7031     break;}
7032 case 527:
7033 #line 2858 "gram.y"
7034 { yyval.boolean = TRUE; ;
7035     break;}
7036 case 528:
7037 #line 2859 "gram.y"
7038 { yyval.boolean = FALSE; ;
7039     break;}
7040 case 529:
7041 #line 2862 "gram.y"
7042 { yyval.str = yyvsp[0].str; ;
7043     break;}
7044 case 530:
7045 #line 2863 "gram.y"
7046 { yyval.str = NULL; ;
7047     break;}
7048 case 531:
7049 #line 2866 "gram.y"
7050 { yyval.str = yyvsp[0].str; ;
7051     break;}
7052 case 532:
7053 #line 2867 "gram.y"
7054 { yyval.str = NULL; ;
7055     break;}
7056 case 533:
7057 #line 2871 "gram.y"
7058 {
7059                                         yyval.typnam = makeNode(TypeName);
7060                                         yyval.typnam->name = xlateSqlType(yyvsp[0].str);
7061                                         yyval.typnam->typmod = -1;
7062                                 ;
7063     break;}
7064 case 534:
7065 #line 2877 "gram.y"
7066 {
7067                                         yyval.typnam = makeNode(TypeName);
7068                                         yyval.typnam->name = xlateSqlType("timestamp");
7069                                         yyval.typnam->timezone = yyvsp[0].boolean;
7070                                         yyval.typnam->typmod = -1;
7071                                 ;
7072     break;}
7073 case 535:
7074 #line 2884 "gram.y"
7075 {
7076                                         yyval.typnam = makeNode(TypeName);
7077                                         yyval.typnam->name = xlateSqlType("time");
7078                                         yyval.typnam->typmod = -1;
7079                                 ;
7080     break;}
7081 case 536:
7082 #line 2890 "gram.y"
7083 {
7084                                         yyval.typnam = makeNode(TypeName);
7085                                         yyval.typnam->name = xlateSqlType("interval");
7086                                         yyval.typnam->typmod = -1;
7087                                 ;
7088     break;}
7089 case 537:
7090 #line 2897 "gram.y"
7091 { yyval.str = "year"; ;
7092     break;}
7093 case 538:
7094 #line 2898 "gram.y"
7095 { yyval.str = "month"; ;
7096     break;}
7097 case 539:
7098 #line 2899 "gram.y"
7099 { yyval.str = "day"; ;
7100     break;}
7101 case 540:
7102 #line 2900 "gram.y"
7103 { yyval.str = "hour"; ;
7104     break;}
7105 case 541:
7106 #line 2901 "gram.y"
7107 { yyval.str = "minute"; ;
7108     break;}
7109 case 542:
7110 #line 2902 "gram.y"
7111 { yyval.str = "second"; ;
7112     break;}
7113 case 543:
7114 #line 2905 "gram.y"
7115 { yyval.boolean = TRUE; ;
7116     break;}
7117 case 544:
7118 #line 2906 "gram.y"
7119 { yyval.boolean = FALSE; ;
7120     break;}
7121 case 545:
7122 #line 2909 "gram.y"
7123 { yyval.list = lcons(yyvsp[0].str, NIL); ;
7124     break;}
7125 case 546:
7126 #line 2910 "gram.y"
7127 { yyval.list = NIL; ;
7128     break;}
7129 case 547:
7130 #line 2911 "gram.y"
7131 { yyval.list = NIL; ;
7132     break;}
7133 case 548:
7134 #line 2912 "gram.y"
7135 { yyval.list = NIL; ;
7136     break;}
7137 case 549:
7138 #line 2913 "gram.y"
7139 { yyval.list = NIL; ;
7140     break;}
7141 case 550:
7142 #line 2914 "gram.y"
7143 { yyval.list = NIL; ;
7144     break;}
7145 case 551:
7146 #line 2915 "gram.y"
7147 { yyval.list = NIL; ;
7148     break;}
7149 case 552:
7150 #line 2916 "gram.y"
7151 { yyval.list = NIL; ;
7152     break;}
7153 case 553:
7154 #line 2927 "gram.y"
7155 { yyval.node = yyvsp[0].node; ;
7156     break;}
7157 case 554:
7158 #line 2929 "gram.y"
7159 {
7160                                         A_Const *n = makeNode(A_Const);
7161                                         n->val.type = T_Null;
7162                                         yyval.node = (Node *)n;
7163                                 ;
7164     break;}
7165 case 555:
7166 #line 2941 "gram.y"
7167 {
7168                                         SubLink *n = makeNode(SubLink);
7169                                         n->lefthand = yyvsp[-5].list;
7170                                         n->oper = lcons("=",NIL);
7171                                         n->useor = false;
7172                                         n->subLinkType = ANY_SUBLINK;
7173                                         n->subselect = yyvsp[-1].node;
7174                                         yyval.node = (Node *)n;
7175                                 ;
7176     break;}
7177 case 556:
7178 #line 2951 "gram.y"
7179 {
7180                                         SubLink *n = makeNode(SubLink);
7181                                         n->lefthand = yyvsp[-6].list;
7182                                         n->oper = lcons("<>",NIL);
7183                                         n->useor = true;
7184                                         n->subLinkType = ALL_SUBLINK;
7185                                         n->subselect = yyvsp[-1].node;
7186                                         yyval.node = (Node *)n;
7187                                 ;
7188     break;}
7189 case 557:
7190 #line 2961 "gram.y"
7191 {
7192                                         SubLink *n = makeNode(SubLink);
7193                                         n->lefthand = yyvsp[-5].list;
7194                                         n->oper = lcons(yyvsp[-3].str, NIL);
7195                                         if (strcmp(yyvsp[-3].str,"<>") == 0)
7196                                                 n->useor = true;
7197                                         else
7198                                                 n->useor = false;
7199                                         n->subLinkType = EXPR_SUBLINK;
7200                                         n->subselect = yyvsp[-1].node;
7201                                         yyval.node = (Node *)n;
7202                                 ;
7203     break;}
7204 case 558:
7205 #line 2974 "gram.y"
7206 {
7207                                         SubLink *n = makeNode(SubLink);
7208                                         n->lefthand = yyvsp[-5].list;
7209                                         n->oper = lcons("+", NIL);
7210                                         n->useor = false;
7211                                         n->subLinkType = EXPR_SUBLINK;
7212                                         n->subselect = yyvsp[-1].node;
7213                                         yyval.node = (Node *)n;
7214                                 ;
7215     break;}
7216 case 559:
7217 #line 2984 "gram.y"
7218 {
7219                                         SubLink *n = makeNode(SubLink);
7220                                         n->lefthand = yyvsp[-5].list;
7221                                         n->oper = lcons("-", NIL);
7222                                         n->useor = false;
7223                                         n->subLinkType = EXPR_SUBLINK;
7224                                         n->subselect = yyvsp[-1].node;
7225                                         yyval.node = (Node *)n;
7226                                 ;
7227     break;}
7228 case 560:
7229 #line 2994 "gram.y"
7230 {
7231                                         SubLink *n = makeNode(SubLink);
7232                                         n->lefthand = yyvsp[-5].list;
7233                                         n->oper = lcons("/", NIL);
7234                                         n->useor = false;
7235                                         n->subLinkType = EXPR_SUBLINK;
7236                                         n->subselect = yyvsp[-1].node;
7237                                         yyval.node = (Node *)n;
7238                                 ;
7239     break;}
7240 case 561:
7241 #line 3004 "gram.y"
7242 {
7243                                         SubLink *n = makeNode(SubLink);
7244                                         n->lefthand = yyvsp[-5].list;
7245                                         n->oper = lcons("*", NIL);
7246                                         n->useor = false;
7247                                         n->subLinkType = EXPR_SUBLINK;
7248                                         n->subselect = yyvsp[-1].node;
7249                                         yyval.node = (Node *)n;
7250                                 ;
7251     break;}
7252 case 562:
7253 #line 3014 "gram.y"
7254 {
7255                                         SubLink *n = makeNode(SubLink);
7256                                         n->lefthand = yyvsp[-5].list;
7257                                         n->oper = lcons("<", NIL);
7258                                         n->useor = false;
7259                                         n->subLinkType = EXPR_SUBLINK;
7260                                         n->subselect = yyvsp[-1].node;
7261                                         yyval.node = (Node *)n;
7262                                 ;
7263     break;}
7264 case 563:
7265 #line 3024 "gram.y"
7266 {
7267                                         SubLink *n = makeNode(SubLink);
7268                                         n->lefthand = yyvsp[-5].list;
7269                                         n->oper = lcons(">", NIL);
7270                                         n->useor = false;
7271                                         n->subLinkType = EXPR_SUBLINK;
7272                                         n->subselect = yyvsp[-1].node;
7273                                         yyval.node = (Node *)n;
7274                                 ;
7275     break;}
7276 case 564:
7277 #line 3034 "gram.y"
7278 {
7279                                         SubLink *n = makeNode(SubLink);
7280                                         n->lefthand = yyvsp[-5].list;
7281                                         n->oper = lcons("=", NIL);
7282                                         n->useor = false;
7283                                         n->subLinkType = EXPR_SUBLINK;
7284                                         n->subselect = yyvsp[-1].node;
7285                                         yyval.node = (Node *)n;
7286                                 ;
7287     break;}
7288 case 565:
7289 #line 3044 "gram.y"
7290 {
7291                                         SubLink *n = makeNode(SubLink);
7292                                         n->lefthand = yyvsp[-6].list;
7293                                         n->oper = lcons(yyvsp[-4].str,NIL);
7294                                         if (strcmp(yyvsp[-4].str,"<>") == 0)
7295                                                 n->useor = true;
7296                                         else
7297                                                 n->useor = false;
7298                                         n->subLinkType = ANY_SUBLINK;
7299                                         n->subselect = yyvsp[-1].node;
7300                                         yyval.node = (Node *)n;
7301                                 ;
7302     break;}
7303 case 566:
7304 #line 3057 "gram.y"
7305 {
7306                                         SubLink *n = makeNode(SubLink);
7307                                         n->lefthand = yyvsp[-6].list;
7308                                         n->oper = lcons("+",NIL);
7309                                         n->useor = false;
7310                                         n->subLinkType = ANY_SUBLINK;
7311                                         n->subselect = yyvsp[-1].node;
7312                                         yyval.node = (Node *)n;
7313                                 ;
7314     break;}
7315 case 567:
7316 #line 3067 "gram.y"
7317 {
7318                                         SubLink *n = makeNode(SubLink);
7319                                         n->lefthand = yyvsp[-6].list;
7320                                         n->oper = lcons("-",NIL);
7321                                         n->useor = false;
7322                                         n->subLinkType = ANY_SUBLINK;
7323                                         n->subselect = yyvsp[-1].node;
7324                                         yyval.node = (Node *)n;
7325                                 ;
7326     break;}
7327 case 568:
7328 #line 3077 "gram.y"
7329 {
7330                                         SubLink *n = makeNode(SubLink);
7331                                         n->lefthand = yyvsp[-6].list;
7332                                         n->oper = lcons("/",NIL);
7333                                         n->useor = false;
7334                                         n->subLinkType = ANY_SUBLINK;
7335                                         n->subselect = yyvsp[-1].node;
7336                                         yyval.node = (Node *)n;
7337                                 ;
7338     break;}
7339 case 569:
7340 #line 3087 "gram.y"
7341 {
7342                                         SubLink *n = makeNode(SubLink);
7343                                         n->lefthand = yyvsp[-6].list;
7344                                         n->oper = lcons("*",NIL);
7345                                         n->useor = false;
7346                                         n->subLinkType = ANY_SUBLINK;
7347                                         n->subselect = yyvsp[-1].node;
7348                                         yyval.node = (Node *)n;
7349                                 ;
7350     break;}
7351 case 570:
7352 #line 3097 "gram.y"
7353 {
7354                                         SubLink *n = makeNode(SubLink);
7355                                         n->lefthand = yyvsp[-6].list;
7356                                         n->oper = lcons("<",NIL);
7357                                         n->useor = false;
7358                                         n->subLinkType = ANY_SUBLINK;
7359                                         n->subselect = yyvsp[-1].node;
7360                                         yyval.node = (Node *)n;
7361                                 ;
7362     break;}
7363 case 571:
7364 #line 3107 "gram.y"
7365 {
7366                                         SubLink *n = makeNode(SubLink);
7367                                         n->lefthand = yyvsp[-6].list;
7368                                         n->oper = lcons(">",NIL);
7369                                         n->useor = false;
7370                                         n->subLinkType = ANY_SUBLINK;
7371                                         n->subselect = yyvsp[-1].node;
7372                                         yyval.node = (Node *)n;
7373                                 ;
7374     break;}
7375 case 572:
7376 #line 3117 "gram.y"
7377 {
7378                                         SubLink *n = makeNode(SubLink);
7379                                         n->lefthand = yyvsp[-6].list;
7380                                         n->oper = lcons("=",NIL);
7381                                         n->useor = false;
7382                                         n->subLinkType = ANY_SUBLINK;
7383                                         n->subselect = yyvsp[-1].node;
7384                                         yyval.node = (Node *)n;
7385                                 ;
7386     break;}
7387 case 573:
7388 #line 3127 "gram.y"
7389 {
7390                                         SubLink *n = makeNode(SubLink);
7391                                         n->lefthand = yyvsp[-6].list;
7392                                         n->oper = lcons(yyvsp[-4].str,NIL);
7393                                         if (strcmp(yyvsp[-4].str,"<>") == 0)
7394                                                 n->useor = true;
7395                                         else
7396                                                 n->useor = false;
7397                                         n->subLinkType = ALL_SUBLINK;
7398                                         n->subselect = yyvsp[-1].node;
7399                                         yyval.node = (Node *)n;
7400                                 ;
7401     break;}
7402 case 574:
7403 #line 3140 "gram.y"
7404 {
7405                                         SubLink *n = makeNode(SubLink);
7406                                         n->lefthand = yyvsp[-6].list;
7407                                         n->oper = lcons("+",NIL);
7408                                         n->useor = false;
7409                                         n->subLinkType = ALL_SUBLINK;
7410                                         n->subselect = yyvsp[-1].node;
7411                                         yyval.node = (Node *)n;
7412                                 ;
7413     break;}
7414 case 575:
7415 #line 3150 "gram.y"
7416 {
7417                                         SubLink *n = makeNode(SubLink);
7418                                         n->lefthand = yyvsp[-6].list;
7419                                         n->oper = lcons("-",NIL);
7420                                         n->useor = false;
7421                                         n->subLinkType = ALL_SUBLINK;
7422                                         n->subselect = yyvsp[-1].node;
7423                                         yyval.node = (Node *)n;
7424                                 ;
7425     break;}
7426 case 576:
7427 #line 3160 "gram.y"
7428 {
7429                                         SubLink *n = makeNode(SubLink);
7430                                         n->lefthand = yyvsp[-6].list;
7431                                         n->oper = lcons("/",NIL);
7432                                         n->useor = false;
7433                                         n->subLinkType = ALL_SUBLINK;
7434                                         n->subselect = yyvsp[-1].node;
7435                                         yyval.node = (Node *)n;
7436                                 ;
7437     break;}
7438 case 577:
7439 #line 3170 "gram.y"
7440 {
7441                                         SubLink *n = makeNode(SubLink);
7442                                         n->lefthand = yyvsp[-6].list;
7443                                         n->oper = lcons("*",NIL);
7444                                         n->useor = false;
7445                                         n->subLinkType = ALL_SUBLINK;
7446                                         n->subselect = yyvsp[-1].node;
7447                                         yyval.node = (Node *)n;
7448                                 ;
7449     break;}
7450 case 578:
7451 #line 3180 "gram.y"
7452 {
7453                                         SubLink *n = makeNode(SubLink);
7454                                         n->lefthand = yyvsp[-6].list;
7455                                         n->oper = lcons("<",NIL);
7456                                         n->useor = false;
7457                                         n->subLinkType = ALL_SUBLINK;
7458                                         n->subselect = yyvsp[-1].node;
7459                                         yyval.node = (Node *)n;
7460                                 ;
7461     break;}
7462 case 579:
7463 #line 3190 "gram.y"
7464 {
7465                                         SubLink *n = makeNode(SubLink);
7466                                         n->lefthand = yyvsp[-6].list;
7467                                         n->oper = lcons(">",NIL);
7468                                         n->useor = false;
7469                                         n->subLinkType = ALL_SUBLINK;
7470                                         n->subselect = yyvsp[-1].node;
7471                                         yyval.node = (Node *)n;
7472                                 ;
7473     break;}
7474 case 580:
7475 #line 3200 "gram.y"
7476 {
7477                                         SubLink *n = makeNode(SubLink);
7478                                         n->lefthand = yyvsp[-6].list;
7479                                         n->oper = lcons("=",NIL);
7480                                         n->useor = false;
7481                                         n->subLinkType = ALL_SUBLINK;
7482                                         n->subselect = yyvsp[-1].node;
7483                                         yyval.node = (Node *)n;
7484                                 ;
7485     break;}
7486 case 581:
7487 #line 3210 "gram.y"
7488 {
7489                                         yyval.node = makeRowExpr(yyvsp[-3].str, yyvsp[-5].list, yyvsp[-1].list);
7490                                 ;
7491     break;}
7492 case 582:
7493 #line 3214 "gram.y"
7494 {
7495                                         yyval.node = makeRowExpr("+", yyvsp[-5].list, yyvsp[-1].list);
7496                                 ;
7497     break;}
7498 case 583:
7499 #line 3218 "gram.y"
7500 {
7501                                         yyval.node = makeRowExpr("-", yyvsp[-5].list, yyvsp[-1].list);
7502                                 ;
7503     break;}
7504 case 584:
7505 #line 3222 "gram.y"
7506 {
7507                                         yyval.node = makeRowExpr("/", yyvsp[-5].list, yyvsp[-1].list);
7508                                 ;
7509     break;}
7510 case 585:
7511 #line 3226 "gram.y"
7512 {
7513                                         yyval.node = makeRowExpr("*", yyvsp[-5].list, yyvsp[-1].list);
7514                                 ;
7515     break;}
7516 case 586:
7517 #line 3230 "gram.y"
7518 {
7519                                         yyval.node = makeRowExpr("<", yyvsp[-5].list, yyvsp[-1].list);
7520                                 ;
7521     break;}
7522 case 587:
7523 #line 3234 "gram.y"
7524 {
7525                                         yyval.node = makeRowExpr(">", yyvsp[-5].list, yyvsp[-1].list);
7526                                 ;
7527     break;}
7528 case 588:
7529 #line 3238 "gram.y"
7530 {
7531                                         yyval.node = makeRowExpr("=", yyvsp[-5].list, yyvsp[-1].list);
7532                                 ;
7533     break;}
7534 case 589:
7535 #line 3244 "gram.y"
7536 {
7537                                         yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
7538                                 ;
7539     break;}
7540 case 590:
7541 #line 3250 "gram.y"
7542 {
7543                                         yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
7544                                 ;
7545     break;}
7546 case 591:
7547 #line 3254 "gram.y"
7548 {
7549                                         yyval.list = lcons(yyvsp[0].node, NIL);
7550                                 ;
7551     break;}
7552 case 592:
7553 #line 3268 "gram.y"
7554 {
7555                                         yyvsp[-1].attr->indirection = yyvsp[0].list;
7556                                         yyval.node = (Node *)yyvsp[-1].attr;
7557                                 ;
7558     break;}
7559 case 593:
7560 #line 3273 "gram.y"
7561 {       yyval.node = yyvsp[0].node;  ;
7562     break;}
7563 case 594:
7564 #line 3275 "gram.y"
7565 {       yyval.node = yyvsp[0].node;  ;
7566     break;}
7567 case 595:
7568 #line 3277 "gram.y"
7569 {
7570                                         /* could be a column name or a relation_name */
7571                                         Ident *n = makeNode(Ident);
7572                                         n->name = yyvsp[0].str;
7573                                         n->indirection = NULL;
7574                                         yyval.node = (Node *)n;
7575                                 ;
7576     break;}
7577 case 596:
7578 #line 3285 "gram.y"
7579 {       yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
7580     break;}
7581 case 597:
7582 #line 3287 "gram.y"
7583 {       yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
7584     break;}
7585 case 598:
7586 #line 3289 "gram.y"
7587 {       yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
7588     break;}
7589 case 599:
7590 #line 3291 "gram.y"
7591 {       yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
7592     break;}
7593 case 600:
7594 #line 3293 "gram.y"
7595 {       yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
7596     break;}
7597 case 601:
7598 #line 3295 "gram.y"
7599 {       yyval.node = makeA_Expr(OP, "<", yyvsp[-2].node, yyvsp[0].node); ;
7600     break;}
7601 case 602:
7602 #line 3297 "gram.y"
7603 {       yyval.node = makeA_Expr(OP, ">", yyvsp[-2].node, yyvsp[0].node); ;
7604     break;}
7605 case 603:
7606 #line 3299 "gram.y"
7607 {       yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node, yyvsp[0].node); ;
7608     break;}
7609 case 604:
7610 #line 3301 "gram.y"
7611 {       yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
7612     break;}
7613 case 605:
7614 #line 3303 "gram.y"
7615 {       yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
7616     break;}
7617 case 606:
7618 #line 3305 "gram.y"
7619 {       yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
7620     break;}
7621 case 607:
7622 #line 3307 "gram.y"
7623 {
7624                                         yyval.node = (Node *)yyvsp[-2].node;
7625                                         /* AexprConst can be either A_Const or ParamNo */
7626                                         if (nodeTag(yyvsp[-2].node) == T_A_Const) {
7627                                                 ((A_Const *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
7628                                         } else if (nodeTag(yyvsp[-2].node) == T_Param) {
7629                                                 ((ParamNo *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
7630                                         /* otherwise, try to transform to a function call */
7631                                         } else {
7632                                                 FuncCall *n = makeNode(FuncCall);
7633                                                 n->funcname = yyvsp[0].typnam->name;
7634                                                 n->args = lcons(yyvsp[-2].node,NIL);
7635                                                 yyval.node = (Node *)n;
7636                                         }
7637                                 ;
7638     break;}
7639 case 608:
7640 #line 3323 "gram.y"
7641 {
7642                                         yyval.node = (Node *)yyvsp[-3].node;
7643                                         /* AexprConst can be either A_Const or ParamNo */
7644                                         if (nodeTag(yyvsp[-3].node) == T_A_Const) {
7645                                                 ((A_Const *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
7646                                         } else if (nodeTag(yyvsp[-1].typnam) == T_Param) {
7647                                                 ((ParamNo *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
7648                                         /* otherwise, try to transform to a function call */
7649                                         } else {
7650                                                 FuncCall *n = makeNode(FuncCall);
7651                                                 n->funcname = yyvsp[-1].typnam->name;
7652                                                 n->args = lcons(yyvsp[-3].node,NIL);
7653                                                 yyval.node = (Node *)n;
7654                                         }
7655                                 ;
7656     break;}
7657 case 609:
7658 #line 3339 "gram.y"
7659 {       yyval.node = yyvsp[-1].node; ;
7660     break;}
7661 case 610:
7662 #line 3341 "gram.y"
7663 {       yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
7664     break;}
7665 case 611:
7666 #line 3343 "gram.y"
7667 {       yyval.node = makeIndexable("~~", yyvsp[-2].node, yyvsp[0].node); ;
7668     break;}
7669 case 612:
7670 #line 3345 "gram.y"
7671 {       yyval.node = makeA_Expr(OP, "!~~", yyvsp[-3].node, yyvsp[0].node); ;
7672     break;}
7673 case 613:
7674 #line 3347 "gram.y"
7675 {       yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
7676     break;}
7677 case 614:
7678 #line 3349 "gram.y"
7679 {       yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
7680     break;}
7681 case 615:
7682 #line 3351 "gram.y"
7683 {
7684                                         /* cheap hack for aggregate (eg. count) */
7685                                         FuncCall *n = makeNode(FuncCall);
7686                                         A_Const *star = makeNode(A_Const);
7687
7688                                         star->val.type = T_String;
7689                                         star->val.val.str = "";
7690                                         n->funcname = yyvsp[-3].str;
7691                                         n->args = lcons(star, NIL);
7692                                         yyval.node = (Node *)n;
7693                                 ;
7694     break;}
7695 case 616:
7696 #line 3363 "gram.y"
7697 {
7698                                         FuncCall *n = makeNode(FuncCall);
7699                                         n->funcname = yyvsp[-2].str;
7700                                         n->args = NIL;
7701                                         yyval.node = (Node *)n;
7702                                 ;
7703     break;}
7704 case 617:
7705 #line 3370 "gram.y"
7706 {
7707                                         FuncCall *n = makeNode(FuncCall);
7708                                         n->funcname = yyvsp[-3].str;
7709                                         n->args = yyvsp[-1].list;
7710                                         yyval.node = (Node *)n;
7711                                 ;
7712     break;}
7713 case 618:
7714 #line 3377 "gram.y"
7715 {
7716                                         A_Const *n = makeNode(A_Const);
7717                                         TypeName *t = makeNode(TypeName);
7718
7719                                         n->val.type = T_String;
7720                                         n->val.val.str = "now";
7721                                         n->typename = t;
7722
7723                                         t->name = xlateSqlType("date");
7724                                         t->setof = FALSE;
7725                                         t->typmod = -1;
7726  
7727                                         yyval.node = (Node *)n;
7728                                 ;
7729     break;}
7730 case 619:
7731 #line 3392 "gram.y"
7732 {
7733                                         A_Const *n = makeNode(A_Const);
7734                                         TypeName *t = makeNode(TypeName);
7735
7736                                         n->val.type = T_String;
7737                                         n->val.val.str = "now";
7738                                         n->typename = t;
7739
7740                                         t->name = xlateSqlType("time");
7741                                         t->setof = FALSE;
7742                                         t->typmod = -1;
7743
7744                                         yyval.node = (Node *)n;
7745                                 ;
7746     break;}
7747 case 620:
7748 #line 3407 "gram.y"
7749 {
7750                                         FuncCall *n = makeNode(FuncCall);
7751                                         A_Const *s = makeNode(A_Const);
7752                                         TypeName *t = makeNode(TypeName);
7753
7754                                         n->funcname = xlateSqlType("time");
7755                                         n->args = lcons(s, NIL);
7756
7757                                         s->val.type = T_String;
7758                                         s->val.val.str = "now";
7759                                         s->typename = t;
7760
7761                                         t->name = xlateSqlType("time");
7762                                         t->setof = FALSE;
7763                                         t->typmod = -1;
7764
7765                                         if (yyvsp[-1].ival != 0)
7766                                                 elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
7767
7768                                         yyval.node = (Node *)n;
7769                                 ;
7770     break;}
7771 case 621:
7772 #line 3429 "gram.y"
7773 {
7774                                         A_Const *n = makeNode(A_Const);
7775                                         TypeName *t = makeNode(TypeName);
7776
7777                                         n->val.type = T_String;
7778                                         n->val.val.str = "now";
7779                                         n->typename = t;
7780
7781                                         t->name = xlateSqlType("timestamp");
7782                                         t->setof = FALSE;
7783                                         t->typmod = -1;
7784
7785                                         yyval.node = (Node *)n;
7786                                 ;
7787     break;}
7788 case 622:
7789 #line 3444 "gram.y"
7790 {
7791                                         FuncCall *n = makeNode(FuncCall);
7792                                         A_Const *s = makeNode(A_Const);
7793                                         TypeName *t = makeNode(TypeName);
7794
7795                                         n->funcname = xlateSqlType("timestamp");
7796                                         n->args = lcons(s, NIL);
7797
7798                                         s->val.type = T_String;
7799                                         s->val.val.str = "now";
7800                                         s->typename = t;
7801
7802                                         t->name = xlateSqlType("timestamp");
7803                                         t->setof = FALSE;
7804                                         t->typmod = -1;
7805
7806                                         if (yyvsp[-1].ival != 0)
7807                                                 elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
7808
7809                                         yyval.node = (Node *)n;
7810                                 ;
7811     break;}
7812 case 623:
7813 #line 3466 "gram.y"
7814 {
7815                                         FuncCall *n = makeNode(FuncCall);
7816                                         n->funcname = "getpgusername";
7817                                         n->args = NIL;
7818                                         yyval.node = (Node *)n;
7819                                 ;
7820     break;}
7821 case 624:
7822 #line 3473 "gram.y"
7823 {
7824                                         SubLink *n = makeNode(SubLink);
7825                                         n->lefthand = NIL;
7826                                         n->useor = false;
7827                                         n->oper = NIL;
7828                                         n->subLinkType = EXISTS_SUBLINK;
7829                                         n->subselect = yyvsp[-1].node;
7830                                         yyval.node = (Node *)n;
7831                                 ;
7832     break;}
7833 case 625:
7834 #line 3483 "gram.y"
7835 {
7836                                         FuncCall *n = makeNode(FuncCall);
7837                                         n->funcname = "date_part";
7838                                         n->args = yyvsp[-1].list;
7839                                         yyval.node = (Node *)n;
7840                                 ;
7841     break;}
7842 case 626:
7843 #line 3490 "gram.y"
7844 {
7845                                         FuncCall *n = makeNode(FuncCall);
7846                                         n->funcname = "strpos";
7847                                         n->args = yyvsp[-1].list;
7848                                         yyval.node = (Node *)n;
7849                                 ;
7850     break;}
7851 case 627:
7852 #line 3497 "gram.y"
7853 {
7854                                         FuncCall *n = makeNode(FuncCall);
7855                                         n->funcname = "substr";
7856                                         n->args = yyvsp[-1].list;
7857                                         yyval.node = (Node *)n;
7858                                 ;
7859     break;}
7860 case 628:
7861 #line 3505 "gram.y"
7862 {
7863                                         FuncCall *n = makeNode(FuncCall);
7864                                         n->funcname = "btrim";
7865                                         n->args = yyvsp[-1].list;
7866                                         yyval.node = (Node *)n;
7867                                 ;
7868     break;}
7869 case 629:
7870 #line 3512 "gram.y"
7871 {
7872                                         FuncCall *n = makeNode(FuncCall);
7873                                         n->funcname = "ltrim";
7874                                         n->args = yyvsp[-1].list;
7875                                         yyval.node = (Node *)n;
7876                                 ;
7877     break;}
7878 case 630:
7879 #line 3519 "gram.y"
7880 {
7881                                         FuncCall *n = makeNode(FuncCall);
7882                                         n->funcname = "rtrim";
7883                                         n->args = yyvsp[-1].list;
7884                                         yyval.node = (Node *)n;
7885                                 ;
7886     break;}
7887 case 631:
7888 #line 3526 "gram.y"
7889 {
7890                                         FuncCall *n = makeNode(FuncCall);
7891                                         n->funcname = "btrim";
7892                                         n->args = yyvsp[-1].list;
7893                                         yyval.node = (Node *)n;
7894                                 ;
7895     break;}
7896 case 632:
7897 #line 3533 "gram.y"
7898 {       yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-1].node, NULL); ;
7899     break;}
7900 case 633:
7901 #line 3535 "gram.y"
7902 {       yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ;
7903     break;}
7904 case 634:
7905 #line 3537 "gram.y"
7906 {       yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-1].node, NULL); ;
7907     break;}
7908 case 635:
7909 #line 3539 "gram.y"
7910 {       yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-3].node, NULL); ;
7911     break;}
7912 case 636:
7913 #line 3546 "gram.y"
7914 {
7915                                         A_Const *n = makeNode(A_Const);
7916                                         n->val.type = T_String;
7917                                         n->val.val.str = "t";
7918                                         n->typename = makeNode(TypeName);
7919                                         n->typename->name = xlateSqlType("bool");
7920                                         n->typename->typmod = -1;
7921                                         yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node,(Node *)n);
7922                                 ;
7923     break;}
7924 case 637:
7925 #line 3556 "gram.y"
7926 {
7927                                         A_Const *n = makeNode(A_Const);
7928                                         n->val.type = T_String;
7929                                         n->val.val.str = "t";
7930                                         n->typename = makeNode(TypeName);
7931                                         n->typename->name = xlateSqlType("bool");
7932                                         n->typename->typmod = -1;
7933                                         yyval.node = makeA_Expr(OP, "=", yyvsp[-3].node,(Node *)n);
7934                                 ;
7935     break;}
7936 case 638:
7937 #line 3566 "gram.y"
7938 {
7939                                         A_Const *n = makeNode(A_Const);
7940                                         n->val.type = T_String;
7941                                         n->val.val.str = "f";
7942                                         n->typename = makeNode(TypeName);
7943                                         n->typename->name = xlateSqlType("bool");
7944                                         n->typename->typmod = -1;
7945                                         yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node,(Node *)n);
7946                                 ;
7947     break;}
7948 case 639:
7949 #line 3576 "gram.y"
7950 {
7951                                         A_Const *n = makeNode(A_Const);
7952                                         n->val.type = T_String;
7953                                         n->val.val.str = "f";
7954                                         n->typename = makeNode(TypeName);
7955                                         n->typename->name = xlateSqlType("bool");
7956                                         n->typename->typmod = -1;
7957                                         yyval.node = makeA_Expr(OP, "=", yyvsp[-3].node,(Node *)n);
7958                                 ;
7959     break;}
7960 case 640:
7961 #line 3586 "gram.y"
7962 {
7963                                         yyval.node = makeA_Expr(AND, NULL,
7964                                                 makeA_Expr(OP, ">=", yyvsp[-4].node, yyvsp[-2].node),
7965                                                 makeA_Expr(OP, "<=", yyvsp[-4].node, yyvsp[0].node));
7966                                 ;
7967     break;}
7968 case 641:
7969 #line 3592 "gram.y"
7970 {
7971                                         yyval.node = makeA_Expr(OR, NULL,
7972                                                 makeA_Expr(OP, "<", yyvsp[-5].node, yyvsp[-2].node),
7973                                                 makeA_Expr(OP, ">", yyvsp[-5].node, yyvsp[0].node));
7974                                 ;
7975     break;}
7976 case 642:
7977 #line 3597 "gram.y"
7978 { saved_In_Expr = lcons(yyvsp[-1].node,saved_In_Expr); ;
7979     break;}
7980 case 643:
7981 #line 3598 "gram.y"
7982 {
7983                                         saved_In_Expr = lnext(saved_In_Expr);
7984                                         if (nodeTag(yyvsp[-1].node) == T_SubLink)
7985                                         {
7986                                                         SubLink *n = (SubLink *)yyvsp[-1].node;
7987                                                         n->lefthand = lcons(yyvsp[-5].node, NIL);
7988                                                         n->oper = lcons("=",NIL);
7989                                                         n->useor = false;
7990                                                         n->subLinkType = ANY_SUBLINK;
7991                                                         yyval.node = (Node *)n;
7992                                         }
7993                                         else    yyval.node = yyvsp[-1].node;
7994                                 ;
7995     break;}
7996 case 644:
7997 #line 3611 "gram.y"
7998 { saved_In_Expr = lcons(yyvsp[-2].node,saved_In_Expr); ;
7999     break;}
8000 case 645:
8001 #line 3612 "gram.y"
8002 {
8003                                         saved_In_Expr = lnext(saved_In_Expr);
8004                                         if (nodeTag(yyvsp[-1].node) == T_SubLink)
8005                                         {
8006                                                         SubLink *n = (SubLink *)yyvsp[-1].node;
8007                                                         n->lefthand = lcons(yyvsp[-6].node, NIL);
8008                                                         n->oper = lcons("<>",NIL);
8009                                                         n->useor = false;
8010                                                         n->subLinkType = ALL_SUBLINK;
8011                                                         yyval.node = (Node *)n;
8012                                         }
8013                                         else    yyval.node = yyvsp[-1].node;
8014                                 ;
8015     break;}
8016 case 646:
8017 #line 3626 "gram.y"
8018 {
8019                                         SubLink *n = makeNode(SubLink);
8020                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8021                                         n->oper = lcons(yyvsp[-3].str,NIL);
8022                                         n->useor = false;
8023                                         n->subLinkType = EXPR_SUBLINK;
8024                                         n->subselect = yyvsp[-1].node;
8025                                         yyval.node = (Node *)n;
8026                                 ;
8027     break;}
8028 case 647:
8029 #line 3636 "gram.y"
8030 {
8031                                         SubLink *n = makeNode(SubLink);
8032                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8033                                         n->oper = lcons("+",NIL);
8034                                         n->useor = false;
8035                                         n->subLinkType = EXPR_SUBLINK;
8036                                         n->subselect = yyvsp[-1].node;
8037                                         yyval.node = (Node *)n;
8038                                 ;
8039     break;}
8040 case 648:
8041 #line 3646 "gram.y"
8042 {
8043                                         SubLink *n = makeNode(SubLink);
8044                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8045                                         n->oper = lcons("-",NIL);
8046                                         n->useor = false;
8047                                         n->subLinkType = EXPR_SUBLINK;
8048                                         n->subselect = yyvsp[-1].node;
8049                                         yyval.node = (Node *)n;
8050                                 ;
8051     break;}
8052 case 649:
8053 #line 3656 "gram.y"
8054 {
8055                                         SubLink *n = makeNode(SubLink);
8056                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8057                                         n->oper = lcons("/",NIL);
8058                                         n->useor = false;
8059                                         n->subLinkType = EXPR_SUBLINK;
8060                                         n->subselect = yyvsp[-1].node;
8061                                         yyval.node = (Node *)n;
8062                                 ;
8063     break;}
8064 case 650:
8065 #line 3666 "gram.y"
8066 {
8067                                         SubLink *n = makeNode(SubLink);
8068                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8069                                         n->oper = lcons("*",NIL);
8070                                         n->useor = false;
8071                                         n->subLinkType = EXPR_SUBLINK;
8072                                         n->subselect = yyvsp[-1].node;
8073                                         yyval.node = (Node *)n;
8074                                 ;
8075     break;}
8076 case 651:
8077 #line 3676 "gram.y"
8078 {
8079                                         SubLink *n = makeNode(SubLink);
8080                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8081                                         n->oper = lcons("<",NIL);
8082                                         n->useor = false;
8083                                         n->subLinkType = EXPR_SUBLINK;
8084                                         n->subselect = yyvsp[-1].node;
8085                                         yyval.node = (Node *)n;
8086                                 ;
8087     break;}
8088 case 652:
8089 #line 3686 "gram.y"
8090 {
8091                                         SubLink *n = makeNode(SubLink);
8092                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8093                                         n->oper = lcons(">",NIL);
8094                                         n->useor = false;
8095                                         n->subLinkType = EXPR_SUBLINK;
8096                                         n->subselect = yyvsp[-1].node;
8097                                         yyval.node = (Node *)n;
8098                                 ;
8099     break;}
8100 case 653:
8101 #line 3696 "gram.y"
8102 {
8103                                         SubLink *n = makeNode(SubLink);
8104                                         n->lefthand = lcons(yyvsp[-4].node, NULL);
8105                                         n->oper = lcons("=",NIL);
8106                                         n->useor = false;
8107                                         n->subLinkType = EXPR_SUBLINK;
8108                                         n->subselect = yyvsp[-1].node;
8109                                         yyval.node = (Node *)n;
8110                                 ;
8111     break;}
8112 case 654:
8113 #line 3706 "gram.y"
8114 {
8115                                         SubLink *n = makeNode(SubLink);
8116                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8117                                         n->oper = lcons(yyvsp[-4].str,NIL);
8118                                         n->useor = false;
8119                                         n->subLinkType = ANY_SUBLINK;
8120                                         n->subselect = yyvsp[-1].node;
8121                                         yyval.node = (Node *)n;
8122                                 ;
8123     break;}
8124 case 655:
8125 #line 3716 "gram.y"
8126 {
8127                                         SubLink *n = makeNode(SubLink);
8128                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8129                                         n->oper = lcons("+",NIL);
8130                                         n->useor = false;
8131                                         n->subLinkType = ANY_SUBLINK;
8132                                         n->subselect = yyvsp[-1].node;
8133                                         yyval.node = (Node *)n;
8134                                 ;
8135     break;}
8136 case 656:
8137 #line 3726 "gram.y"
8138 {
8139                                         SubLink *n = makeNode(SubLink);
8140                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8141                                         n->oper = lcons("-",NIL);
8142                                         n->useor = false;
8143                                         n->subLinkType = ANY_SUBLINK;
8144                                         n->subselect = yyvsp[-1].node;
8145                                         yyval.node = (Node *)n;
8146                                 ;
8147     break;}
8148 case 657:
8149 #line 3736 "gram.y"
8150 {
8151                                         SubLink *n = makeNode(SubLink);
8152                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8153                                         n->oper = lcons("/",NIL);
8154                                         n->useor = false;
8155                                         n->subLinkType = ANY_SUBLINK;
8156                                         n->subselect = yyvsp[-1].node;
8157                                         yyval.node = (Node *)n;
8158                                 ;
8159     break;}
8160 case 658:
8161 #line 3746 "gram.y"
8162 {
8163                                         SubLink *n = makeNode(SubLink);
8164                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8165                                         n->oper = lcons("*",NIL);
8166                                         n->useor = false;
8167                                         n->subLinkType = ANY_SUBLINK;
8168                                         n->subselect = yyvsp[-1].node;
8169                                         yyval.node = (Node *)n;
8170                                 ;
8171     break;}
8172 case 659:
8173 #line 3756 "gram.y"
8174 {
8175                                         SubLink *n = makeNode(SubLink);
8176                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8177                                         n->oper = lcons("<",NIL);
8178                                         n->useor = false;
8179                                         n->subLinkType = ANY_SUBLINK;
8180                                         n->subselect = yyvsp[-1].node;
8181                                         yyval.node = (Node *)n;
8182                                 ;
8183     break;}
8184 case 660:
8185 #line 3766 "gram.y"
8186 {
8187                                         SubLink *n = makeNode(SubLink);
8188                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8189                                         n->oper = lcons(">",NIL);
8190                                         n->useor = false;
8191                                         n->subLinkType = ANY_SUBLINK;
8192                                         n->subselect = yyvsp[-1].node;
8193                                         yyval.node = (Node *)n;
8194                                 ;
8195     break;}
8196 case 661:
8197 #line 3776 "gram.y"
8198 {
8199                                         SubLink *n = makeNode(SubLink);
8200                                         n->lefthand = lcons(yyvsp[-5].node,NIL);
8201                                         n->oper = lcons("=",NIL);
8202                                         n->useor = false;
8203                                         n->subLinkType = ANY_SUBLINK;
8204                                         n->subselect = yyvsp[-1].node;
8205                                         yyval.node = (Node *)n;
8206                                 ;
8207     break;}
8208 case 662:
8209 #line 3786 "gram.y"
8210 {
8211                                         SubLink *n = makeNode(SubLink);
8212                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8213                                         n->oper = lcons(yyvsp[-4].str,NIL);
8214                                         n->useor = false;
8215                                         n->subLinkType = ALL_SUBLINK;
8216                                         n->subselect = yyvsp[-1].node;
8217                                         yyval.node = (Node *)n;
8218                                 ;
8219     break;}
8220 case 663:
8221 #line 3796 "gram.y"
8222 {
8223                                         SubLink *n = makeNode(SubLink);
8224                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8225                                         n->oper = lcons("+",NIL);
8226                                         n->useor = false;
8227                                         n->subLinkType = ALL_SUBLINK;
8228                                         n->subselect = yyvsp[-1].node;
8229                                         yyval.node = (Node *)n;
8230                                 ;
8231     break;}
8232 case 664:
8233 #line 3806 "gram.y"
8234 {
8235                                         SubLink *n = makeNode(SubLink);
8236                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8237                                         n->oper = lcons("-",NIL);
8238                                         n->useor = false;
8239                                         n->subLinkType = ALL_SUBLINK;
8240                                         n->subselect = yyvsp[-1].node;
8241                                         yyval.node = (Node *)n;
8242                                 ;
8243     break;}
8244 case 665:
8245 #line 3816 "gram.y"
8246 {
8247                                         SubLink *n = makeNode(SubLink);
8248                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8249                                         n->oper = lcons("/",NIL);
8250                                         n->useor = false;
8251                                         n->subLinkType = ALL_SUBLINK;
8252                                         n->subselect = yyvsp[-1].node;
8253                                         yyval.node = (Node *)n;
8254                                 ;
8255     break;}
8256 case 666:
8257 #line 3826 "gram.y"
8258 {
8259                                         SubLink *n = makeNode(SubLink);
8260                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8261                                         n->oper = lcons("*",NIL);
8262                                         n->useor = false;
8263                                         n->subLinkType = ALL_SUBLINK;
8264                                         n->subselect = yyvsp[-1].node;
8265                                         yyval.node = (Node *)n;
8266                                 ;
8267     break;}
8268 case 667:
8269 #line 3836 "gram.y"
8270 {
8271                                         SubLink *n = makeNode(SubLink);
8272                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8273                                         n->oper = lcons("<",NIL);
8274                                         n->useor = false;
8275                                         n->subLinkType = ALL_SUBLINK;
8276                                         n->subselect = yyvsp[-1].node;
8277                                         yyval.node = (Node *)n;
8278                                 ;
8279     break;}
8280 case 668:
8281 #line 3846 "gram.y"
8282 {
8283                                         SubLink *n = makeNode(SubLink);
8284                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8285                                         n->oper = lcons(">",NIL);
8286                                         n->useor = false;
8287                                         n->subLinkType = ALL_SUBLINK;
8288                                         n->subselect = yyvsp[-1].node;
8289                                         yyval.node = (Node *)n;
8290                                 ;
8291     break;}
8292 case 669:
8293 #line 3856 "gram.y"
8294 {
8295                                         SubLink *n = makeNode(SubLink);
8296                                         n->lefthand = lcons(yyvsp[-5].node, NULL);
8297                                         n->oper = lcons("=",NIL);
8298                                         n->useor = false;
8299                                         n->subLinkType = ALL_SUBLINK;
8300                                         n->subselect = yyvsp[-1].node;
8301                                         yyval.node = (Node *)n;
8302                                 ;
8303     break;}
8304 case 670:
8305 #line 3866 "gram.y"
8306 {       yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, yyvsp[0].node); ;
8307     break;}
8308 case 671:
8309 #line 3868 "gram.y"
8310 {       yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, yyvsp[0].node); ;
8311     break;}
8312 case 672:
8313 #line 3870 "gram.y"
8314 {       yyval.node = makeA_Expr(NOT, NULL, NULL, yyvsp[0].node); ;
8315     break;}
8316 case 673:
8317 #line 3880 "gram.y"
8318 {
8319                                         yyvsp[-1].attr->indirection = yyvsp[0].list;
8320                                         yyval.node = (Node *)yyvsp[-1].attr;
8321                                 ;
8322     break;}
8323 case 674:
8324 #line 3885 "gram.y"
8325 {       yyval.node = yyvsp[0].node;  ;
8326     break;}
8327 case 675:
8328 #line 3887 "gram.y"
8329 {
8330                                         /* could be a column name or a relation_name */
8331                                         Ident *n = makeNode(Ident);
8332                                         n->name = yyvsp[0].str;
8333                                         n->indirection = NULL;
8334                                         yyval.node = (Node *)n;
8335                                 ;
8336     break;}
8337 case 676:
8338 #line 3895 "gram.y"
8339 {       yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
8340     break;}
8341 case 677:
8342 #line 3897 "gram.y"
8343 {       yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
8344     break;}
8345 case 678:
8346 #line 3899 "gram.y"
8347 {       yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
8348     break;}
8349 case 679:
8350 #line 3901 "gram.y"
8351 {       yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
8352     break;}
8353 case 680:
8354 #line 3903 "gram.y"
8355 {       yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
8356     break;}
8357 case 681:
8358 #line 3905 "gram.y"
8359 {       yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
8360     break;}
8361 case 682:
8362 #line 3907 "gram.y"
8363 {       yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
8364     break;}
8365 case 683:
8366 #line 3909 "gram.y"
8367 {       yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
8368     break;}
8369 case 684:
8370 #line 3911 "gram.y"
8371 {
8372                                         yyval.node = (Node *)yyvsp[-2].node;
8373                                         /* AexprConst can be either A_Const or ParamNo */
8374                                         if (nodeTag(yyvsp[-2].node) == T_A_Const) {
8375                                                 ((A_Const *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
8376                                         } else if (nodeTag(yyvsp[-2].node) == T_Param) {
8377                                                 ((ParamNo *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
8378                                         /* otherwise, try to transform to a function call */
8379                                         } else {
8380                                                 FuncCall *n = makeNode(FuncCall);
8381                                                 n->funcname = yyvsp[0].typnam->name;
8382                                                 n->args = lcons(yyvsp[-2].node,NIL);
8383                                                 yyval.node = (Node *)n;
8384                                         }
8385                                 ;
8386     break;}
8387 case 685:
8388 #line 3927 "gram.y"
8389 {
8390                                         yyval.node = (Node *)yyvsp[-3].node;
8391                                         /* AexprConst can be either A_Const or ParamNo */
8392                                         if (nodeTag(yyvsp[-3].node) == T_A_Const) {
8393                                                 ((A_Const *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
8394                                         } else if (nodeTag(yyvsp[-3].node) == T_Param) {
8395                                                 ((ParamNo *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
8396                                         /* otherwise, try to transform to a function call */
8397                                         } else {
8398                                                 FuncCall *n = makeNode(FuncCall);
8399                                                 n->funcname = yyvsp[-1].typnam->name;
8400                                                 n->args = lcons(yyvsp[-3].node,NIL);
8401                                                 yyval.node = (Node *)n;
8402                                         }
8403                                 ;
8404     break;}
8405 case 686:
8406 #line 3943 "gram.y"
8407 {       yyval.node = yyvsp[-1].node; ;
8408     break;}
8409 case 687:
8410 #line 3945 "gram.y"
8411 {       yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
8412     break;}
8413 case 688:
8414 #line 3947 "gram.y"
8415 {       yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
8416     break;}
8417 case 689:
8418 #line 3949 "gram.y"
8419 {       yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
8420     break;}
8421 case 690:
8422 #line 3951 "gram.y"
8423 {
8424                                         FuncCall *n = makeNode(FuncCall);
8425                                         n->funcname = yyvsp[-2].str;
8426                                         n->args = NIL;
8427                                         yyval.node = (Node *)n;
8428                                 ;
8429     break;}
8430 case 691:
8431 #line 3958 "gram.y"
8432 {
8433                                         FuncCall *n = makeNode(FuncCall);
8434                                         n->funcname = yyvsp[-3].str;
8435                                         n->args = yyvsp[-1].list;
8436                                         yyval.node = (Node *)n;
8437                                 ;
8438     break;}
8439 case 692:
8440 #line 3965 "gram.y"
8441 {
8442                                         A_Const *n = makeNode(A_Const);
8443                                         TypeName *t = makeNode(TypeName);
8444
8445                                         n->val.type = T_String;
8446                                         n->val.val.str = "now";
8447                                         n->typename = t;
8448
8449                                         t->name = xlateSqlType("date");
8450                                         t->setof = FALSE;
8451                                         t->typmod = -1;
8452
8453                                         yyval.node = (Node *)n;
8454                                 ;
8455     break;}
8456 case 693:
8457 #line 3980 "gram.y"
8458 {
8459                                         A_Const *n = makeNode(A_Const);
8460                                         TypeName *t = makeNode(TypeName);
8461
8462                                         n->val.type = T_String;
8463                                         n->val.val.str = "now";
8464                                         n->typename = t;
8465
8466                                         t->name = xlateSqlType("time");
8467                                         t->setof = FALSE;
8468                                         t->typmod = -1;
8469
8470                                         yyval.node = (Node *)n;
8471                                 ;
8472     break;}
8473 case 694:
8474 #line 3995 "gram.y"
8475 {
8476                                         FuncCall *n = makeNode(FuncCall);
8477                                         A_Const *s = makeNode(A_Const);
8478                                         TypeName *t = makeNode(TypeName);
8479
8480                                         n->funcname = xlateSqlType("time");
8481                                         n->args = lcons(s, NIL);
8482
8483                                         s->val.type = T_String;
8484                                         s->val.val.str = "now";
8485                                         s->typename = t;
8486
8487                                         t->name = xlateSqlType("time");
8488                                         t->setof = FALSE;
8489                                         t->typmod = -1;
8490
8491                                         if (yyvsp[-1].ival != 0)
8492                                                 elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
8493
8494                                         yyval.node = (Node *)n;
8495                                 ;
8496     break;}
8497 case 695:
8498 #line 4017 "gram.y"
8499 {
8500                                         A_Const *n = makeNode(A_Const);
8501                                         TypeName *t = makeNode(TypeName);
8502
8503                                         n->val.type = T_String;
8504                                         n->val.val.str = "now";
8505                                         n->typename = t;
8506
8507                                         t->name = xlateSqlType("timestamp");
8508                                         t->setof = FALSE;
8509                                         t->typmod = -1;
8510
8511                                         yyval.node = (Node *)n;
8512                                 ;
8513     break;}
8514 case 696:
8515 #line 4032 "gram.y"
8516 {
8517                                         FuncCall *n = makeNode(FuncCall);
8518                                         A_Const *s = makeNode(A_Const);
8519                                         TypeName *t = makeNode(TypeName);
8520
8521                                         n->funcname = xlateSqlType("timestamp");
8522                                         n->args = lcons(s, NIL);
8523
8524                                         s->val.type = T_String;
8525                                         s->val.val.str = "now";
8526                                         s->typename = t;
8527
8528                                         t->name = xlateSqlType("timestamp");
8529                                         t->setof = FALSE;
8530                                         t->typmod = -1;
8531
8532                                         if (yyvsp[-1].ival != 0)
8533                                                 elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
8534
8535                                         yyval.node = (Node *)n;
8536                                 ;
8537     break;}
8538 case 697:
8539 #line 4054 "gram.y"
8540 {
8541                                         FuncCall *n = makeNode(FuncCall);
8542                                         n->funcname = "getpgusername";
8543                                         n->args = NIL;
8544                                         yyval.node = (Node *)n;
8545                                 ;
8546     break;}
8547 case 698:
8548 #line 4061 "gram.y"
8549 {
8550                                         FuncCall *n = makeNode(FuncCall);
8551                                         n->funcname = "strpos";
8552                                         n->args = yyvsp[-1].list;
8553                                         yyval.node = (Node *)n;
8554                                 ;
8555     break;}
8556 case 699:
8557 #line 4068 "gram.y"
8558 {
8559                                         FuncCall *n = makeNode(FuncCall);
8560                                         n->funcname = "substr";
8561                                         n->args = yyvsp[-1].list;
8562                                         yyval.node = (Node *)n;
8563                                 ;
8564     break;}
8565 case 700:
8566 #line 4076 "gram.y"
8567 {
8568                                         FuncCall *n = makeNode(FuncCall);
8569                                         n->funcname = "btrim";
8570                                         n->args = yyvsp[-1].list;
8571                                         yyval.node = (Node *)n;
8572                                 ;
8573     break;}
8574 case 701:
8575 #line 4083 "gram.y"
8576 {
8577                                         FuncCall *n = makeNode(FuncCall);
8578                                         n->funcname = "ltrim";
8579                                         n->args = yyvsp[-1].list;
8580                                         yyval.node = (Node *)n;
8581                                 ;
8582     break;}
8583 case 702:
8584 #line 4090 "gram.y"
8585 {
8586                                         FuncCall *n = makeNode(FuncCall);
8587                                         n->funcname = "rtrim";
8588                                         n->args = yyvsp[-1].list;
8589                                         yyval.node = (Node *)n;
8590                                 ;
8591     break;}
8592 case 703:
8593 #line 4097 "gram.y"
8594 {
8595                                         FuncCall *n = makeNode(FuncCall);
8596                                         n->funcname = "btrim";
8597                                         n->args = yyvsp[-1].list;
8598                                         yyval.node = (Node *)n;
8599                                 ;
8600     break;}
8601 case 704:
8602 #line 4106 "gram.y"
8603 {
8604                                         A_Indices *ai = makeNode(A_Indices);
8605                                         ai->lidx = NULL;
8606                                         ai->uidx = yyvsp[-2].node;
8607                                         yyval.list = lcons(ai, yyvsp[0].list);
8608                                 ;
8609     break;}
8610 case 705:
8611 #line 4113 "gram.y"
8612 {
8613                                         A_Indices *ai = makeNode(A_Indices);
8614                                         ai->lidx = yyvsp[-4].node;
8615                                         ai->uidx = yyvsp[-2].node;
8616                                         yyval.list = lcons(ai, yyvsp[0].list);
8617                                 ;
8618     break;}
8619 case 706:
8620 #line 4120 "gram.y"
8621 {       yyval.list = NIL; ;
8622     break;}
8623 case 707:
8624 #line 4124 "gram.y"
8625 { yyval.list = lcons(yyvsp[0].node, NIL); ;
8626     break;}
8627 case 708:
8628 #line 4126 "gram.y"
8629 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
8630     break;}
8631 case 709:
8632 #line 4128 "gram.y"
8633 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
8634     break;}
8635 case 710:
8636 #line 4132 "gram.y"
8637 {
8638                                         A_Const *n = makeNode(A_Const);
8639                                         n->val.type = T_String;
8640                                         n->val.val.str = yyvsp[-2].str;
8641                                         yyval.list = lappend(lcons((Node *)n,NIL), yyvsp[0].node);
8642                                 ;
8643     break;}
8644 case 711:
8645 #line 4139 "gram.y"
8646 {       yyval.list = NIL; ;
8647     break;}
8648 case 712:
8649 #line 4143 "gram.y"
8650 {       yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ;
8651     break;}
8652 case 713:
8653 #line 4145 "gram.y"
8654 {       yyval.list = NIL; ;
8655     break;}
8656 case 714:
8657 #line 4149 "gram.y"
8658 {
8659                                         yyvsp[-1].attr->indirection = yyvsp[0].list;
8660                                         yyval.node = (Node *)yyvsp[-1].attr;
8661                                 ;
8662     break;}
8663 case 715:
8664 #line 4154 "gram.y"
8665 {       yyval.node = yyvsp[0].node;  ;
8666     break;}
8667 case 716:
8668 #line 4156 "gram.y"
8669 {       yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
8670     break;}
8671 case 717:
8672 #line 4158 "gram.y"
8673 {       yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
8674     break;}
8675 case 718:
8676 #line 4160 "gram.y"
8677 {       yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
8678     break;}
8679 case 719:
8680 #line 4162 "gram.y"
8681 {       yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
8682     break;}
8683 case 720:
8684 #line 4164 "gram.y"
8685 {       yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
8686     break;}
8687 case 721:
8688 #line 4166 "gram.y"
8689 {       yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
8690     break;}
8691 case 722:
8692 #line 4168 "gram.y"
8693 {
8694                                         yyval.node = (Node *)yyvsp[-2].node;
8695                                         /* AexprConst can be either A_Const or ParamNo */
8696                                         if (nodeTag(yyvsp[-2].node) == T_A_Const) {
8697                                                 ((A_Const *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
8698                                         } else if (nodeTag(yyvsp[-2].node) == T_Param) {
8699                                                 ((ParamNo *)yyvsp[-2].node)->typename = yyvsp[0].typnam;
8700                                         /* otherwise, try to transform to a function call */
8701                                         } else {
8702                                                 FuncCall *n = makeNode(FuncCall);
8703                                                 n->funcname = yyvsp[0].typnam->name;
8704                                                 n->args = lcons(yyvsp[-2].node,NIL);
8705                                                 yyval.node = (Node *)n;
8706                                         }
8707                                 ;
8708     break;}
8709 case 723:
8710 #line 4184 "gram.y"
8711 {
8712                                         yyval.node = (Node *)yyvsp[-3].node;
8713                                         /* AexprConst can be either A_Const or ParamNo */
8714                                         if (nodeTag(yyvsp[-3].node) == T_A_Const) {
8715                                                 ((A_Const *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
8716                                         } else if (nodeTag(yyvsp[-3].node) == T_Param) {
8717                                                 ((ParamNo *)yyvsp[-3].node)->typename = yyvsp[-1].typnam;
8718                                         /* otherwise, try to transform to a function call */
8719                                         } else {
8720                                                 FuncCall *n = makeNode(FuncCall);
8721                                                 n->funcname = yyvsp[-1].typnam->name;
8722                                                 n->args = lcons(yyvsp[-3].node,NIL);
8723                                                 yyval.node = (Node *)n;
8724                                         }
8725                                 ;
8726     break;}
8727 case 724:
8728 #line 4200 "gram.y"
8729 {       yyval.node = yyvsp[-1].node; ;
8730     break;}
8731 case 725:
8732 #line 4202 "gram.y"
8733 {       yyval.node = makeA_Expr(OP, yyvsp[-1].str, yyvsp[-2].node, yyvsp[0].node); ;
8734     break;}
8735 case 726:
8736 #line 4204 "gram.y"
8737 {       yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
8738     break;}
8739 case 727:
8740 #line 4206 "gram.y"
8741 {       yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
8742     break;}
8743 case 728:
8744 #line 4208 "gram.y"
8745 {
8746                                         /* could be a column name or a relation_name */
8747                                         Ident *n = makeNode(Ident);
8748                                         n->name = yyvsp[0].str;
8749                                         n->indirection = NULL;
8750                                         yyval.node = (Node *)n;
8751                                 ;
8752     break;}
8753 case 729:
8754 #line 4216 "gram.y"
8755 {
8756                                         FuncCall *n = makeNode(FuncCall);
8757                                         n->funcname = yyvsp[-2].str;
8758                                         n->args = NIL;
8759                                         yyval.node = (Node *)n;
8760                                 ;
8761     break;}
8762 case 730:
8763 #line 4223 "gram.y"
8764 {
8765                                         FuncCall *n = makeNode(FuncCall);
8766                                         n->funcname = yyvsp[-3].str;
8767                                         n->args = yyvsp[-1].list;
8768                                         yyval.node = (Node *)n;
8769                                 ;
8770     break;}
8771 case 731:
8772 #line 4230 "gram.y"
8773 {
8774                                         FuncCall *n = makeNode(FuncCall);
8775                                         n->funcname = "strpos";
8776                                         n->args = yyvsp[-1].list;
8777                                         yyval.node = (Node *)n;
8778                                 ;
8779     break;}
8780 case 732:
8781 #line 4237 "gram.y"
8782 {
8783                                         FuncCall *n = makeNode(FuncCall);
8784                                         n->funcname = "substr";
8785                                         n->args = yyvsp[-1].list;
8786                                         yyval.node = (Node *)n;
8787                                 ;
8788     break;}
8789 case 733:
8790 #line 4245 "gram.y"
8791 {
8792                                         FuncCall *n = makeNode(FuncCall);
8793                                         n->funcname = "btrim";
8794                                         n->args = yyvsp[-1].list;
8795                                         yyval.node = (Node *)n;
8796                                 ;
8797     break;}
8798 case 734:
8799 #line 4252 "gram.y"
8800 {
8801                                         FuncCall *n = makeNode(FuncCall);
8802                                         n->funcname = "ltrim";
8803                                         n->args = yyvsp[-1].list;
8804                                         yyval.node = (Node *)n;
8805                                 ;
8806     break;}
8807 case 735:
8808 #line 4259 "gram.y"
8809 {
8810                                         FuncCall *n = makeNode(FuncCall);
8811                                         n->funcname = "rtrim";
8812                                         n->args = yyvsp[-1].list;
8813                                         yyval.node = (Node *)n;
8814                                 ;
8815     break;}
8816 case 736:
8817 #line 4266 "gram.y"
8818 {
8819                                         FuncCall *n = makeNode(FuncCall);
8820                                         n->funcname = "btrim";
8821                                         n->args = yyvsp[-1].list;
8822                                         yyval.node = (Node *)n;
8823                                 ;
8824     break;}
8825 case 737:
8826 #line 4275 "gram.y"
8827 {
8828                                         yyval.list = nconc(nconc(yyvsp[-2].list,yyvsp[-1].list),yyvsp[0].list);
8829                                 ;
8830     break;}
8831 case 738:
8832 #line 4279 "gram.y"
8833 {       yyval.list = NIL; ;
8834     break;}
8835 case 739:
8836 #line 4283 "gram.y"
8837 {       yyval.list = yyvsp[0].list; ;
8838     break;}
8839 case 740:
8840 #line 4285 "gram.y"
8841 {
8842                                         A_Const *n = makeNode(A_Const);
8843                                         n->val.type = T_Integer;
8844                                         n->val.val.ival = 1;
8845                                         yyval.list = lcons((Node *)n,NIL);
8846                                 ;
8847     break;}
8848 case 741:
8849 #line 4294 "gram.y"
8850 {       yyval.list = yyvsp[0].list; ;
8851     break;}
8852 case 742:
8853 #line 4296 "gram.y"
8854 {       yyval.list = NIL; ;
8855     break;}
8856 case 743:
8857 #line 4300 "gram.y"
8858 { yyval.list = lappend(yyvsp[0].list, yyvsp[-2].node); ;
8859     break;}
8860 case 744:
8861 #line 4302 "gram.y"
8862 { yyval.list = yyvsp[0].list; ;
8863     break;}
8864 case 745:
8865 #line 4304 "gram.y"
8866 { yyval.list = yyvsp[0].list; ;
8867     break;}
8868 case 746:
8869 #line 4308 "gram.y"
8870 {
8871                                         SubLink *n = makeNode(SubLink);
8872                                         n->subselect = yyvsp[0].node;
8873                                         yyval.node = (Node *)n;
8874                                 ;
8875     break;}
8876 case 747:
8877 #line 4314 "gram.y"
8878 {       yyval.node = yyvsp[0].node; ;
8879     break;}
8880 case 748:
8881 #line 4318 "gram.y"
8882 {       yyval.node = makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node); ;
8883     break;}
8884 case 749:
8885 #line 4320 "gram.y"
8886 {       yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node,
8887                                                 makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node));
8888                                 ;
8889     break;}
8890 case 750:
8891 #line 4326 "gram.y"
8892 {
8893                                         SubLink *n = makeNode(SubLink);
8894                                         n->subselect = yyvsp[0].node;
8895                                         yyval.node = (Node *)n;
8896                                 ;
8897     break;}
8898 case 751:
8899 #line 4332 "gram.y"
8900 {       yyval.node = yyvsp[0].node; ;
8901     break;}
8902 case 752:
8903 #line 4336 "gram.y"
8904 {       yyval.node = makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node); ;
8905     break;}
8906 case 753:
8907 #line 4338 "gram.y"
8908 {       yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node,
8909                                                 makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node));
8910                                 ;
8911     break;}
8912 case 754:
8913 #line 4344 "gram.y"
8914 {
8915                                         yyval.attr = makeNode(Attr);
8916                                         yyval.attr->relname = yyvsp[-2].str;
8917                                         yyval.attr->paramNo = NULL;
8918                                         yyval.attr->attrs = yyvsp[0].list;
8919                                         yyval.attr->indirection = NULL;
8920                                 ;
8921     break;}
8922 case 755:
8923 #line 4352 "gram.y"
8924 {
8925                                         yyval.attr = makeNode(Attr);
8926                                         yyval.attr->relname = NULL;
8927                                         yyval.attr->paramNo = yyvsp[-2].paramno;
8928                                         yyval.attr->attrs = yyvsp[0].list;
8929                                         yyval.attr->indirection = NULL;
8930                                 ;
8931     break;}
8932 case 756:
8933 #line 4362 "gram.y"
8934 { yyval.list = lcons(makeString(yyvsp[0].str), NIL); ;
8935     break;}
8936 case 757:
8937 #line 4364 "gram.y"
8938 { yyval.list = lappend(yyvsp[-2].list, makeString(yyvsp[0].str)); ;
8939     break;}
8940 case 758:
8941 #line 4366 "gram.y"
8942 { yyval.list = lappend(yyvsp[-2].list, makeString("*")); ;
8943     break;}
8944 case 759:
8945 #line 4377 "gram.y"
8946 {       yyval.list = lappend(yyvsp[-2].list,yyvsp[0].target);  ;
8947     break;}
8948 case 760:
8949 #line 4379 "gram.y"
8950 {       yyval.list = lcons(yyvsp[0].target, NIL);  ;
8951     break;}
8952 case 761:
8953 #line 4381 "gram.y"
8954 {
8955                                         ResTarget *rt = makeNode(ResTarget);
8956                                         Attr *att = makeNode(Attr);
8957                                         att->relname = "*";
8958                                         att->paramNo = NULL;
8959                                         att->attrs = NULL;
8960                                         att->indirection = NIL;
8961                                         rt->name = NULL;
8962                                         rt->indirection = NULL;
8963                                         rt->val = (Node *)att;
8964                                         yyval.list = lcons(rt, NIL);
8965                                 ;
8966     break;}
8967 case 762:
8968 #line 4396 "gram.y"
8969 {
8970                                         yyval.target = makeNode(ResTarget);
8971                                         yyval.target->name = yyvsp[-3].str;
8972                                         yyval.target->indirection = yyvsp[-2].list;
8973                                         yyval.target->val = (Node *)yyvsp[0].node;
8974                                 ;
8975     break;}
8976 case 763:
8977 #line 4403 "gram.y"
8978 {
8979                                         yyval.target = makeNode(ResTarget);
8980                                         yyval.target->name = NULL;
8981                                         yyval.target->indirection = yyvsp[0].list;
8982                                         yyval.target->val = (Node *)yyvsp[-1].attr;
8983                                 ;
8984     break;}
8985 case 764:
8986 #line 4410 "gram.y"
8987 {
8988                                         Attr *att = makeNode(Attr);
8989                                         att->relname = yyvsp[-2].str;
8990                                         att->paramNo = NULL;
8991                                         att->attrs = lcons(makeString("*"), NIL);
8992                                         att->indirection = NIL;
8993                                         yyval.target = makeNode(ResTarget);
8994                                         yyval.target->name = NULL;
8995                                         yyval.target->indirection = NULL;
8996                                         yyval.target->val = (Node *)att;
8997                                 ;
8998     break;}
8999 case 765:
9000 #line 4429 "gram.y"
9001 {       yyval.list = lappend(yyvsp[-2].list, yyvsp[0].target);  ;
9002     break;}
9003 case 766:
9004 #line 4431 "gram.y"
9005 {       yyval.list = lcons(yyvsp[0].target, NIL);  ;
9006     break;}
9007 case 767:
9008 #line 4436 "gram.y"
9009 {
9010                                         yyval.target = makeNode(ResTarget);
9011                                         yyval.target->name = yyvsp[0].str;
9012                                         yyval.target->indirection = NULL;
9013                                         yyval.target->val = (Node *)yyvsp[-2].node;
9014                                 ;
9015     break;}
9016 case 768:
9017 #line 4443 "gram.y"
9018 {
9019                                         yyval.target = makeNode(ResTarget);
9020                                         yyval.target->name = NULL;
9021                                         yyval.target->indirection = NULL;
9022                                         yyval.target->val = (Node *)yyvsp[0].node;
9023                                 ;
9024     break;}
9025 case 769:
9026 #line 4450 "gram.y"
9027 {
9028                                         Attr *att = makeNode(Attr);
9029                                         att->relname = yyvsp[-2].str;
9030                                         att->paramNo = NULL;
9031                                         att->attrs = lcons(makeString("*"), NIL);
9032                                         att->indirection = NIL;
9033                                         yyval.target = makeNode(ResTarget);
9034                                         yyval.target->name = NULL;
9035                                         yyval.target->indirection = NULL;
9036                                         yyval.target->val = (Node *)att;
9037                                 ;
9038     break;}
9039 case 770:
9040 #line 4462 "gram.y"
9041 {
9042                                         Attr *att = makeNode(Attr);
9043                                         att->relname = "*";
9044                                         att->paramNo = NULL;
9045                                         att->attrs = NULL;
9046                                         att->indirection = NIL;
9047                                         yyval.target = makeNode(ResTarget);
9048                                         yyval.target->name = NULL;
9049                                         yyval.target->indirection = NULL;
9050                                         yyval.target->val = (Node *)att;
9051                                 ;
9052     break;}
9053 case 771:
9054 #line 4475 "gram.y"
9055 { yyval.str = yyvsp[0].str; ;
9056     break;}
9057 case 772:
9058 #line 4476 "gram.y"
9059 { yyval.str = NULL; ;
9060     break;}
9061 case 773:
9062 #line 4480 "gram.y"
9063 {
9064                                         yyval.str = yyvsp[0].str;
9065                                         StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
9066                                 ;
9067     break;}
9068 case 774:
9069 #line 4485 "gram.y"
9070 {
9071                                         /* disallow refs to variable system tables */
9072                                         if (strcmp(LogRelationName, yyvsp[0].str) == 0
9073                                            || strcmp(VariableRelationName, yyvsp[0].str) == 0)
9074                                                 elog(ERROR,"%s cannot be accessed by users",yyvsp[0].str);
9075                                         else
9076                                                 yyval.str = yyvsp[0].str;
9077                                         StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
9078                                 ;
9079     break;}
9080 case 775:
9081 #line 4496 "gram.y"
9082 { yyval.str = yyvsp[0].str; ;
9083     break;}
9084 case 776:
9085 #line 4497 "gram.y"
9086 { yyval.str = yyvsp[0].str; ;
9087     break;}
9088 case 777:
9089 #line 4498 "gram.y"
9090 { yyval.str = yyvsp[0].str; ;
9091     break;}
9092 case 778:
9093 #line 4499 "gram.y"
9094 { yyval.str = yyvsp[0].str; ;
9095     break;}
9096 case 779:
9097 #line 4500 "gram.y"
9098 { yyval.str = yyvsp[0].str; ;
9099     break;}
9100 case 780:
9101 #line 4506 "gram.y"
9102 { yyval.str = yyvsp[0].str; ;
9103     break;}
9104 case 781:
9105 #line 4507 "gram.y"
9106 { yyval.str = xlateSqlFunc(yyvsp[0].str); ;
9107     break;}
9108 case 782:
9109 #line 4509 "gram.y"
9110 { yyval.str = yyvsp[0].str; ;
9111     break;}
9112 case 783:
9113 #line 4510 "gram.y"
9114 { yyval.str = yyvsp[0].str; ;
9115     break;}
9116 case 784:
9117 #line 4516 "gram.y"
9118 {
9119                                         A_Const *n = makeNode(A_Const);
9120                                         n->val.type = T_Integer;
9121                                         n->val.val.ival = yyvsp[0].ival;
9122                                         yyval.node = (Node *)n;
9123                                 ;
9124     break;}
9125 case 785:
9126 #line 4523 "gram.y"
9127 {
9128                                         A_Const *n = makeNode(A_Const);
9129                                         n->val.type = T_Float;
9130                                         n->val.val.dval = yyvsp[0].dval;
9131                                         yyval.node = (Node *)n;
9132                                 ;
9133     break;}
9134 case 786:
9135 #line 4530 "gram.y"
9136 {
9137                                         A_Const *n = makeNode(A_Const);
9138                                         n->val.type = T_String;
9139                                         n->val.val.str = yyvsp[0].str;
9140                                         yyval.node = (Node *)n;
9141                                 ;
9142     break;}
9143 case 787:
9144 #line 4537 "gram.y"
9145 {
9146                                         A_Const *n = makeNode(A_Const);
9147                                         n->typename = yyvsp[-1].typnam;
9148                                         n->val.type = T_String;
9149                                         n->val.val.str = yyvsp[0].str;
9150                                         yyval.node = (Node *)n;
9151                                 ;
9152     break;}
9153 case 788:
9154 #line 4545 "gram.y"
9155 {       yyval.node = (Node *)yyvsp[0].paramno;  ;
9156     break;}
9157 case 789:
9158 #line 4547 "gram.y"
9159 {
9160                                         A_Const *n = makeNode(A_Const);
9161                                         n->val.type = T_String;
9162                                         n->val.val.str = "t";
9163                                         n->typename = makeNode(TypeName);
9164                                         n->typename->name = xlateSqlType("bool");
9165                                         n->typename->typmod = -1;
9166                                         yyval.node = (Node *)n;
9167                                 ;
9168     break;}
9169 case 790:
9170 #line 4557 "gram.y"
9171 {
9172                                         A_Const *n = makeNode(A_Const);
9173                                         n->val.type = T_String;
9174                                         n->val.val.str = "f";
9175                                         n->typename = makeNode(TypeName);
9176                                         n->typename->name = xlateSqlType("bool");
9177                                         n->typename->typmod = -1;
9178                                         yyval.node = (Node *)n;
9179                                 ;
9180     break;}
9181 case 791:
9182 #line 4569 "gram.y"
9183 {
9184                                         yyval.paramno = makeNode(ParamNo);
9185                                         yyval.paramno->number = yyvsp[0].ival;
9186                                 ;
9187     break;}
9188 case 792:
9189 #line 4575 "gram.y"
9190 { yyval.value = makeInteger(yyvsp[0].ival); ;
9191     break;}
9192 case 793:
9193 #line 4576 "gram.y"
9194 { yyval.value = makeFloat(yyvsp[0].dval); ;
9195     break;}
9196 case 794:
9197 #line 4579 "gram.y"
9198 { yyval.ival = yyvsp[0].ival; ;
9199     break;}
9200 case 795:
9201 #line 4580 "gram.y"
9202 { yyval.str = yyvsp[0].str; ;
9203     break;}
9204 case 796:
9205 #line 4581 "gram.y"
9206 { yyval.str = yyvsp[0].str; ;
9207     break;}
9208 case 797:
9209 #line 4589 "gram.y"
9210 {       yyval.str = xlateSqlType(yyvsp[0].str); ;
9211     break;}
9212 case 798:
9213 #line 4591 "gram.y"
9214 {       yyval.str = xlateSqlType(yyvsp[0].str); ;
9215     break;}
9216 case 799:
9217 #line 4593 "gram.y"
9218 {       yyval.str = xlateSqlType(yyvsp[0].str); ;
9219     break;}
9220 case 800:
9221 #line 4603 "gram.y"
9222 { yyval.str = yyvsp[0].str; ;
9223     break;}
9224 case 801:
9225 #line 4604 "gram.y"
9226 { yyval.str = yyvsp[0].str; ;
9227     break;}
9228 case 802:
9229 #line 4605 "gram.y"
9230 { yyval.str = "action"; ;
9231     break;}
9232 case 803:
9233 #line 4606 "gram.y"
9234 { yyval.str = "database"; ;
9235     break;}
9236 case 804:
9237 #line 4607 "gram.y"
9238 { yyval.str = "delimiters"; ;
9239     break;}
9240 case 805:
9241 #line 4608 "gram.y"
9242 { yyval.str = "double"; ;
9243     break;}
9244 case 806:
9245 #line 4609 "gram.y"
9246 { yyval.str = "each"; ;
9247     break;}
9248 case 807:
9249 #line 4610 "gram.y"
9250 { yyval.str = "function"; ;
9251     break;}
9252 case 808:
9253 #line 4611 "gram.y"
9254 { yyval.str = "index"; ;
9255     break;}
9256 case 809:
9257 #line 4612 "gram.y"
9258 { yyval.str = "key"; ;
9259     break;}
9260 case 810:
9261 #line 4613 "gram.y"
9262 { yyval.str = "language"; ;
9263     break;}
9264 case 811:
9265 #line 4614 "gram.y"
9266 { yyval.str = "location"; ;
9267     break;}
9268 case 812:
9269 #line 4615 "gram.y"
9270 { yyval.str = "match"; ;
9271     break;}
9272 case 813:
9273 #line 4616 "gram.y"
9274 { yyval.str = "operator"; ;
9275     break;}
9276 case 814:
9277 #line 4617 "gram.y"
9278 { yyval.str = "option"; ;
9279     break;}
9280 case 815:
9281 #line 4618 "gram.y"
9282 { yyval.str = "privileges"; ;
9283     break;}
9284 case 816:
9285 #line 4619 "gram.y"
9286 { yyval.str = "recipe"; ;
9287     break;}
9288 case 817:
9289 #line 4620 "gram.y"
9290 { yyval.str = "row"; ;
9291     break;}
9292 case 818:
9293 #line 4621 "gram.y"
9294 { yyval.str = "statement"; ;
9295     break;}
9296 case 819:
9297 #line 4622 "gram.y"
9298 { yyval.str = "time"; ;
9299     break;}
9300 case 820:
9301 #line 4623 "gram.y"
9302 { yyval.str = "trigger"; ;
9303     break;}
9304 case 821:
9305 #line 4624 "gram.y"
9306 { yyval.str = "type"; ;
9307     break;}
9308 case 822:
9309 #line 4625 "gram.y"
9310 { yyval.str = "user"; ;
9311     break;}
9312 case 823:
9313 #line 4626 "gram.y"
9314 { yyval.str = "valid"; ;
9315     break;}
9316 case 824:
9317 #line 4627 "gram.y"
9318 { yyval.str = "version"; ;
9319     break;}
9320 case 825:
9321 #line 4628 "gram.y"
9322 { yyval.str = "zone"; ;
9323     break;}
9324 case 826:
9325 #line 4641 "gram.y"
9326 { yyval.str = yyvsp[0].str; ;
9327     break;}
9328 case 827:
9329 #line 4642 "gram.y"
9330 { yyval.str = "archive"; ;
9331     break;}
9332 case 828:
9333 #line 4643 "gram.y"
9334 { yyval.str = "cluster"; ;
9335     break;}
9336 case 829:
9337 #line 4644 "gram.y"
9338 { yyval.str = "constraint"; ;
9339     break;}
9340 case 830:
9341 #line 4645 "gram.y"
9342 { yyval.str = "cross"; ;
9343     break;}
9344 case 831:
9345 #line 4646 "gram.y"
9346 { yyval.str = "foreign"; ;
9347     break;}
9348 case 832:
9349 #line 4647 "gram.y"
9350 { yyval.str = "group"; ;
9351     break;}
9352 case 833:
9353 #line 4648 "gram.y"
9354 { yyval.str = "load"; ;
9355     break;}
9356 case 834:
9357 #line 4649 "gram.y"
9358 { yyval.str = "order"; ;
9359     break;}
9360 case 835:
9361 #line 4650 "gram.y"
9362 { yyval.str = "position"; ;
9363     break;}
9364 case 836:
9365 #line 4651 "gram.y"
9366 { yyval.str = "precision"; ;
9367     break;}
9368 case 837:
9369 #line 4652 "gram.y"
9370 { yyval.str = "table"; ;
9371     break;}
9372 case 838:
9373 #line 4653 "gram.y"
9374 { yyval.str = "transaction"; ;
9375     break;}
9376 case 839:
9377 #line 4654 "gram.y"
9378 { yyval.str = "true"; ;
9379     break;}
9380 case 840:
9381 #line 4655 "gram.y"
9382 { yyval.str = "false"; ;
9383     break;}
9384 case 841:
9385 #line 4659 "gram.y"
9386 {
9387                                         if (QueryIsRule)
9388                                                 yyval.str = "*CURRENT*";
9389                                         else
9390                                                 elog(ERROR,"CURRENT used in non-rule query");
9391                                 ;
9392     break;}
9393 case 842:
9394 #line 4666 "gram.y"
9395 {
9396                                         if (QueryIsRule)
9397                                                 yyval.str = "*NEW*";
9398                                         else
9399                                                 elog(ERROR,"NEW used in non-rule query");
9400                                 ;
9401     break;}
9402 }
9403    /* the action file gets copied in in place of this dollarsign */
9404 #line 498 "/usr/share/misc/bison.simple"
9405 \f
9406   yyvsp -= yylen;
9407   yyssp -= yylen;
9408 #ifdef YYLSP_NEEDED
9409   yylsp -= yylen;
9410 #endif
9411
9412 #if YYDEBUG != 0
9413   if (yydebug)
9414     {
9415       short *ssp1 = yyss - 1;
9416       fprintf (stderr, "state stack now");
9417       while (ssp1 != yyssp)
9418         fprintf (stderr, " %d", *++ssp1);
9419       fprintf (stderr, "\n");
9420     }
9421 #endif
9422
9423   *++yyvsp = yyval;
9424
9425 #ifdef YYLSP_NEEDED
9426   yylsp++;
9427   if (yylen == 0)
9428     {
9429       yylsp->first_line = yylloc.first_line;
9430       yylsp->first_column = yylloc.first_column;
9431       yylsp->last_line = (yylsp-1)->last_line;
9432       yylsp->last_column = (yylsp-1)->last_column;
9433       yylsp->text = 0;
9434     }
9435   else
9436     {
9437       yylsp->last_line = (yylsp+yylen-1)->last_line;
9438       yylsp->last_column = (yylsp+yylen-1)->last_column;
9439     }
9440 #endif
9441
9442   /* Now "shift" the result of the reduction.
9443      Determine what state that goes to,
9444      based on the state we popped back to
9445      and the rule number reduced by.  */
9446
9447   yyn = yyr1[yyn];
9448
9449   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
9450   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
9451     yystate = yytable[yystate];
9452   else
9453     yystate = yydefgoto[yyn - YYNTBASE];
9454
9455   goto yynewstate;
9456
9457 yyerrlab:   /* here on detecting error */
9458
9459   if (! yyerrstatus)
9460     /* If not already recovering from an error, report this error.  */
9461     {
9462       ++yynerrs;
9463
9464 #ifdef YYERROR_VERBOSE
9465       yyn = yypact[yystate];
9466
9467       if (yyn > YYFLAG && yyn < YYLAST)
9468         {
9469           int size = 0;
9470           char *msg;
9471           int x, count;
9472
9473           count = 0;
9474           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
9475           for (x = (yyn < 0 ? -yyn : 0);
9476                x < (sizeof(yytname) / sizeof(char *)); x++)
9477             if (yycheck[x + yyn] == x)
9478               size += strlen(yytname[x]) + 15, count++;
9479           msg = (char *) malloc(size + 15);
9480           if (msg != 0)
9481             {
9482               strcpy(msg, "parse error");
9483
9484               if (count < 5)
9485                 {
9486                   count = 0;
9487                   for (x = (yyn < 0 ? -yyn : 0);
9488                        x < (sizeof(yytname) / sizeof(char *)); x++)
9489                     if (yycheck[x + yyn] == x)
9490                       {
9491                         strcat(msg, count == 0 ? ", expecting `" : " or `");
9492                         strcat(msg, yytname[x]);
9493                         strcat(msg, "'");
9494                         count++;
9495                       }
9496                 }
9497               yyerror(msg);
9498               free(msg);
9499             }
9500           else
9501             yyerror ("parse error; also virtual memory exceeded");
9502         }
9503       else
9504 #endif /* YYERROR_VERBOSE */
9505         yyerror("parse error");
9506     }
9507
9508   goto yyerrlab1;
9509 yyerrlab1:   /* here on error raised explicitly by an action */
9510
9511   if (yyerrstatus == 3)
9512     {
9513       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
9514
9515       /* return failure if at end of input */
9516       if (yychar == YYEOF)
9517         YYABORT;
9518
9519 #if YYDEBUG != 0
9520       if (yydebug)
9521         fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
9522 #endif
9523
9524       yychar = YYEMPTY;
9525     }
9526
9527   /* Else will try to reuse lookahead token
9528      after shifting the error token.  */
9529
9530   yyerrstatus = 3;              /* Each real token shifted decrements this */
9531
9532   goto yyerrhandle;
9533
9534 yyerrdefault:  /* current state does not do anything special for the error token. */
9535
9536 #if 0
9537   /* This is wrong; only states that explicitly want error tokens
9538      should shift them.  */
9539   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
9540   if (yyn) goto yydefault;
9541 #endif
9542
9543 yyerrpop:   /* pop the current state because it cannot handle the error token */
9544
9545   if (yyssp == yyss) YYABORT;
9546   yyvsp--;
9547   yystate = *--yyssp;
9548 #ifdef YYLSP_NEEDED
9549   yylsp--;
9550 #endif
9551
9552 #if YYDEBUG != 0
9553   if (yydebug)
9554     {
9555       short *ssp1 = yyss - 1;
9556       fprintf (stderr, "Error: state stack now");
9557       while (ssp1 != yyssp)
9558         fprintf (stderr, " %d", *++ssp1);
9559       fprintf (stderr, "\n");
9560     }
9561 #endif
9562
9563 yyerrhandle:
9564
9565   yyn = yypact[yystate];
9566   if (yyn == YYFLAG)
9567     goto yyerrdefault;
9568
9569   yyn += YYTERROR;
9570   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
9571     goto yyerrdefault;
9572
9573   yyn = yytable[yyn];
9574   if (yyn < 0)
9575     {
9576       if (yyn == YYFLAG)
9577         goto yyerrpop;
9578       yyn = -yyn;
9579       goto yyreduce;
9580     }
9581   else if (yyn == 0)
9582     goto yyerrpop;
9583
9584   if (yyn == YYFINAL)
9585     YYACCEPT;
9586
9587 #if YYDEBUG != 0
9588   if (yydebug)
9589     fprintf(stderr, "Shifting error token, ");
9590 #endif
9591
9592   *++yyvsp = yylval;
9593 #ifdef YYLSP_NEEDED
9594   *++yylsp = yylloc;
9595 #endif
9596
9597   yystate = yyn;
9598   goto yynewstate;
9599 }
9600 #line 4674 "gram.y"
9601
9602
9603 static Node *
9604 makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr)
9605 {
9606         A_Expr *a = makeNode(A_Expr);
9607         a->oper = oper;
9608         a->opname = opname;
9609         a->lexpr = lexpr;
9610         a->rexpr = rexpr;
9611         return (Node *)a;
9612 }
9613
9614 /* makeRowExpr()
9615  * Generate separate operator nodes for a single row descriptor expression.
9616  * Perhaps this should go deeper in the parser someday... - thomas 1997-12-22
9617  */
9618 static Node *
9619 makeRowExpr(char *opr, List *largs, List *rargs)
9620 {
9621         Node *expr = NULL;
9622         Node *larg, *rarg;
9623
9624         if (length(largs) != length(rargs))
9625                 elog(ERROR,"Unequal number of entries in row expression");
9626
9627         if (lnext(largs) != NIL)
9628                 expr = makeRowExpr(opr,lnext(largs),lnext(rargs));
9629
9630         larg = lfirst(largs);
9631         rarg = lfirst(rargs);
9632
9633         if ((strcmp(opr, "=") == 0)
9634          || (strcmp(opr, "<") == 0)
9635          || (strcmp(opr, "<=") == 0)
9636          || (strcmp(opr, ">") == 0)
9637          || (strcmp(opr, ">=") == 0))
9638         {
9639                 if (expr == NULL)
9640                         expr = makeA_Expr(OP, opr, larg, rarg);
9641                 else
9642                         expr = makeA_Expr(AND, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9643         }
9644         else if (strcmp(opr, "<>") == 0)
9645         {
9646                 if (expr == NULL)
9647                         expr = makeA_Expr(OP, opr, larg, rarg);
9648                 else
9649                         expr = makeA_Expr(OR, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9650         }
9651         else
9652         {
9653                 elog(ERROR,"Operator '%s' not implemented for row expressions",opr);
9654         }
9655
9656 #if FALSE
9657         while ((largs != NIL) && (rargs != NIL))
9658         {
9659                 larg = lfirst(largs);
9660                 rarg = lfirst(rargs);
9661
9662                 if (expr == NULL)
9663                         expr = makeA_Expr(OP, opr, larg, rarg);
9664                 else
9665                         expr = makeA_Expr(AND, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9666
9667                 largs = lnext(largs);
9668                 rargs = lnext(rargs);
9669         }
9670         pprint(expr);
9671 #endif
9672
9673         return expr;
9674 }
9675
9676 void
9677 mapTargetColumns(List *src, List *dst)
9678 {
9679         ColumnDef *s;
9680         ResTarget *d;
9681
9682         if (length(src) != length(dst))
9683                 elog(ERROR,"CREATE TABLE/AS SELECT has mismatched column count");
9684
9685         while ((src != NIL) && (dst != NIL))
9686         {
9687                 s = (ColumnDef *)lfirst(src);
9688                 d = (ResTarget *)lfirst(dst);
9689
9690                 d->name = s->colname;
9691
9692                 src = lnext(src);
9693                 dst = lnext(dst);
9694         }
9695
9696         return;
9697 } /* mapTargetColumns() */
9698
9699 static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr)
9700 {
9701         Node *result = NULL;
9702
9703         /* we do this so indexes can be used */
9704         if (strcmp(opname,"~") == 0 ||
9705                 strcmp(opname,"~*") == 0)
9706         {
9707                 if (nodeTag(rexpr) == T_A_Const &&
9708                    ((A_Const *)rexpr)->val.type == T_String &&
9709                    ((A_Const *)rexpr)->val.val.str[0] == '^')
9710                 {
9711                         A_Const *n = (A_Const *)rexpr;
9712                         char *match_least = palloc(strlen(n->val.val.str)+2);
9713                         char *match_most = palloc(strlen(n->val.val.str)+2);
9714                         int pos, match_pos=0;
9715
9716                         /* skip leading ^ */
9717                         for (pos = 1; n->val.val.str[pos]; pos++)
9718                         {
9719                                 if (n->val.val.str[pos] == '.' ||
9720                                         n->val.val.str[pos] == '?' ||
9721                                         n->val.val.str[pos] == '*' ||
9722                                         n->val.val.str[pos] == '[' ||
9723                                         n->val.val.str[pos] == '$' ||
9724                                         (strcmp(opname,"~*") == 0 && isalpha(n->val.val.str[pos])))
9725                                 break;
9726                         if (n->val.val.str[pos] == '\\')
9727                                         pos++;
9728                                 match_least[match_pos] = n->val.val.str[pos];
9729                                 match_most[match_pos++] = n->val.val.str[pos];
9730                         }
9731
9732                         if (match_pos != 0)
9733                         {
9734                                 A_Const *least = makeNode(A_Const);
9735                                 A_Const *most = makeNode(A_Const);
9736                                 
9737                                 /* make strings to be used in index use */
9738                                 match_least[match_pos] = '\0';
9739                                 match_most[match_pos] = '\377';
9740                                 match_most[match_pos+1] = '\0';
9741                                 least->val.type = T_String;
9742                                 least->val.val.str = match_least;
9743                                 most->val.type = T_String;
9744                                 most->val.val.str = match_most;
9745                                 result = makeA_Expr(AND, NULL,
9746                                                 makeA_Expr(OP, "~", lexpr, rexpr),
9747                                                 makeA_Expr(AND, NULL,
9748                                                         makeA_Expr(OP, ">=", lexpr, (Node *)least),
9749                                                         makeA_Expr(OP, "<=", lexpr, (Node *)most)));
9750                         }
9751                 }
9752         }
9753         else if (strcmp(opname,"~~") == 0)
9754         {
9755                 if (nodeTag(rexpr) == T_A_Const &&
9756                    ((A_Const *)rexpr)->val.type == T_String)
9757                 {
9758                         A_Const *n = (A_Const *)rexpr;
9759                         char *match_least = palloc(strlen(n->val.val.str)+2);
9760                         char *match_most = palloc(strlen(n->val.val.str)+2);
9761                         int pos, match_pos=0;
9762         
9763                         for (pos = 0; n->val.val.str[pos]; pos++)
9764                         {
9765                                 if ((n->val.val.str[pos] == '%' &&
9766                                          n->val.val.str[pos+1] != '%') ||
9767                                     (n->val.val.str[pos] == '_' &&
9768                                  n->val.val.str[pos+1] != '_'))
9769                                 break;
9770                         if (n->val.val.str[pos] == '%' ||
9771                                     n->val.val.str[pos] == '_' ||
9772                                     n->val.val.str[pos] == '\\')
9773                                         pos++;
9774                                 match_least[match_pos] = n->val.val.str[pos];
9775                                 match_most[match_pos++] = n->val.val.str[pos];
9776                         }
9777         
9778                         if (match_pos != 0)
9779                         {
9780                                 A_Const *least = makeNode(A_Const);
9781                                 A_Const *most = makeNode(A_Const);
9782                                 
9783                                 /* make strings to be used in index use */
9784                                 match_least[match_pos] = '\0';
9785                                 match_most[match_pos] = '\377';
9786                                 match_most[match_pos+1] = '\0';
9787                                 least->val.type = T_String;
9788                                 least->val.val.str = match_least;
9789                                 most->val.type = T_String;
9790                                 most->val.val.str = match_most;
9791                                 result = makeA_Expr(AND, NULL,
9792                                                 makeA_Expr(OP, "~~", lexpr, rexpr),
9793                                                 makeA_Expr(AND, NULL,
9794                                                         makeA_Expr(OP, ">=", lexpr, (Node *)least),
9795                                                         makeA_Expr(OP, "<=", lexpr, (Node *)most)));
9796                         }
9797                 }
9798         }
9799         
9800         if (result == NULL)
9801                 result = makeA_Expr(OP, opname, lexpr, rexpr);
9802         return result;
9803 } /* makeIndexable() */
9804
9805
9806 /* xlateSqlFunc()
9807  * Convert alternate type names to internal Postgres types.
9808  * Do not convert "float", since that is handled elsewhere
9809  *  for FLOAT(p) syntax.
9810  */
9811 static char *
9812 xlateSqlFunc(char *name)
9813 {
9814         if (!strcasecmp(name,"character_length")
9815          || !strcasecmp(name,"char_length"))
9816                 return "length";
9817         else
9818                 return name;
9819 } /* xlateSqlFunc() */
9820
9821 /* xlateSqlType()
9822  * Convert alternate type names to internal Postgres types.
9823  */
9824 static char *
9825 xlateSqlType(char *name)
9826 {
9827         if (!strcasecmp(name,"int")
9828          || !strcasecmp(name,"integer"))
9829                 return "int4";
9830         else if (!strcasecmp(name, "smallint"))
9831                 return "int2";
9832         else if (!strcasecmp(name, "real")
9833          || !strcasecmp(name, "float"))
9834                 return "float8";
9835         else if (!strcasecmp(name, "interval"))
9836                 return "timespan";
9837         else if (!strcasecmp(name, "boolean"))
9838                 return "bool";
9839         else
9840                 return name;
9841 } /* xlateSqlType() */
9842
9843
9844 void parser_init(Oid *typev, int nargs)
9845 {
9846         QueryIsRule = FALSE;
9847         saved_relname[0]= '\0';
9848         saved_In_Expr = NULL;
9849
9850         param_type_init(typev, nargs);
9851 }
9852
9853
9854 /* FlattenStringList()
9855  * Traverse list of string nodes and convert to a single string.
9856  * Used for reconstructing string form of complex expressions.
9857  *
9858  * Allocate at least one byte for terminator.
9859  */
9860 static char *
9861 FlattenStringList(List *list)
9862 {
9863         List *l;
9864         Value *v;
9865         char *s;
9866         char *sp;
9867         int nlist, len = 0;
9868
9869         nlist = length(list);
9870         l = list;
9871         while(l != NIL) {
9872                 v = (Value *)lfirst(l);
9873                 sp = v->val.str;
9874                 l = lnext(l);
9875                 len += strlen(sp);
9876         };
9877         len += nlist;
9878
9879         s = (char*) palloc(len+1);
9880         *s = '\0';
9881
9882         l = list;
9883         while(l != NIL) {
9884                 v = (Value *)lfirst(l);
9885                 sp = v->val.str;
9886                 l = lnext(l);
9887                 strcat(s,sp);
9888                 if (l != NIL) strcat(s," ");
9889         };
9890         *(s+len) = '\0';
9891
9892 #ifdef PARSEDEBUG
9893 printf( "flattened string is \"%s\"\n", s);
9894 #endif
9895
9896         return(s);
9897 } /* FlattenStringList() */
9898
9899
9900 /* makeConstantList()
9901  * Convert constant value node into string node.
9902  */
9903 static List *
9904 makeConstantList( A_Const *n)
9905 {
9906         char *defval = NULL;
9907         if (nodeTag(n) != T_A_Const) {
9908                 elog(ERROR,"Cannot handle non-constant parameter");
9909
9910         } else if (n->val.type == T_Float) {
9911                 defval = (char*) palloc(20+1);
9912                 sprintf( defval, "%g", n->val.val.dval);
9913
9914         } else if (n->val.type == T_Integer) {
9915                 defval = (char*) palloc(20+1);
9916                 sprintf( defval, "%ld", n->val.val.ival);
9917
9918         } else if (n->val.type == T_String) {
9919                 defval = (char*) palloc(strlen( ((A_Const *) n)->val.val.str) + 3);
9920                 strcpy( defval, "'");
9921                 strcat( defval, ((A_Const *) n)->val.val.str);
9922                 strcat( defval, "'");
9923
9924         } else {
9925                 elog(ERROR,"Internal error in makeConstantList(): cannot encode node");
9926         };
9927
9928 #ifdef PARSEDEBUG
9929 printf( "AexprConst argument is \"%s\"\n", defval);
9930 #endif
9931
9932         return( lcons( makeString(defval), NIL));
9933 } /* makeConstantList() */
9934
9935
9936 /* fmtId()
9937  * Check input string for non-lowercase/non-numeric characters.
9938  * Returns either input string or input surrounded by double quotes.
9939  */
9940 static char *
9941 fmtId(char *rawid)
9942 {
9943         static char *cp;
9944
9945         for (cp = rawid; *cp != '\0'; cp++)
9946                 if (! (islower(*cp) || isdigit(*cp) || (*cp == '_'))) break;
9947
9948         if (*cp != '\0') {
9949                 cp = palloc(strlen(rawid)+1);
9950                 strcpy(cp,"\"");
9951                 strcat(cp,rawid);
9952                 strcat(cp,"\"");
9953         } else {
9954                 cp = rawid;
9955         };
9956
9957 #ifdef PARSEDEBUG
9958 printf("fmtId- %sconvert %s to %s\n", ((cp == rawid)? "do not ": ""), rawid, cp);
9959 #endif
9960
9961         return(cp);
9962 }
9963
9964 /*
9965  * param_type_init()
9966  *
9967  * keep enough information around fill out the type of param nodes
9968  * used in postquel functions
9969  */
9970 static void
9971 param_type_init(Oid *typev, int nargs)
9972 {
9973         pfunc_num_args = nargs;
9974         param_type_info = typev;
9975 }
9976
9977 Oid param_type(int t)
9978 {
9979         if ((t > pfunc_num_args) || (t == 0))
9980                 return InvalidOid;
9981         return param_type_info[t - 1];
9982 }