2 /* A Bison parser, made from gram.y
3 by GNU Bison version 1.25
6 #define YYBISON 1 /* Identify Bison output. */
16 #define BEGIN_TRANS 266
29 #define CONSTRAINT 279
33 #define CURRENT_DATE 283
34 #define CURRENT_TIME 284
35 #define CURRENT_TIMESTAMP 285
36 #define CURRENT_USER 286
94 #define PRIVILEGES 344
97 #define REFERENCES 347
104 #define SUBSTRING 354
107 #define TIMESTAMP 357
110 #define TRANSACTION 360
129 #define ABORT_TRANS 379
131 #define AGGREGATE 381
139 #define DELIMITERS 389
151 #define LANCOMPILER 401
163 #define PROCEDURAL 413
173 #define STATEMENT 423
184 #define NOCREATEDB 434
185 #define CREATEUSER 435
186 #define NOCREATEUSER 436
203 /*#define YYDEBUG 1*/
204 /*-------------------------------------------------------------------------
207 * POSTGRES SQL YACC rules/actions
209 * Copyright (c) 1994, Regents of the University of California
213 * $Header: /cvsroot/pgsql/src/backend/parser/Attic/gram.c,v 2.3 1998/02/27 02:40:36 scrappy Exp $
216 * AUTHOR DATE MAJOR EVENT
217 * Andrew Yu Sept, 1994 POSTQUEL to SQL conversion
218 * Andrew Yu Oct, 1994 lispy code conversion
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.
226 * if you use list, make sure the datum is a node so that the printing
230 * sometimes we assign constants to makeStrings. Make sure we don't free
233 *-------------------------------------------------------------------------
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"
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;
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
262 /*#define __YYSCLASS*/
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);
275 Oid param_type(int t); /* used in parse_expr.c */
277 /* old versions of flex define this as a macro */
290 bool* pboolean; /* for pg_shadow privileges */
300 SortGroupBy *sortgroupby;
324 #define YYFLAG -32768
327 #define YYTRANSLATE(x) ((unsigned)(x) <= 448 ? yytranslate[x] : 455)
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
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,
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,
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,
849 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
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
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,
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,
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
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,
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
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
1479 #define YYLAST 11334
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,
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,
3755 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
3756 #line 3 "/usr/share/misc/bison.simple"
3758 /* Skeleton output parser for bison,
3759 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
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)
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.
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. */
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. */
3782 #define alloca __builtin_alloca
3783 #else /* not GNU C. */
3784 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
3786 #else /* not sparc */
3787 #if defined (MSDOS) && !defined (__TURBOC__)
3789 #else /* not MSDOS, or __TURBOC__ */
3793 #else /* not MSDOS, __TURBOC__, or _AIX */
3797 void *alloca (unsigned int);
3799 #else /* not __cplusplus */
3801 #endif /* not __cplusplus */
3803 #endif /* not _AIX */
3804 #endif /* not MSDOS, or __TURBOC__ */
3805 #endif /* not sparc. */
3806 #endif /* not GNU C. */
3807 #endif /* alloca not defined. */
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. */
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. */
3818 #define yyerrok (yyerrstatus = 0)
3819 #define yyclearin (yychar = YYEMPTY)
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) \
3833 if (yychar == YYEMPTY && yylen == 1) \
3834 { yychar = (token), yylval = (value); \
3835 yychar1 = YYTRANSLATE (yychar); \
3840 { yyerror ("syntax error: cannot back up"); YYERROR; } \
3844 #define YYERRCODE 256
3847 #define YYLEX yylex()
3853 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
3855 #define YYLEX yylex(&yylval, &yylloc)
3857 #else /* not YYLSP_NEEDED */
3859 #define YYLEX yylex(&yylval, YYLEX_PARAM)
3861 #define YYLEX yylex(&yylval)
3863 #endif /* not YYLSP_NEEDED */
3866 /* If nonreentrant, generate the variables here */
3870 int yychar; /* the lookahead symbol */
3871 YYSTYPE yylval; /* the semantic value of the */
3872 /* lookahead symbol */
3875 YYLTYPE yylloc; /* location data for the lookahead */
3879 int yynerrs; /* number of parse errors so far */
3880 #endif /* not YYPURE */
3883 int yydebug; /* nonzero means print parse trace */
3884 /* Since this is uninitialized, it does not stop multiple parsers
3888 /* YYINITDEPTH indicates the initial size of the parser's stacks */
3891 #define YYINITDEPTH 200
3894 /* YYMAXDEPTH is the maximum size the stacks can grow to
3895 (effective only if the built-in stack extension method is used). */
3902 #define YYMAXDEPTH 10000
3905 /* Prevent warning if -Wstrict-prototypes. */
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++ */
3915 /* This is the most reliable way to avoid incompatibilities
3916 in available built-in functions on various systems. */
3918 __yy_memcpy (to, from, count)
3923 register char *f = from;
3924 register char *t = to;
3925 register int i = count;
3931 #else /* __cplusplus */
3933 /* This is the most reliable way to avoid incompatibilities
3934 in available built-in functions on various systems. */
3936 __yy_memcpy (char *to, char *from, int count)
3938 register char *f = from;
3939 register char *t = to;
3940 register int i = count;
3949 #line 196 "/usr/share/misc/bison.simple"
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. */
3957 #ifdef YYPARSE_PARAM
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 */
3971 yyparse(YYPARSE_PARAM_ARG)
3974 register int yystate;
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 */
3981 short yyssa[YYINITDEPTH]; /* the state stack */
3982 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
3984 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
3985 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
3988 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
3989 YYLTYPE *yyls = yylsa;
3992 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
3994 #define YYPOPSTACK (yyvsp--, yyssp--)
3997 int yystacksize = YYINITDEPTH;
4008 YYSTYPE yyval; /* the variable used to return */
4009 /* semantic values from the action */
4016 fprintf(stderr, "Starting parse\n");
4022 yychar = YYEMPTY; /* Cause a token to be read. */
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. */
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. */
4042 if (yyssp >= yyss + yystacksize - 1)
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;
4049 YYLTYPE *yyls1 = yyls;
4052 /* Get the current used size of the three stacks, in elements. */
4053 int size = yyssp - yyss + 1;
4056 /* Each stack pointer address is followed by the size of
4057 the data in use in that stack, in bytes. */
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),
4067 yyoverflow("parser stack overflow",
4068 &yyss1, size * sizeof (*yyssp),
4069 &yyvs1, size * sizeof (*yyvsp),
4073 yyss = yyss1; yyvs = yyvs1;
4077 #else /* no yyoverflow */
4078 /* Extend the stack our own way. */
4079 if (yystacksize >= YYMAXDEPTH)
4081 yyerror("parser stack overflow");
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));
4092 yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
4093 __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
4095 #endif /* no yyoverflow */
4097 yyssp = yyss + size - 1;
4098 yyvsp = yyvs + size - 1;
4100 yylsp = yyls + size - 1;
4105 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
4108 if (yyssp >= yyss + yystacksize - 1)
4114 fprintf(stderr, "Entering state %d\n", yystate);
4120 /* Do appropriate processing given the current state. */
4121 /* Read a lookahead token if we need one and don't already have one. */
4124 /* First try to decide what to do without reference to lookahead token. */
4126 yyn = yypact[yystate];
4130 /* Not known => get a lookahead token if don't already have one. */
4132 /* yychar is either YYEMPTY or YYEOF
4133 or a valid token in external form. */
4135 if (yychar == YYEMPTY)
4139 fprintf(stderr, "Reading a token: ");
4144 /* Convert token to internal form (in yychar1) for indexing tables with */
4146 if (yychar <= 0) /* This means end of input. */
4149 yychar = YYEOF; /* Don't call YYLEX any more */
4153 fprintf(stderr, "Now at end of input.\n");
4158 yychar1 = YYTRANSLATE(yychar);
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. */
4167 YYPRINT (stderr, yychar, yylval);
4169 fprintf (stderr, ")\n");
4175 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
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. */
4200 /* Shift the lookahead token. */
4204 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
4207 /* Discard the token being shifted unless it is eof. */
4208 if (yychar != YYEOF)
4216 /* count tokens shifted since error; after three, turn off error status. */
4217 if (yyerrstatus) yyerrstatus--;
4222 /* Do the default action for the current state. */
4225 yyn = yydefact[yystate];
4229 /* Do a reduction. yyn is the number of a rule to reduce with. */
4233 yyval = yyvsp[1-yylen]; /* implement default value of the action */
4240 fprintf (stderr, "Reducing via rule %d (line %d), ",
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]]);
4255 { parsetree = yyvsp[0].list; ;
4259 { parsetree = lcons(yyvsp[0].node,NIL); ;
4263 { yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
4267 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
4271 { yyval.list = lcons(yyvsp[-1].node,NIL); ;
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;
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;
4302 DropUserStmt *n = makeNode(DropUserStmt);
4303 n->user = yyvsp[0].str;
4304 yyval.node = (Node *)n;
4309 { yyval.str = yyvsp[0].str; ;
4313 { yyval.str = NULL; ;
4319 yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4327 yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4333 { yyval.pboolean = NULL; ;
4339 yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4347 yyval.pboolean = (b = (bool*)palloc(sizeof(bool)));
4353 { yyval.pboolean = NULL; ;
4358 yyval.list = lcons((void*)makeString(yyvsp[0].str), yyvsp[-2].list);
4364 yyval.list = lcons((void*)makeString(yyvsp[0].str), NIL);
4369 { yyval.list = yyvsp[0].list; ;
4373 { yyval.list = NULL; ;
4377 { yyval.str = yyvsp[0].str; ;
4381 { yyval.str = NULL; ;
4386 VariableSetStmt *n = makeNode(VariableSetStmt);
4387 n->name = yyvsp[-2].str;
4388 n->value = yyvsp[0].str;
4389 yyval.node = (Node *) n;
4395 VariableSetStmt *n = makeNode(VariableSetStmt);
4396 n->name = yyvsp[-2].str;
4397 n->value = yyvsp[0].str;
4398 yyval.node = (Node *) n;
4404 VariableSetStmt *n = makeNode(VariableSetStmt);
4405 n->name = "timezone";
4406 n->value = yyvsp[0].str;
4407 yyval.node = (Node *) n;
4412 { yyval.str = yyvsp[0].str; ;
4416 { yyval.str = NULL; ;
4420 { yyval.str = yyvsp[0].str; ;
4424 { yyval.str = NULL; ;
4428 { yyval.str = "default"; ;
4433 VariableShowStmt *n = makeNode(VariableShowStmt);
4434 n->name = yyvsp[0].str;
4435 yyval.node = (Node *) n;
4441 VariableShowStmt *n = makeNode(VariableShowStmt);
4442 n->name = "timezone";
4443 yyval.node = (Node *) n;
4449 VariableResetStmt *n = makeNode(VariableResetStmt);
4450 n->name = yyvsp[0].str;
4451 yyval.node = (Node *) n;
4457 VariableResetStmt *n = makeNode(VariableResetStmt);
4458 n->name = "timezone";
4459 yyval.node = (Node *) n;
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;
4475 yyval.node = yyvsp[0].node;
4481 Node *lp = lfirst(yyvsp[-1].list);
4483 if (length(yyvsp[-1].list) != 1)
4484 elog(ERROR,"ALTER TABLE/ADD() allows one column only");
4490 { elog(ERROR,"ALTER TABLE/DROP COLUMN not yet implemented"); ;
4494 { elog(ERROR,"ALTER TABLE/ALTER COLUMN/SET DEFAULT not yet implemented"); ;
4498 { elog(ERROR,"ALTER TABLE/ALTER COLUMN/DROP DEFAULT not yet implemented"); ;
4502 { elog(ERROR,"ALTER TABLE/ADD CONSTRAINT not yet implemented"); ;
4507 ClosePortalStmt *n = makeNode(ClosePortalStmt);
4508 n->portalname = yyvsp[0].str;
4509 yyval.node = (Node *)n;
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;
4527 { yyval.ival = TO; ;
4531 { yyval.ival = FROM; ;
4535 { yyval.str = yyvsp[0].str; ;
4539 { yyval.str = NULL; ;
4543 { yyval.str = NULL; ;
4547 { yyval.boolean = TRUE; ;
4551 { yyval.boolean = FALSE; ;
4555 { yyval.boolean = TRUE; ;
4559 { yyval.boolean = FALSE; ;
4563 { yyval.str = yyvsp[0].str; ;
4567 { yyval.str = "\t"; ;
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;
4582 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
4586 { yyval.list = lcons(yyvsp[0].node, NIL); ;
4590 { yyval.list = NULL; ;
4594 { yyval.node = yyvsp[0].node; ;
4598 { yyval.node = yyvsp[0].node; ;
4603 ColumnDef *n = makeNode(ColumnDef);
4604 n->colname = yyvsp[-2].str;
4605 n->typename = yyvsp[-1].typnam;
4607 n->is_not_null = FALSE;
4608 n->constraints = yyvsp[0].list;
4609 yyval.node = (Node *)n;
4614 { yyval.list = yyvsp[0].list; ;
4618 { yyval.list = NULL; ;
4622 { yyval.list = lappend(yyvsp[-1].list,yyvsp[0].node); ;
4626 { yyval.list = lcons(yyvsp[0].node, NIL); ;
4631 Constraint *n = (Constraint *)yyvsp[0].node;
4632 n->name = fmtId(yyvsp[-1].str);
4633 yyval.node = yyvsp[0].node;
4638 { yyval.node = yyvsp[0].node; ;
4643 Constraint *n = makeNode(Constraint);
4644 n->contype = CONSTR_CHECK;
4646 n->def = FlattenStringList(yyvsp[-1].list);
4648 yyval.node = (Node *)n;
4654 Constraint *n = makeNode(Constraint);
4655 n->contype = CONSTR_DEFAULT;
4657 n->def = FlattenStringList(yyvsp[0].list);
4659 yyval.node = (Node *)n;
4665 Constraint *n = makeNode(Constraint);
4666 n->contype = CONSTR_NOTNULL;
4670 yyval.node = (Node *)n;
4676 Constraint *n = makeNode(Constraint);
4677 n->contype = CONSTR_UNIQUE;
4681 yyval.node = (Node *)n;
4687 Constraint *n = makeNode(Constraint);
4688 n->contype = CONSTR_PRIMARY;
4692 yyval.node = (Node *)n;
4698 elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");
4705 yyval.list = lappend(yyvsp[-2].list,makeString(","));
4706 yyval.list = nconc(yyval.list, yyvsp[0].list);
4712 yyval.list = yyvsp[0].list;
4717 { yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
4721 { yyval.list = lcons( makeString("NULL"), NIL); ;
4725 { yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
4729 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
4733 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
4737 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
4741 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
4745 { elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4749 { elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4753 { elog(ERROR,"boolean expressions not supported in DEFAULT"); ;
4757 { yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
4761 { yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
4765 { yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
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));
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));
4783 { yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
4788 yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
4789 yyval.list = lappend( yyval.list, makeString(")"));
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(")"));
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));
4810 { yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
4814 { yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
4818 { yyval.list = lcons( makeString( "date( 'current'::datetime + '0 sec')"), NIL); ;
4822 { yyval.list = lcons( makeString( "'now'::time"), NIL); ;
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);
4834 { yyval.list = lcons( makeString( "now()"), NIL); ;
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);
4846 { yyval.list = lcons( makeString( "CURRENT_USER"), NIL); ;
4851 Constraint *n = (Constraint *)yyvsp[0].node;
4852 n->name = fmtId(yyvsp[-1].str);
4853 yyval.node = yyvsp[0].node;
4858 { yyval.node = yyvsp[0].node; ;
4863 Constraint *n = makeNode(Constraint);
4864 n->contype = CONSTR_CHECK;
4866 n->def = FlattenStringList(yyvsp[-1].list);
4867 yyval.node = (Node *)n;
4873 Constraint *n = makeNode(Constraint);
4874 n->contype = CONSTR_UNIQUE;
4877 n->keys = yyvsp[-1].list;
4878 yyval.node = (Node *)n;
4884 Constraint *n = makeNode(Constraint);
4885 n->contype = CONSTR_PRIMARY;
4888 n->keys = yyvsp[-1].list;
4889 yyval.node = (Node *)n;
4894 { elog(NOTICE,"CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented"); ;
4899 yyval.list = lappend(yyvsp[-2].list,makeString(","));
4900 yyval.list = nconc(yyval.list, yyvsp[0].list);
4906 yyval.list = yyvsp[0].list;
4911 { yyval.list = makeConstantList((A_Const *) yyvsp[0].node); ;
4915 { yyval.list = lcons( makeString("NULL"), NIL); ;
4920 yyval.list = lcons( makeString(fmtId(yyvsp[0].str)), NIL);
4925 { yyval.list = lcons( makeString( "-"), yyvsp[0].list); ;
4929 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "+"), yyvsp[0].list)); ;
4933 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "-"), yyvsp[0].list)); ;
4937 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "/"), yyvsp[0].list)); ;
4941 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "*"), yyvsp[0].list)); ;
4945 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "="), yyvsp[0].list)); ;
4949 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "<"), yyvsp[0].list)); ;
4953 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( ">"), yyvsp[0].list)); ;
4957 { yyval.list = lcons( makeString( ":"), yyvsp[0].list); ;
4961 { yyval.list = lcons( makeString( ";"), yyvsp[0].list); ;
4965 { yyval.list = lcons( makeString( "|"), yyvsp[0].list); ;
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));
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));
4983 { yyval.list = lappend( lcons( makeString( "("), yyvsp[-1].list), makeString( ")")); ;
4988 yyval.list = makeList( makeString(yyvsp[-2].str), makeString("("), -1);
4989 yyval.list = lappend( yyval.list, makeString(")"));
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(")"));
5002 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( yyvsp[-1].str), yyvsp[0].list)); ;
5006 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "like"), yyvsp[0].list)); ;
5010 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "AND"), yyvsp[0].list)); ;
5014 { yyval.list = nconc( yyvsp[-2].list, lcons( makeString( "OR"), yyvsp[0].list)); ;
5018 { yyval.list = lcons( makeString( "NOT"), yyvsp[0].list); ;
5022 { yyval.list = lcons( makeString( yyvsp[-1].str), yyvsp[0].list); ;
5026 { yyval.list = lappend( yyvsp[-1].list, makeString( yyvsp[0].str)); ;
5030 { yyval.list = lappend( yyvsp[-1].list, makeString( "IS NULL")); ;
5034 { yyval.list = lappend( yyvsp[-2].list, makeString( "IS NULL")); ;
5038 { yyval.list = lappend( yyvsp[-1].list, makeString( "IS NOT NULL")); ;
5042 { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT NULL")); ;
5046 { yyval.list = lappend( yyvsp[-2].list, makeString( "IS TRUE")); ;
5050 { yyval.list = lappend( yyvsp[-2].list, makeString( "IS FALSE")); ;
5054 { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT TRUE")); ;
5058 { yyval.list = lappend( yyvsp[-3].list, makeString( "IS NOT FALSE")); ;
5062 { yyval.str = NULL; ;
5066 { yyval.str = NULL; ;
5070 { yyval.str = NULL; ;
5074 { yyval.list = NIL; ;
5078 { yyval.list = NIL; ;
5082 { yyval.list = NIL; ;
5086 { yyval.list = NIL; ;
5090 { yyval.list = NIL; ;
5094 { yyval.str = NULL; ;
5098 { yyval.str = NULL; ;
5102 { yyval.str = NULL; ;
5106 { yyval.str = NULL; ;
5110 { yyval.list = yyvsp[-1].list; ;
5114 { yyval.list = NIL; ;
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;
5136 { yyval.list = yyvsp[-1].list; ;
5140 { yyval.list = NULL; ;
5144 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
5148 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5153 ColumnDef *n = makeNode(ColumnDef);
5154 n->colname = yyvsp[0].str;
5157 n->is_not_null = FALSE;
5158 n->constraints = NULL;
5159 yyval.node = (Node *)n;
5165 CreateSeqStmt *n = makeNode(CreateSeqStmt);
5166 n->seqname = yyvsp[-1].str;
5167 n->options = yyvsp[0].list;
5168 yyval.node = (Node *)n;
5173 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].defelt); ;
5177 { yyval.list = NIL; ;
5182 yyval.defelt = makeNode(DefElem);
5183 yyval.defelt->defname = yyvsp[-1].str;
5184 yyval.defelt->arg = (Node *)yyvsp[0].value;
5190 yyval.defelt = makeNode(DefElem);
5191 yyval.defelt->defname = yyvsp[0].str;
5192 yyval.defelt->arg = (Node *)NULL;
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;
5208 { yyval.boolean = TRUE; ;
5212 { yyval.boolean = FALSE; ;
5217 DropPLangStmt *n = makeNode(DropPLangStmt);
5218 n->plname = yyvsp[0].str;
5219 yyval.node = (Node *)n;
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;
5238 { yyval.boolean = TRUE; ;
5242 { yyval.boolean = FALSE; ;
5247 char *e = palloc (4);
5248 e[0] = yyvsp[0].chr; e[1] = 0; yyval.str = e;
5254 char *e = palloc (4);
5255 e[0] = yyvsp[-2].chr; e[1] = yyvsp[0].chr; e[2] = 0; yyval.str = e;
5261 char *e = palloc (4);
5262 e[0] = yyvsp[-4].chr; e[1] = yyvsp[-2].chr; e[2] = yyvsp[0].chr; e[3] = 0;
5268 { yyval.chr = 'i'; ;
5272 { yyval.chr = 'd'; ;
5276 { yyval.chr = 'u'; ;
5281 yyval.boolean = yyvsp[0].boolean;
5286 { yyval.boolean = TRUE; ;
5290 { yyval.boolean = FALSE; ;
5294 { yyval.boolean = TRUE; ;
5298 { yyval.boolean = FALSE; ;
5302 { yyval.list = lcons(yyvsp[0].str, NIL); ;
5306 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].str); ;
5310 { yyval.list = NIL; ;
5315 char *s = (char *) palloc (256);
5316 sprintf (s, "%d", yyvsp[0].ival);
5323 char *s = (char *) palloc (256);
5324 sprintf (s, "%g", yyvsp[0].dval);
5330 { yyval.str = yyvsp[0].str; ;
5334 { yyval.str = yyvsp[0].str; ;
5339 DropTrigStmt *n = makeNode(DropTrigStmt);
5340 n->trigname = yyvsp[-2].str;
5341 n->relname = yyvsp[0].str;
5342 yyval.node = (Node *) n;
5348 yyvsp[0].dstmt->defType = yyvsp[-1].ival;
5349 yyval.node = (Node *)yyvsp[0].dstmt;
5355 yyval.dstmt = makeNode(DefineStmt);
5356 yyval.dstmt->defname = yyvsp[-1].str;
5357 yyval.dstmt->definition = yyvsp[0].list;
5362 { yyval.ival = OPERATOR; ;
5366 { yyval.ival = TYPE_P; ;
5370 { yyval.ival = AGGREGATE; ;
5374 { yyval.str = "procedure"; ;
5378 { yyval.str = "join"; ;
5382 { yyval.str = yyvsp[0].str; ;
5386 { yyval.str = yyvsp[0].str; ;
5390 { yyval.str = yyvsp[0].str; ;
5394 { yyval.list = yyvsp[-1].list; ;
5398 { yyval.list = lcons(yyvsp[0].defelt, NIL); ;
5402 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].defelt); ;
5407 yyval.defelt = makeNode(DefElem);
5408 yyval.defelt->defname = yyvsp[-2].str;
5409 yyval.defelt->arg = (Node *)yyvsp[0].node;
5415 yyval.defelt = makeNode(DefElem);
5416 yyval.defelt->defname = yyvsp[0].str;
5417 yyval.defelt->arg = (Node *)NULL;
5423 yyval.defelt = makeNode(DefElem);
5424 yyval.defelt->defname = "default";
5425 yyval.defelt->arg = (Node *)yyvsp[0].node;
5430 { yyval.node = (Node *)makeString(yyvsp[0].str); ;
5434 { yyval.node = (Node *)makeString(yyvsp[0].str); ;
5438 { yyval.node = (Node *)yyvsp[0].value; /* already a Value */ ;
5442 { yyval.node = (Node *)makeString(yyvsp[0].str); ;
5447 TypeName *n = makeNode(TypeName);
5448 n->name = yyvsp[0].str;
5450 n->arrayBounds = NULL;
5452 yyval.node = (Node *)n;
5458 DestroyStmt *n = makeNode(DestroyStmt);
5459 n->relNames = yyvsp[0].list;
5460 n->sequence = FALSE;
5461 yyval.node = (Node *)n;
5467 DestroyStmt *n = makeNode(DestroyStmt);
5468 n->relNames = yyvsp[0].list;
5470 yyval.node = (Node *)n;
5476 FetchStmt *n = makeNode(FetchStmt);
5477 n->direction = yyvsp[-2].ival;
5478 n->howMany = yyvsp[-1].ival;
5479 n->portalname = yyvsp[0].str;
5481 yyval.node = (Node *)n;
5487 FetchStmt *n = makeNode(FetchStmt);
5488 n->direction = yyvsp[-2].ival;
5489 n->howMany = yyvsp[-1].ival;
5490 n->portalname = yyvsp[0].str;
5492 yyval.node = (Node *)n;
5497 { yyval.ival = FORWARD; ;
5501 { yyval.ival = BACKWARD; ;
5505 { yyval.ival = FORWARD; /* default */ ;
5509 { yyval.ival = yyvsp[0].ival;
5510 if (yyvsp[0].ival <= 0) elog(ERROR,"Please specify nonnegative count for fetch"); ;
5514 { yyval.ival = 0; /* 0 means fetch all tuples*/ ;
5518 { yyval.ival = 1; /*default*/ ;
5522 { yyval.str = yyvsp[0].str; ;
5526 { yyval.str = NULL; ;
5531 yyval.node = (Node*)makeAclStmt(yyvsp[-5].str,yyvsp[-3].list,yyvsp[-1].str,'+');
5537 yyval.str = aclmakepriv("rwaR",0);
5543 yyval.str = aclmakepriv("rwaR",0);
5549 yyval.str = yyvsp[0].str;
5555 yyval.str = aclmakepriv("",yyvsp[0].chr);
5561 yyval.str = aclmakepriv(yyvsp[-2].str,yyvsp[0].chr);
5567 yyval.chr = ACL_MODE_RD_CHR;
5573 yyval.chr = ACL_MODE_AP_CHR;
5579 yyval.chr = ACL_MODE_WR_CHR;
5585 yyval.chr = ACL_MODE_WR_CHR;
5591 yyval.chr = ACL_MODE_RU_CHR;
5597 yyval.str = aclmakeuser("A","");
5603 yyval.str = aclmakeuser("G",yyvsp[0].str);
5609 yyval.str = aclmakeuser("U",yyvsp[0].str);
5615 yyerror("WITH GRANT OPTION is not supported. Only relation owners can set privileges");
5621 yyval.node = (Node*)makeAclStmt(yyvsp[-4].str,yyvsp[-2].list,yyvsp[0].str,'-');
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;
5642 { yyval.boolean = TRUE; ;
5646 { yyval.boolean = FALSE; ;
5650 { yyval.str = yyvsp[0].str; ;
5654 { yyval.str = "btree"; ;
5658 { yyval.list = yyvsp[0].list; ;
5662 { yyval.list = lcons(yyvsp[0].ielem,NIL); ;
5666 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].ielem); ;
5670 { yyval.list = lcons(yyvsp[0].ielem, NIL); ;
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;
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;
5694 { yyval.typnam = yyvsp[0].typnam; ;
5698 { yyval.typnam = yyvsp[0].typnam; ;
5702 { yyval.typnam = NULL; ;
5706 { yyval.str = yyvsp[0].str; ;
5710 { yyval.str = yyvsp[0].str; ;
5714 { yyval.str = NULL; ;
5719 ExtendStmt *n = makeNode(ExtendStmt);
5720 n->idxname = yyvsp[-1].str;
5721 n->whereClause = yyvsp[0].node;
5722 yyval.node = (Node *)n;
5729 if (!IsTransactionBlock())
5730 elog(ERROR,"EXECUTE RECIPE may only be used in begin/end transaction blocks");
5732 n = makeNode(RecipeStmt);
5733 n->recipeName = yyvsp[0].str;
5734 yyval.node = (Node *)n;
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;
5752 { yyval.list = yyvsp[0].list; ;
5756 { yyval.list = NIL; ;
5760 { yyval.list = yyvsp[-1].list; ;
5764 { yyval.list = NIL; ;
5768 { yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
5772 { yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
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;
5786 { yyval.boolean = TRUE; ;
5790 { yyval.boolean = FALSE; ;
5795 RemoveStmt *n = makeNode(RemoveStmt);
5796 n->removeType = yyvsp[-1].ival;
5797 n->name = yyvsp[0].str;
5798 yyval.node = (Node *)n;
5803 { yyval.ival = TYPE_P; ;
5807 { yyval.ival = INDEX; ;
5811 { yyval.ival = RULE; ;
5815 { yyval.ival = VIEW; ;
5820 RemoveAggrStmt *n = makeNode(RemoveAggrStmt);
5821 n->aggname = yyvsp[-1].str;
5822 n->aggtype = yyvsp[0].str;
5823 yyval.node = (Node *)n;
5828 { yyval.str = yyvsp[0].str; ;
5832 { yyval.str = NULL; ;
5837 RemoveFuncStmt *n = makeNode(RemoveFuncStmt);
5838 n->funcname = yyvsp[-1].str;
5839 n->args = yyvsp[0].list;
5840 yyval.node = (Node *)n;
5846 RemoveOperStmt *n = makeNode(RemoveOperStmt);
5847 n->opname = yyvsp[-3].str;
5848 n->args = yyvsp[-1].list;
5849 yyval.node = (Node *)n;
5854 { yyval.str = "+"; ;
5858 { yyval.str = "-"; ;
5862 { yyval.str = "*"; ;
5866 { yyval.str = "/"; ;
5870 { yyval.str = "<"; ;
5874 { yyval.str = ">"; ;
5878 { yyval.str = "="; ;
5883 elog(ERROR,"parser: argument type missing (use NONE for unary operators)");
5888 { yyval.list = makeList(makeString(yyvsp[-2].str), makeString(yyvsp[0].str), -1); ;
5892 { yyval.list = makeList(NULL, makeString(yyvsp[0].str), -1); ;
5896 { yyval.list = makeList(makeString(yyvsp[-2].str), NULL, -1); ;
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;
5911 { yyval.str = yyvsp[0].str; ;
5915 { yyval.str = NULL; ;
5919 { yyval.ival = COLUMN; ;
5927 { QueryIsRule=TRUE; ;
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;
5944 { yyval.list = NIL; ;
5948 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5952 { yyval.list = yyvsp[-1].list; ;
5956 { yyval.list = yyvsp[0].list; ;
5960 { yyval.list = lcons(yyvsp[0].node, NIL); ;
5964 { yyval.list = lappend(yyvsp[-2].list, yyvsp[-1].node); ;
5968 { yyval.list = lappend(yyvsp[-1].list, yyvsp[0].node); ;
5972 { yyval.list = lcons(yyvsp[-1].node, NIL); ;
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;
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;
5996 { yyval.ival = CMD_SELECT; ;
6000 { yyval.ival = CMD_UPDATE; ;
6004 { yyval.ival = CMD_DELETE; ;
6008 { yyval.ival = CMD_INSERT; ;
6012 { yyval.boolean = TRUE; ;
6016 { yyval.boolean = FALSE; ;
6021 NotifyStmt *n = makeNode(NotifyStmt);
6022 n->relname = yyvsp[0].str;
6023 yyval.node = (Node *)n;
6029 ListenStmt *n = makeNode(ListenStmt);
6030 n->relname = yyvsp[0].str;
6031 yyval.node = (Node *)n;
6037 TransactionStmt *n = makeNode(TransactionStmt);
6038 n->command = ABORT_TRANS;
6039 yyval.node = (Node *)n;
6045 TransactionStmt *n = makeNode(TransactionStmt);
6046 n->command = BEGIN_TRANS;
6047 yyval.node = (Node *)n;
6053 TransactionStmt *n = makeNode(TransactionStmt);
6054 n->command = BEGIN_TRANS;
6055 yyval.node = (Node *)n;
6061 TransactionStmt *n = makeNode(TransactionStmt);
6062 n->command = END_TRANS;
6063 yyval.node = (Node *)n;
6069 TransactionStmt *n = makeNode(TransactionStmt);
6070 n->command = END_TRANS;
6071 yyval.node = (Node *)n;
6077 TransactionStmt *n = makeNode(TransactionStmt);
6078 n->command = ABORT_TRANS;
6079 yyval.node = (Node *)n;
6085 TransactionStmt *n = makeNode(TransactionStmt);
6086 n->command = ABORT_TRANS;
6087 yyval.node = (Node *)n;
6093 TransactionStmt *n = makeNode(TransactionStmt);
6094 n->command = BEGIN_TRANS;
6095 yyval.node = (Node *)n;
6101 TransactionStmt *n = makeNode(TransactionStmt);
6102 n->command = END_TRANS;
6103 yyval.node = (Node *)n;
6109 TransactionStmt *n = makeNode(TransactionStmt);
6110 n->command = END_TRANS;
6111 yyval.node = (Node *)n;
6117 TransactionStmt *n = makeNode(TransactionStmt);
6118 n->command = ABORT_TRANS;
6119 yyval.node = (Node *)n;
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;
6138 LoadStmt *n = makeNode(LoadStmt);
6139 n->filename = yyvsp[0].str;
6140 yyval.node = (Node *)n;
6146 CreatedbStmt *n = makeNode(CreatedbStmt);
6147 n->dbname = yyvsp[-1].str;
6148 n->dbpath = yyvsp[0].str;
6149 yyval.node = (Node *)n;
6154 { yyval.str = yyvsp[0].str; ;
6158 { yyval.str = NULL; ;
6162 { yyval.str = yyvsp[0].str; ;
6166 { yyval.str = NULL; ;
6170 { yyval.str = NULL; ;
6175 DestroydbStmt *n = makeNode(DestroydbStmt);
6176 n->dbname = yyvsp[0].str;
6177 yyval.node = (Node *)n;
6183 ClusterStmt *n = makeNode(ClusterStmt);
6184 n->relname = yyvsp[0].str;
6185 n->indexname = yyvsp[-2].str;
6186 yyval.node = (Node*)n;
6192 VacuumStmt *n = makeNode(VacuumStmt);
6193 n->verbose = yyvsp[-1].boolean;
6194 n->analyze = yyvsp[0].boolean;
6197 yyval.node = (Node *)n;
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;
6215 { yyval.boolean = TRUE; ;
6219 { yyval.boolean = FALSE; ;
6223 { yyval.boolean = TRUE; ;
6227 { yyval.boolean = FALSE; ;
6231 { yyval.list = yyvsp[-1].list; ;
6235 { yyval.list = NIL; ;
6239 { yyval.list=lcons(yyvsp[0].str,NIL); ;
6243 { yyval.list=lappend(yyvsp[-2].list,yyvsp[0].str); ;
6248 ExplainStmt *n = makeNode(ExplainStmt);
6249 n->verbose = yyvsp[-1].boolean;
6250 n->query = (Query*)yyvsp[0].node;
6251 yyval.node = (Node *)n;
6257 yyvsp[0].astmt->relname = yyvsp[-2].str;
6258 yyvsp[0].astmt->cols = yyvsp[-1].list;
6259 yyval.node = (Node *)yyvsp[0].astmt;
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;
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;
6290 { yyval.list = yyvsp[-1].list; ;
6294 { yyval.list = NIL; ;
6298 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
6302 { yyval.list = lcons(yyvsp[0].node, NIL); ;
6307 Ident *id = makeNode(Ident);
6308 id->name = yyvsp[-1].str;
6309 id->indirection = yyvsp[0].list;
6310 yyval.node = (Node *)id;
6316 DeleteStmt *n = makeNode(DeleteStmt);
6317 n->relname = yyvsp[-1].str;
6318 n->whereClause = yyvsp[0].node;
6319 yyval.node = (Node *)n;
6325 DeleteStmt *n = makeNode(DeleteStmt);
6326 A_Const *c = makeNode(A_Const);
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;
6334 n->relname = yyvsp[0].str;
6335 n->whereClause = (Node *)c;
6336 yyval.node = (Node *)n;
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;
6353 SelectStmt *n = makeNode(SelectStmt);
6355 /* from PORTAL name */
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.
6363 if (!IsTransactionBlock())
6364 elog(ERROR,"Named portals may only be used in begin/end transaction blocks");
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;
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;
6398 SelectStmt *n = (SelectStmt *)lfirst(yyvsp[0].list);
6399 n->unionall = yyvsp[-1].boolean;
6400 yyval.list = yyvsp[0].list;
6405 { yyval.list = NIL; ;
6410 SelectStmt *n = (SelectStmt *)yyvsp[0].node;
6411 n->unionall = yyvsp[-1].boolean;
6412 yyval.list = lappend(yyvsp[-3].list, yyvsp[0].node);
6417 { yyval.list = lcons(yyvsp[0].node, NIL); ;
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;
6435 { yyval.str= yyvsp[0].str; ;
6439 { yyval.str = NULL; ;
6443 { yyval.boolean = TRUE; ;
6447 { yyval.boolean = FALSE; ;
6451 { yyval.str = "*"; ;
6455 { yyval.str = yyvsp[0].str; ;
6459 { yyval.str = NULL; ;
6463 { yyval.str = NULL; ;
6467 { yyval.list = yyvsp[0].list; ;
6471 { yyval.list = NIL; ;
6475 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6479 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
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;
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;
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;
6513 { yyval.str = yyvsp[0].str; ;
6517 { yyval.str = "<"; ;
6521 { yyval.str = ">"; ;
6525 { yyval.str = "<"; ;
6529 { yyval.str = ">"; ;
6533 { yyval.str = "<"; /*default*/ ;
6537 { yyval.boolean = TRUE; ;
6541 { yyval.boolean = FALSE; ;
6545 { yyval.list = lcons(makeString(yyvsp[0].str),NIL); ;
6549 { yyval.list = lappend(yyvsp[-2].list,makeString(yyvsp[0].str)); ;
6553 { yyval.list = yyvsp[0].list; ;
6557 { yyval.list = NIL; ;
6561 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6565 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
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;
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;
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;
6600 elog(NOTICE, "HAVING not yet supported; ignore clause");
6601 yyval.node = yyvsp[0].node;
6606 { yyval.node = NULL; ;
6612 elog(ERROR,"JOIN not yet implemented");
6617 { yyval.list = yyvsp[0].list; ;
6621 { yyval.list = NIL; ;
6625 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].range); ;
6629 { elog(ERROR,"CROSS JOIN not yet implemented"); ;
6633 { yyval.list = lcons(yyvsp[0].range, NIL); ;
6638 yyval.range = makeNode(RangeVar);
6639 yyval.range->relExpr = yyvsp[-2].relexp;
6640 yyval.range->name = yyvsp[0].str;
6646 yyval.range = makeNode(RangeVar);
6647 yyval.range->relExpr = yyvsp[-1].relexp;
6648 yyval.range->name = yyvsp[0].str;
6654 yyval.range = makeNode(RangeVar);
6655 yyval.range->relExpr = yyvsp[0].relexp;
6656 yyval.range->name = NULL;
6661 { yyval.str = NULL; ;
6665 { elog(ERROR,"FULL OUTER JOIN not yet implemented"); ;
6669 { elog(ERROR,"LEFT OUTER JOIN not yet implemented"); ;
6673 { elog(ERROR,"RIGHT OUTER JOIN not yet implemented"); ;
6677 { elog(ERROR,"OUTER JOIN not yet implemented"); ;
6681 { elog(ERROR,"INNER JOIN not yet implemented"); ;
6685 { elog(ERROR,"UNION JOIN not yet implemented"); ;
6689 { elog(ERROR,"INNER JOIN not yet implemented"); ;
6693 { yyval.str = NULL; ;
6697 { yyval.str = NULL; /* no qualifiers */ ;
6701 { yyval.str = NULL; ;
6705 { yyval.str = NULL; ;
6709 { yyval.str = NULL; /* no qualifiers */ ;
6713 { yyval.list = lcons(yyvsp[0].sortgroupby, NIL); ;
6717 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].sortgroupby); ;
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;
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;
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;
6751 { yyval.node = yyvsp[0].node; ;
6755 { yyval.node = NULL; /* no qualifiers */ ;
6760 /* normal relations */
6761 yyval.relexp = makeNode(RelExpr);
6762 yyval.relexp->relname = yyvsp[0].str;
6763 yyval.relexp->inh = FALSE;
6769 /* inheritance query */
6770 yyval.relexp = makeNode(RelExpr);
6771 yyval.relexp->relname = yyvsp[-1].str;
6772 yyval.relexp->inh = TRUE;
6777 { yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
6781 { yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
6785 { yyval.list = NIL; ;
6789 { yyval.list = lcons(makeInteger(-1), yyvsp[0].list); ;
6793 { yyval.list = lcons(makeInteger(yyvsp[-2].ival), yyvsp[0].list); ;
6797 { yyval.list = NIL; ;
6802 yyval.typnam = yyvsp[-1].typnam;
6803 yyval.typnam->arrayBounds = yyvsp[0].list;
6805 /* Is this the name of a complex type? If so, implement
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)
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.)
6818 yyval.typnam->setof = TRUE;
6820 yyval.typnam->setof = FALSE;
6826 yyval.typnam = yyvsp[0].typnam;
6827 yyval.typnam->setof = TRUE;
6833 yyval.typnam = makeNode(TypeName);
6834 yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6835 yyval.typnam->typmod = -1;
6840 { yyval.str = yyvsp[0].str; ;
6844 { yyval.str = xlateSqlType("type"); ;
6849 yyval.typnam = makeNode(TypeName);
6850 yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6851 yyval.typnam->typmod = -1;
6857 yyval.typnam = makeNode(TypeName);
6858 yyval.typnam->name = xlateSqlType("float");
6864 yyval.typnam = makeNode(TypeName);
6865 yyval.typnam->name = xlateSqlType("integer");
6866 yyval.typnam->typmod = -1;
6872 yyval.typnam = makeNode(TypeName);
6873 yyval.typnam->name = xlateSqlType("integer");
6874 yyval.typnam->typmod = -1;
6879 { yyval.str = xlateSqlType("float8"); ;
6883 { yyval.str = xlateSqlType("float8"); ;
6887 { yyval.str = xlateSqlType("decimal"); ;
6891 { yyval.str = xlateSqlType("numeric"); ;
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");
6903 elog(ERROR,"precision for FLOAT must be less than 16");
6909 yyval.str = xlateSqlType("float8");
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);
6924 if (yyvsp[-1].ival != 9)
6925 elog(ERROR,"NUMERIC precision %d must be 9",yyvsp[-1].ival);
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);
6947 if (yyvsp[-1].ival > 9)
6948 elog(ERROR,"DECIMAL precision %d exceeds implementation limit of 9",yyvsp[-1].ival);
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");
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
6976 elog(ERROR,"length for type '%s' cannot exceed 4096",yyvsp[-3].str);
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
6983 yyval.typnam->typmod = VARHDRSZ + yyvsp[-1].ival;
6989 yyval.typnam = makeNode(TypeName);
6990 yyval.typnam->name = xlateSqlType(yyvsp[0].str);
6991 yyval.typnam->typmod = -1;
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");
7002 if (yyvsp[-2].boolean) {
7003 c = palloc(strlen("var") + strlen(yyvsp[-1].str) + 1);
7005 strcat(c, yyvsp[-1].str);
7006 type = xlateSqlType(c);
7008 type = xlateSqlType(yyvsp[-1].str);
7011 if (yyvsp[0].str != NULL)
7012 elog(ERROR,"COLLATE %s not yet implemented",yyvsp[0].str);
7018 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7022 { yyval.str = xlateSqlType("varchar"); ;
7026 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7030 { yyval.str = xlateSqlType(yyvsp[0].boolean? "varchar": "char"); ;
7034 { yyval.boolean = TRUE; ;
7038 { yyval.boolean = FALSE; ;
7042 { yyval.str = yyvsp[0].str; ;
7046 { yyval.str = NULL; ;
7050 { yyval.str = yyvsp[0].str; ;
7054 { yyval.str = NULL; ;
7059 yyval.typnam = makeNode(TypeName);
7060 yyval.typnam->name = xlateSqlType(yyvsp[0].str);
7061 yyval.typnam->typmod = -1;
7067 yyval.typnam = makeNode(TypeName);
7068 yyval.typnam->name = xlateSqlType("timestamp");
7069 yyval.typnam->timezone = yyvsp[0].boolean;
7070 yyval.typnam->typmod = -1;
7076 yyval.typnam = makeNode(TypeName);
7077 yyval.typnam->name = xlateSqlType("time");
7078 yyval.typnam->typmod = -1;
7084 yyval.typnam = makeNode(TypeName);
7085 yyval.typnam->name = xlateSqlType("interval");
7086 yyval.typnam->typmod = -1;
7091 { yyval.str = "year"; ;
7095 { yyval.str = "month"; ;
7099 { yyval.str = "day"; ;
7103 { yyval.str = "hour"; ;
7107 { yyval.str = "minute"; ;
7111 { yyval.str = "second"; ;
7115 { yyval.boolean = TRUE; ;
7119 { yyval.boolean = FALSE; ;
7123 { yyval.list = lcons(yyvsp[0].str, NIL); ;
7127 { yyval.list = NIL; ;
7131 { yyval.list = NIL; ;
7135 { yyval.list = NIL; ;
7139 { yyval.list = NIL; ;
7143 { yyval.list = NIL; ;
7147 { yyval.list = NIL; ;
7151 { yyval.list = NIL; ;
7155 { yyval.node = yyvsp[0].node; ;
7160 A_Const *n = makeNode(A_Const);
7161 n->val.type = T_Null;
7162 yyval.node = (Node *)n;
7168 SubLink *n = makeNode(SubLink);
7169 n->lefthand = yyvsp[-5].list;
7170 n->oper = lcons("=",NIL);
7172 n->subLinkType = ANY_SUBLINK;
7173 n->subselect = yyvsp[-1].node;
7174 yyval.node = (Node *)n;
7180 SubLink *n = makeNode(SubLink);
7181 n->lefthand = yyvsp[-6].list;
7182 n->oper = lcons("<>",NIL);
7184 n->subLinkType = ALL_SUBLINK;
7185 n->subselect = yyvsp[-1].node;
7186 yyval.node = (Node *)n;
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)
7199 n->subLinkType = EXPR_SUBLINK;
7200 n->subselect = yyvsp[-1].node;
7201 yyval.node = (Node *)n;
7207 SubLink *n = makeNode(SubLink);
7208 n->lefthand = yyvsp[-5].list;
7209 n->oper = lcons("+", NIL);
7211 n->subLinkType = EXPR_SUBLINK;
7212 n->subselect = yyvsp[-1].node;
7213 yyval.node = (Node *)n;
7219 SubLink *n = makeNode(SubLink);
7220 n->lefthand = yyvsp[-5].list;
7221 n->oper = lcons("-", NIL);
7223 n->subLinkType = EXPR_SUBLINK;
7224 n->subselect = yyvsp[-1].node;
7225 yyval.node = (Node *)n;
7231 SubLink *n = makeNode(SubLink);
7232 n->lefthand = yyvsp[-5].list;
7233 n->oper = lcons("/", NIL);
7235 n->subLinkType = EXPR_SUBLINK;
7236 n->subselect = yyvsp[-1].node;
7237 yyval.node = (Node *)n;
7243 SubLink *n = makeNode(SubLink);
7244 n->lefthand = yyvsp[-5].list;
7245 n->oper = lcons("*", NIL);
7247 n->subLinkType = EXPR_SUBLINK;
7248 n->subselect = yyvsp[-1].node;
7249 yyval.node = (Node *)n;
7255 SubLink *n = makeNode(SubLink);
7256 n->lefthand = yyvsp[-5].list;
7257 n->oper = lcons("<", NIL);
7259 n->subLinkType = EXPR_SUBLINK;
7260 n->subselect = yyvsp[-1].node;
7261 yyval.node = (Node *)n;
7267 SubLink *n = makeNode(SubLink);
7268 n->lefthand = yyvsp[-5].list;
7269 n->oper = lcons(">", NIL);
7271 n->subLinkType = EXPR_SUBLINK;
7272 n->subselect = yyvsp[-1].node;
7273 yyval.node = (Node *)n;
7279 SubLink *n = makeNode(SubLink);
7280 n->lefthand = yyvsp[-5].list;
7281 n->oper = lcons("=", NIL);
7283 n->subLinkType = EXPR_SUBLINK;
7284 n->subselect = yyvsp[-1].node;
7285 yyval.node = (Node *)n;
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)
7298 n->subLinkType = ANY_SUBLINK;
7299 n->subselect = yyvsp[-1].node;
7300 yyval.node = (Node *)n;
7306 SubLink *n = makeNode(SubLink);
7307 n->lefthand = yyvsp[-6].list;
7308 n->oper = lcons("+",NIL);
7310 n->subLinkType = ANY_SUBLINK;
7311 n->subselect = yyvsp[-1].node;
7312 yyval.node = (Node *)n;
7318 SubLink *n = makeNode(SubLink);
7319 n->lefthand = yyvsp[-6].list;
7320 n->oper = lcons("-",NIL);
7322 n->subLinkType = ANY_SUBLINK;
7323 n->subselect = yyvsp[-1].node;
7324 yyval.node = (Node *)n;
7330 SubLink *n = makeNode(SubLink);
7331 n->lefthand = yyvsp[-6].list;
7332 n->oper = lcons("/",NIL);
7334 n->subLinkType = ANY_SUBLINK;
7335 n->subselect = yyvsp[-1].node;
7336 yyval.node = (Node *)n;
7342 SubLink *n = makeNode(SubLink);
7343 n->lefthand = yyvsp[-6].list;
7344 n->oper = lcons("*",NIL);
7346 n->subLinkType = ANY_SUBLINK;
7347 n->subselect = yyvsp[-1].node;
7348 yyval.node = (Node *)n;
7354 SubLink *n = makeNode(SubLink);
7355 n->lefthand = yyvsp[-6].list;
7356 n->oper = lcons("<",NIL);
7358 n->subLinkType = ANY_SUBLINK;
7359 n->subselect = yyvsp[-1].node;
7360 yyval.node = (Node *)n;
7366 SubLink *n = makeNode(SubLink);
7367 n->lefthand = yyvsp[-6].list;
7368 n->oper = lcons(">",NIL);
7370 n->subLinkType = ANY_SUBLINK;
7371 n->subselect = yyvsp[-1].node;
7372 yyval.node = (Node *)n;
7378 SubLink *n = makeNode(SubLink);
7379 n->lefthand = yyvsp[-6].list;
7380 n->oper = lcons("=",NIL);
7382 n->subLinkType = ANY_SUBLINK;
7383 n->subselect = yyvsp[-1].node;
7384 yyval.node = (Node *)n;
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)
7397 n->subLinkType = ALL_SUBLINK;
7398 n->subselect = yyvsp[-1].node;
7399 yyval.node = (Node *)n;
7405 SubLink *n = makeNode(SubLink);
7406 n->lefthand = yyvsp[-6].list;
7407 n->oper = lcons("+",NIL);
7409 n->subLinkType = ALL_SUBLINK;
7410 n->subselect = yyvsp[-1].node;
7411 yyval.node = (Node *)n;
7417 SubLink *n = makeNode(SubLink);
7418 n->lefthand = yyvsp[-6].list;
7419 n->oper = lcons("-",NIL);
7421 n->subLinkType = ALL_SUBLINK;
7422 n->subselect = yyvsp[-1].node;
7423 yyval.node = (Node *)n;
7429 SubLink *n = makeNode(SubLink);
7430 n->lefthand = yyvsp[-6].list;
7431 n->oper = lcons("/",NIL);
7433 n->subLinkType = ALL_SUBLINK;
7434 n->subselect = yyvsp[-1].node;
7435 yyval.node = (Node *)n;
7441 SubLink *n = makeNode(SubLink);
7442 n->lefthand = yyvsp[-6].list;
7443 n->oper = lcons("*",NIL);
7445 n->subLinkType = ALL_SUBLINK;
7446 n->subselect = yyvsp[-1].node;
7447 yyval.node = (Node *)n;
7453 SubLink *n = makeNode(SubLink);
7454 n->lefthand = yyvsp[-6].list;
7455 n->oper = lcons("<",NIL);
7457 n->subLinkType = ALL_SUBLINK;
7458 n->subselect = yyvsp[-1].node;
7459 yyval.node = (Node *)n;
7465 SubLink *n = makeNode(SubLink);
7466 n->lefthand = yyvsp[-6].list;
7467 n->oper = lcons(">",NIL);
7469 n->subLinkType = ALL_SUBLINK;
7470 n->subselect = yyvsp[-1].node;
7471 yyval.node = (Node *)n;
7477 SubLink *n = makeNode(SubLink);
7478 n->lefthand = yyvsp[-6].list;
7479 n->oper = lcons("=",NIL);
7481 n->subLinkType = ALL_SUBLINK;
7482 n->subselect = yyvsp[-1].node;
7483 yyval.node = (Node *)n;
7489 yyval.node = makeRowExpr(yyvsp[-3].str, yyvsp[-5].list, yyvsp[-1].list);
7495 yyval.node = makeRowExpr("+", yyvsp[-5].list, yyvsp[-1].list);
7501 yyval.node = makeRowExpr("-", yyvsp[-5].list, yyvsp[-1].list);
7507 yyval.node = makeRowExpr("/", yyvsp[-5].list, yyvsp[-1].list);
7513 yyval.node = makeRowExpr("*", yyvsp[-5].list, yyvsp[-1].list);
7519 yyval.node = makeRowExpr("<", yyvsp[-5].list, yyvsp[-1].list);
7525 yyval.node = makeRowExpr(">", yyvsp[-5].list, yyvsp[-1].list);
7531 yyval.node = makeRowExpr("=", yyvsp[-5].list, yyvsp[-1].list);
7537 yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
7543 yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node);
7549 yyval.list = lcons(yyvsp[0].node, NIL);
7555 yyvsp[-1].attr->indirection = yyvsp[0].list;
7556 yyval.node = (Node *)yyvsp[-1].attr;
7561 { yyval.node = yyvsp[0].node; ;
7565 { yyval.node = yyvsp[0].node; ;
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;
7579 { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
7583 { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
7587 { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
7591 { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
7595 { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
7599 { yyval.node = makeA_Expr(OP, "<", yyvsp[-2].node, yyvsp[0].node); ;
7603 { yyval.node = makeA_Expr(OP, ">", yyvsp[-2].node, yyvsp[0].node); ;
7607 { yyval.node = makeA_Expr(OP, "=", yyvsp[-2].node, yyvsp[0].node); ;
7611 { yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
7615 { yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
7619 { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
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 */
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;
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 */
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;
7659 { yyval.node = yyvsp[-1].node; ;
7663 { yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
7667 { yyval.node = makeIndexable("~~", yyvsp[-2].node, yyvsp[0].node); ;
7671 { yyval.node = makeA_Expr(OP, "!~~", yyvsp[-3].node, yyvsp[0].node); ;
7675 { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
7679 { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
7684 /* cheap hack for aggregate (eg. count) */
7685 FuncCall *n = makeNode(FuncCall);
7686 A_Const *star = makeNode(A_Const);
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;
7698 FuncCall *n = makeNode(FuncCall);
7699 n->funcname = yyvsp[-2].str;
7701 yyval.node = (Node *)n;
7707 FuncCall *n = makeNode(FuncCall);
7708 n->funcname = yyvsp[-3].str;
7709 n->args = yyvsp[-1].list;
7710 yyval.node = (Node *)n;
7716 A_Const *n = makeNode(A_Const);
7717 TypeName *t = makeNode(TypeName);
7719 n->val.type = T_String;
7720 n->val.val.str = "now";
7723 t->name = xlateSqlType("date");
7727 yyval.node = (Node *)n;
7733 A_Const *n = makeNode(A_Const);
7734 TypeName *t = makeNode(TypeName);
7736 n->val.type = T_String;
7737 n->val.val.str = "now";
7740 t->name = xlateSqlType("time");
7744 yyval.node = (Node *)n;
7750 FuncCall *n = makeNode(FuncCall);
7751 A_Const *s = makeNode(A_Const);
7752 TypeName *t = makeNode(TypeName);
7754 n->funcname = xlateSqlType("time");
7755 n->args = lcons(s, NIL);
7757 s->val.type = T_String;
7758 s->val.val.str = "now";
7761 t->name = xlateSqlType("time");
7765 if (yyvsp[-1].ival != 0)
7766 elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
7768 yyval.node = (Node *)n;
7774 A_Const *n = makeNode(A_Const);
7775 TypeName *t = makeNode(TypeName);
7777 n->val.type = T_String;
7778 n->val.val.str = "now";
7781 t->name = xlateSqlType("timestamp");
7785 yyval.node = (Node *)n;
7791 FuncCall *n = makeNode(FuncCall);
7792 A_Const *s = makeNode(A_Const);
7793 TypeName *t = makeNode(TypeName);
7795 n->funcname = xlateSqlType("timestamp");
7796 n->args = lcons(s, NIL);
7798 s->val.type = T_String;
7799 s->val.val.str = "now";
7802 t->name = xlateSqlType("timestamp");
7806 if (yyvsp[-1].ival != 0)
7807 elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
7809 yyval.node = (Node *)n;
7815 FuncCall *n = makeNode(FuncCall);
7816 n->funcname = "getpgusername";
7818 yyval.node = (Node *)n;
7824 SubLink *n = makeNode(SubLink);
7828 n->subLinkType = EXISTS_SUBLINK;
7829 n->subselect = yyvsp[-1].node;
7830 yyval.node = (Node *)n;
7836 FuncCall *n = makeNode(FuncCall);
7837 n->funcname = "date_part";
7838 n->args = yyvsp[-1].list;
7839 yyval.node = (Node *)n;
7845 FuncCall *n = makeNode(FuncCall);
7846 n->funcname = "strpos";
7847 n->args = yyvsp[-1].list;
7848 yyval.node = (Node *)n;
7854 FuncCall *n = makeNode(FuncCall);
7855 n->funcname = "substr";
7856 n->args = yyvsp[-1].list;
7857 yyval.node = (Node *)n;
7863 FuncCall *n = makeNode(FuncCall);
7864 n->funcname = "btrim";
7865 n->args = yyvsp[-1].list;
7866 yyval.node = (Node *)n;
7872 FuncCall *n = makeNode(FuncCall);
7873 n->funcname = "ltrim";
7874 n->args = yyvsp[-1].list;
7875 yyval.node = (Node *)n;
7881 FuncCall *n = makeNode(FuncCall);
7882 n->funcname = "rtrim";
7883 n->args = yyvsp[-1].list;
7884 yyval.node = (Node *)n;
7890 FuncCall *n = makeNode(FuncCall);
7891 n->funcname = "btrim";
7892 n->args = yyvsp[-1].list;
7893 yyval.node = (Node *)n;
7898 { yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-1].node, NULL); ;
7902 { yyval.node = makeA_Expr(ISNULL, NULL, yyvsp[-2].node, NULL); ;
7906 { yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-1].node, NULL); ;
7910 { yyval.node = makeA_Expr(NOTNULL, NULL, yyvsp[-3].node, NULL); ;
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);
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);
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);
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);
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));
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));
7978 { saved_In_Expr = lcons(yyvsp[-1].node,saved_In_Expr); ;
7983 saved_In_Expr = lnext(saved_In_Expr);
7984 if (nodeTag(yyvsp[-1].node) == T_SubLink)
7986 SubLink *n = (SubLink *)yyvsp[-1].node;
7987 n->lefthand = lcons(yyvsp[-5].node, NIL);
7988 n->oper = lcons("=",NIL);
7990 n->subLinkType = ANY_SUBLINK;
7991 yyval.node = (Node *)n;
7993 else yyval.node = yyvsp[-1].node;
7998 { saved_In_Expr = lcons(yyvsp[-2].node,saved_In_Expr); ;
8003 saved_In_Expr = lnext(saved_In_Expr);
8004 if (nodeTag(yyvsp[-1].node) == T_SubLink)
8006 SubLink *n = (SubLink *)yyvsp[-1].node;
8007 n->lefthand = lcons(yyvsp[-6].node, NIL);
8008 n->oper = lcons("<>",NIL);
8010 n->subLinkType = ALL_SUBLINK;
8011 yyval.node = (Node *)n;
8013 else yyval.node = yyvsp[-1].node;
8019 SubLink *n = makeNode(SubLink);
8020 n->lefthand = lcons(yyvsp[-4].node, NULL);
8021 n->oper = lcons(yyvsp[-3].str,NIL);
8023 n->subLinkType = EXPR_SUBLINK;
8024 n->subselect = yyvsp[-1].node;
8025 yyval.node = (Node *)n;
8031 SubLink *n = makeNode(SubLink);
8032 n->lefthand = lcons(yyvsp[-4].node, NULL);
8033 n->oper = lcons("+",NIL);
8035 n->subLinkType = EXPR_SUBLINK;
8036 n->subselect = yyvsp[-1].node;
8037 yyval.node = (Node *)n;
8043 SubLink *n = makeNode(SubLink);
8044 n->lefthand = lcons(yyvsp[-4].node, NULL);
8045 n->oper = lcons("-",NIL);
8047 n->subLinkType = EXPR_SUBLINK;
8048 n->subselect = yyvsp[-1].node;
8049 yyval.node = (Node *)n;
8055 SubLink *n = makeNode(SubLink);
8056 n->lefthand = lcons(yyvsp[-4].node, NULL);
8057 n->oper = lcons("/",NIL);
8059 n->subLinkType = EXPR_SUBLINK;
8060 n->subselect = yyvsp[-1].node;
8061 yyval.node = (Node *)n;
8067 SubLink *n = makeNode(SubLink);
8068 n->lefthand = lcons(yyvsp[-4].node, NULL);
8069 n->oper = lcons("*",NIL);
8071 n->subLinkType = EXPR_SUBLINK;
8072 n->subselect = yyvsp[-1].node;
8073 yyval.node = (Node *)n;
8079 SubLink *n = makeNode(SubLink);
8080 n->lefthand = lcons(yyvsp[-4].node, NULL);
8081 n->oper = lcons("<",NIL);
8083 n->subLinkType = EXPR_SUBLINK;
8084 n->subselect = yyvsp[-1].node;
8085 yyval.node = (Node *)n;
8091 SubLink *n = makeNode(SubLink);
8092 n->lefthand = lcons(yyvsp[-4].node, NULL);
8093 n->oper = lcons(">",NIL);
8095 n->subLinkType = EXPR_SUBLINK;
8096 n->subselect = yyvsp[-1].node;
8097 yyval.node = (Node *)n;
8103 SubLink *n = makeNode(SubLink);
8104 n->lefthand = lcons(yyvsp[-4].node, NULL);
8105 n->oper = lcons("=",NIL);
8107 n->subLinkType = EXPR_SUBLINK;
8108 n->subselect = yyvsp[-1].node;
8109 yyval.node = (Node *)n;
8115 SubLink *n = makeNode(SubLink);
8116 n->lefthand = lcons(yyvsp[-5].node,NIL);
8117 n->oper = lcons(yyvsp[-4].str,NIL);
8119 n->subLinkType = ANY_SUBLINK;
8120 n->subselect = yyvsp[-1].node;
8121 yyval.node = (Node *)n;
8127 SubLink *n = makeNode(SubLink);
8128 n->lefthand = lcons(yyvsp[-5].node,NIL);
8129 n->oper = lcons("+",NIL);
8131 n->subLinkType = ANY_SUBLINK;
8132 n->subselect = yyvsp[-1].node;
8133 yyval.node = (Node *)n;
8139 SubLink *n = makeNode(SubLink);
8140 n->lefthand = lcons(yyvsp[-5].node,NIL);
8141 n->oper = lcons("-",NIL);
8143 n->subLinkType = ANY_SUBLINK;
8144 n->subselect = yyvsp[-1].node;
8145 yyval.node = (Node *)n;
8151 SubLink *n = makeNode(SubLink);
8152 n->lefthand = lcons(yyvsp[-5].node,NIL);
8153 n->oper = lcons("/",NIL);
8155 n->subLinkType = ANY_SUBLINK;
8156 n->subselect = yyvsp[-1].node;
8157 yyval.node = (Node *)n;
8163 SubLink *n = makeNode(SubLink);
8164 n->lefthand = lcons(yyvsp[-5].node,NIL);
8165 n->oper = lcons("*",NIL);
8167 n->subLinkType = ANY_SUBLINK;
8168 n->subselect = yyvsp[-1].node;
8169 yyval.node = (Node *)n;
8175 SubLink *n = makeNode(SubLink);
8176 n->lefthand = lcons(yyvsp[-5].node,NIL);
8177 n->oper = lcons("<",NIL);
8179 n->subLinkType = ANY_SUBLINK;
8180 n->subselect = yyvsp[-1].node;
8181 yyval.node = (Node *)n;
8187 SubLink *n = makeNode(SubLink);
8188 n->lefthand = lcons(yyvsp[-5].node,NIL);
8189 n->oper = lcons(">",NIL);
8191 n->subLinkType = ANY_SUBLINK;
8192 n->subselect = yyvsp[-1].node;
8193 yyval.node = (Node *)n;
8199 SubLink *n = makeNode(SubLink);
8200 n->lefthand = lcons(yyvsp[-5].node,NIL);
8201 n->oper = lcons("=",NIL);
8203 n->subLinkType = ANY_SUBLINK;
8204 n->subselect = yyvsp[-1].node;
8205 yyval.node = (Node *)n;
8211 SubLink *n = makeNode(SubLink);
8212 n->lefthand = lcons(yyvsp[-5].node, NULL);
8213 n->oper = lcons(yyvsp[-4].str,NIL);
8215 n->subLinkType = ALL_SUBLINK;
8216 n->subselect = yyvsp[-1].node;
8217 yyval.node = (Node *)n;
8223 SubLink *n = makeNode(SubLink);
8224 n->lefthand = lcons(yyvsp[-5].node, NULL);
8225 n->oper = lcons("+",NIL);
8227 n->subLinkType = ALL_SUBLINK;
8228 n->subselect = yyvsp[-1].node;
8229 yyval.node = (Node *)n;
8235 SubLink *n = makeNode(SubLink);
8236 n->lefthand = lcons(yyvsp[-5].node, NULL);
8237 n->oper = lcons("-",NIL);
8239 n->subLinkType = ALL_SUBLINK;
8240 n->subselect = yyvsp[-1].node;
8241 yyval.node = (Node *)n;
8247 SubLink *n = makeNode(SubLink);
8248 n->lefthand = lcons(yyvsp[-5].node, NULL);
8249 n->oper = lcons("/",NIL);
8251 n->subLinkType = ALL_SUBLINK;
8252 n->subselect = yyvsp[-1].node;
8253 yyval.node = (Node *)n;
8259 SubLink *n = makeNode(SubLink);
8260 n->lefthand = lcons(yyvsp[-5].node, NULL);
8261 n->oper = lcons("*",NIL);
8263 n->subLinkType = ALL_SUBLINK;
8264 n->subselect = yyvsp[-1].node;
8265 yyval.node = (Node *)n;
8271 SubLink *n = makeNode(SubLink);
8272 n->lefthand = lcons(yyvsp[-5].node, NULL);
8273 n->oper = lcons("<",NIL);
8275 n->subLinkType = ALL_SUBLINK;
8276 n->subselect = yyvsp[-1].node;
8277 yyval.node = (Node *)n;
8283 SubLink *n = makeNode(SubLink);
8284 n->lefthand = lcons(yyvsp[-5].node, NULL);
8285 n->oper = lcons(">",NIL);
8287 n->subLinkType = ALL_SUBLINK;
8288 n->subselect = yyvsp[-1].node;
8289 yyval.node = (Node *)n;
8295 SubLink *n = makeNode(SubLink);
8296 n->lefthand = lcons(yyvsp[-5].node, NULL);
8297 n->oper = lcons("=",NIL);
8299 n->subLinkType = ALL_SUBLINK;
8300 n->subselect = yyvsp[-1].node;
8301 yyval.node = (Node *)n;
8306 { yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node, yyvsp[0].node); ;
8310 { yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node, yyvsp[0].node); ;
8314 { yyval.node = makeA_Expr(NOT, NULL, NULL, yyvsp[0].node); ;
8319 yyvsp[-1].attr->indirection = yyvsp[0].list;
8320 yyval.node = (Node *)yyvsp[-1].attr;
8325 { yyval.node = yyvsp[0].node; ;
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;
8339 { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
8343 { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
8347 { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
8351 { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
8355 { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
8359 { yyval.node = makeA_Expr(OP, ":", NULL, yyvsp[0].node); ;
8363 { yyval.node = makeA_Expr(OP, ";", NULL, yyvsp[0].node); ;
8367 { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
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 */
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;
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 */
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;
8407 { yyval.node = yyvsp[-1].node; ;
8411 { yyval.node = makeIndexable(yyvsp[-1].str,yyvsp[-2].node,yyvsp[0].node); ;
8415 { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
8419 { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
8424 FuncCall *n = makeNode(FuncCall);
8425 n->funcname = yyvsp[-2].str;
8427 yyval.node = (Node *)n;
8433 FuncCall *n = makeNode(FuncCall);
8434 n->funcname = yyvsp[-3].str;
8435 n->args = yyvsp[-1].list;
8436 yyval.node = (Node *)n;
8442 A_Const *n = makeNode(A_Const);
8443 TypeName *t = makeNode(TypeName);
8445 n->val.type = T_String;
8446 n->val.val.str = "now";
8449 t->name = xlateSqlType("date");
8453 yyval.node = (Node *)n;
8459 A_Const *n = makeNode(A_Const);
8460 TypeName *t = makeNode(TypeName);
8462 n->val.type = T_String;
8463 n->val.val.str = "now";
8466 t->name = xlateSqlType("time");
8470 yyval.node = (Node *)n;
8476 FuncCall *n = makeNode(FuncCall);
8477 A_Const *s = makeNode(A_Const);
8478 TypeName *t = makeNode(TypeName);
8480 n->funcname = xlateSqlType("time");
8481 n->args = lcons(s, NIL);
8483 s->val.type = T_String;
8484 s->val.val.str = "now";
8487 t->name = xlateSqlType("time");
8491 if (yyvsp[-1].ival != 0)
8492 elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
8494 yyval.node = (Node *)n;
8500 A_Const *n = makeNode(A_Const);
8501 TypeName *t = makeNode(TypeName);
8503 n->val.type = T_String;
8504 n->val.val.str = "now";
8507 t->name = xlateSqlType("timestamp");
8511 yyval.node = (Node *)n;
8517 FuncCall *n = makeNode(FuncCall);
8518 A_Const *s = makeNode(A_Const);
8519 TypeName *t = makeNode(TypeName);
8521 n->funcname = xlateSqlType("timestamp");
8522 n->args = lcons(s, NIL);
8524 s->val.type = T_String;
8525 s->val.val.str = "now";
8528 t->name = xlateSqlType("timestamp");
8532 if (yyvsp[-1].ival != 0)
8533 elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",yyvsp[-1].ival);
8535 yyval.node = (Node *)n;
8541 FuncCall *n = makeNode(FuncCall);
8542 n->funcname = "getpgusername";
8544 yyval.node = (Node *)n;
8550 FuncCall *n = makeNode(FuncCall);
8551 n->funcname = "strpos";
8552 n->args = yyvsp[-1].list;
8553 yyval.node = (Node *)n;
8559 FuncCall *n = makeNode(FuncCall);
8560 n->funcname = "substr";
8561 n->args = yyvsp[-1].list;
8562 yyval.node = (Node *)n;
8568 FuncCall *n = makeNode(FuncCall);
8569 n->funcname = "btrim";
8570 n->args = yyvsp[-1].list;
8571 yyval.node = (Node *)n;
8577 FuncCall *n = makeNode(FuncCall);
8578 n->funcname = "ltrim";
8579 n->args = yyvsp[-1].list;
8580 yyval.node = (Node *)n;
8586 FuncCall *n = makeNode(FuncCall);
8587 n->funcname = "rtrim";
8588 n->args = yyvsp[-1].list;
8589 yyval.node = (Node *)n;
8595 FuncCall *n = makeNode(FuncCall);
8596 n->funcname = "btrim";
8597 n->args = yyvsp[-1].list;
8598 yyval.node = (Node *)n;
8604 A_Indices *ai = makeNode(A_Indices);
8606 ai->uidx = yyvsp[-2].node;
8607 yyval.list = lcons(ai, yyvsp[0].list);
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);
8621 { yyval.list = NIL; ;
8625 { yyval.list = lcons(yyvsp[0].node, NIL); ;
8629 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
8633 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].node); ;
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);
8646 { yyval.list = NIL; ;
8650 { yyval.list = makeList(yyvsp[0].node, yyvsp[-2].node, -1); ;
8654 { yyval.list = NIL; ;
8659 yyvsp[-1].attr->indirection = yyvsp[0].list;
8660 yyval.node = (Node *)yyvsp[-1].attr;
8665 { yyval.node = yyvsp[0].node; ;
8669 { yyval.node = makeA_Expr(OP, "-", NULL, yyvsp[0].node); ;
8673 { yyval.node = makeA_Expr(OP, "+", yyvsp[-2].node, yyvsp[0].node); ;
8677 { yyval.node = makeA_Expr(OP, "-", yyvsp[-2].node, yyvsp[0].node); ;
8681 { yyval.node = makeA_Expr(OP, "/", yyvsp[-2].node, yyvsp[0].node); ;
8685 { yyval.node = makeA_Expr(OP, "*", yyvsp[-2].node, yyvsp[0].node); ;
8689 { yyval.node = makeA_Expr(OP, "|", NULL, yyvsp[0].node); ;
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 */
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;
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 */
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;
8729 { yyval.node = yyvsp[-1].node; ;
8733 { yyval.node = makeA_Expr(OP, yyvsp[-1].str, yyvsp[-2].node, yyvsp[0].node); ;
8737 { yyval.node = makeA_Expr(OP, yyvsp[-1].str, NULL, yyvsp[0].node); ;
8741 { yyval.node = makeA_Expr(OP, yyvsp[0].str, yyvsp[-1].node, NULL); ;
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;
8756 FuncCall *n = makeNode(FuncCall);
8757 n->funcname = yyvsp[-2].str;
8759 yyval.node = (Node *)n;
8765 FuncCall *n = makeNode(FuncCall);
8766 n->funcname = yyvsp[-3].str;
8767 n->args = yyvsp[-1].list;
8768 yyval.node = (Node *)n;
8774 FuncCall *n = makeNode(FuncCall);
8775 n->funcname = "strpos";
8776 n->args = yyvsp[-1].list;
8777 yyval.node = (Node *)n;
8783 FuncCall *n = makeNode(FuncCall);
8784 n->funcname = "substr";
8785 n->args = yyvsp[-1].list;
8786 yyval.node = (Node *)n;
8792 FuncCall *n = makeNode(FuncCall);
8793 n->funcname = "btrim";
8794 n->args = yyvsp[-1].list;
8795 yyval.node = (Node *)n;
8801 FuncCall *n = makeNode(FuncCall);
8802 n->funcname = "ltrim";
8803 n->args = yyvsp[-1].list;
8804 yyval.node = (Node *)n;
8810 FuncCall *n = makeNode(FuncCall);
8811 n->funcname = "rtrim";
8812 n->args = yyvsp[-1].list;
8813 yyval.node = (Node *)n;
8819 FuncCall *n = makeNode(FuncCall);
8820 n->funcname = "btrim";
8821 n->args = yyvsp[-1].list;
8822 yyval.node = (Node *)n;
8828 yyval.list = nconc(nconc(yyvsp[-2].list,yyvsp[-1].list),yyvsp[0].list);
8833 { yyval.list = NIL; ;
8837 { yyval.list = yyvsp[0].list; ;
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);
8850 { yyval.list = yyvsp[0].list; ;
8854 { yyval.list = NIL; ;
8858 { yyval.list = lappend(yyvsp[0].list, yyvsp[-2].node); ;
8862 { yyval.list = yyvsp[0].list; ;
8866 { yyval.list = yyvsp[0].list; ;
8871 SubLink *n = makeNode(SubLink);
8872 n->subselect = yyvsp[0].node;
8873 yyval.node = (Node *)n;
8878 { yyval.node = yyvsp[0].node; ;
8882 { yyval.node = makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node); ;
8886 { yyval.node = makeA_Expr(OR, NULL, yyvsp[-2].node,
8887 makeA_Expr(OP, "=", lfirst(saved_In_Expr), yyvsp[0].node));
8893 SubLink *n = makeNode(SubLink);
8894 n->subselect = yyvsp[0].node;
8895 yyval.node = (Node *)n;
8900 { yyval.node = yyvsp[0].node; ;
8904 { yyval.node = makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node); ;
8908 { yyval.node = makeA_Expr(AND, NULL, yyvsp[-2].node,
8909 makeA_Expr(OP, "<>", lfirst(saved_In_Expr), yyvsp[0].node));
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;
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;
8934 { yyval.list = lcons(makeString(yyvsp[0].str), NIL); ;
8938 { yyval.list = lappend(yyvsp[-2].list, makeString(yyvsp[0].str)); ;
8942 { yyval.list = lappend(yyvsp[-2].list, makeString("*")); ;
8946 { yyval.list = lappend(yyvsp[-2].list,yyvsp[0].target); ;
8950 { yyval.list = lcons(yyvsp[0].target, NIL); ;
8955 ResTarget *rt = makeNode(ResTarget);
8956 Attr *att = makeNode(Attr);
8958 att->paramNo = NULL;
8960 att->indirection = NIL;
8962 rt->indirection = NULL;
8963 rt->val = (Node *)att;
8964 yyval.list = lcons(rt, NIL);
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;
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;
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;
9001 { yyval.list = lappend(yyvsp[-2].list, yyvsp[0].target); ;
9005 { yyval.list = lcons(yyvsp[0].target, NIL); ;
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;
9019 yyval.target = makeNode(ResTarget);
9020 yyval.target->name = NULL;
9021 yyval.target->indirection = NULL;
9022 yyval.target->val = (Node *)yyvsp[0].node;
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;
9042 Attr *att = makeNode(Attr);
9044 att->paramNo = 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;
9055 { yyval.str = yyvsp[0].str; ;
9059 { yyval.str = NULL; ;
9064 yyval.str = yyvsp[0].str;
9065 StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
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);
9076 yyval.str = yyvsp[0].str;
9077 StrNCpy(saved_relname, yyvsp[0].str, NAMEDATALEN);
9082 { yyval.str = yyvsp[0].str; ;
9086 { yyval.str = yyvsp[0].str; ;
9090 { yyval.str = yyvsp[0].str; ;
9094 { yyval.str = yyvsp[0].str; ;
9098 { yyval.str = yyvsp[0].str; ;
9102 { yyval.str = yyvsp[0].str; ;
9106 { yyval.str = xlateSqlFunc(yyvsp[0].str); ;
9110 { yyval.str = yyvsp[0].str; ;
9114 { yyval.str = yyvsp[0].str; ;
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;
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;
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;
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;
9155 { yyval.node = (Node *)yyvsp[0].paramno; ;
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;
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;
9184 yyval.paramno = makeNode(ParamNo);
9185 yyval.paramno->number = yyvsp[0].ival;
9190 { yyval.value = makeInteger(yyvsp[0].ival); ;
9194 { yyval.value = makeFloat(yyvsp[0].dval); ;
9198 { yyval.ival = yyvsp[0].ival; ;
9202 { yyval.str = yyvsp[0].str; ;
9206 { yyval.str = yyvsp[0].str; ;
9210 { yyval.str = xlateSqlType(yyvsp[0].str); ;
9214 { yyval.str = xlateSqlType(yyvsp[0].str); ;
9218 { yyval.str = xlateSqlType(yyvsp[0].str); ;
9222 { yyval.str = yyvsp[0].str; ;
9226 { yyval.str = yyvsp[0].str; ;
9230 { yyval.str = "action"; ;
9234 { yyval.str = "database"; ;
9238 { yyval.str = "delimiters"; ;
9242 { yyval.str = "double"; ;
9246 { yyval.str = "each"; ;
9250 { yyval.str = "function"; ;
9254 { yyval.str = "index"; ;
9258 { yyval.str = "key"; ;
9262 { yyval.str = "language"; ;
9266 { yyval.str = "location"; ;
9270 { yyval.str = "match"; ;
9274 { yyval.str = "operator"; ;
9278 { yyval.str = "option"; ;
9282 { yyval.str = "privileges"; ;
9286 { yyval.str = "recipe"; ;
9290 { yyval.str = "row"; ;
9294 { yyval.str = "statement"; ;
9298 { yyval.str = "time"; ;
9302 { yyval.str = "trigger"; ;
9306 { yyval.str = "type"; ;
9310 { yyval.str = "user"; ;
9314 { yyval.str = "valid"; ;
9318 { yyval.str = "version"; ;
9322 { yyval.str = "zone"; ;
9326 { yyval.str = yyvsp[0].str; ;
9330 { yyval.str = "archive"; ;
9334 { yyval.str = "cluster"; ;
9338 { yyval.str = "constraint"; ;
9342 { yyval.str = "cross"; ;
9346 { yyval.str = "foreign"; ;
9350 { yyval.str = "group"; ;
9354 { yyval.str = "load"; ;
9358 { yyval.str = "order"; ;
9362 { yyval.str = "position"; ;
9366 { yyval.str = "precision"; ;
9370 { yyval.str = "table"; ;
9374 { yyval.str = "transaction"; ;
9378 { yyval.str = "true"; ;
9382 { yyval.str = "false"; ;
9388 yyval.str = "*CURRENT*";
9390 elog(ERROR,"CURRENT used in non-rule query");
9397 yyval.str = "*NEW*";
9399 elog(ERROR,"NEW used in non-rule query");
9403 /* the action file gets copied in in place of this dollarsign */
9404 #line 498 "/usr/share/misc/bison.simple"
9415 short *ssp1 = yyss - 1;
9416 fprintf (stderr, "state stack now");
9417 while (ssp1 != yyssp)
9418 fprintf (stderr, " %d", *++ssp1);
9419 fprintf (stderr, "\n");
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;
9437 yylsp->last_line = (yylsp+yylen-1)->last_line;
9438 yylsp->last_column = (yylsp+yylen-1)->last_column;
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. */
9449 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
9450 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
9451 yystate = yytable[yystate];
9453 yystate = yydefgoto[yyn - YYNTBASE];
9457 yyerrlab: /* here on detecting error */
9460 /* If not already recovering from an error, report this error. */
9464 #ifdef YYERROR_VERBOSE
9465 yyn = yypact[yystate];
9467 if (yyn > YYFLAG && yyn < YYLAST)
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);
9482 strcpy(msg, "parse error");
9487 for (x = (yyn < 0 ? -yyn : 0);
9488 x < (sizeof(yytname) / sizeof(char *)); x++)
9489 if (yycheck[x + yyn] == x)
9491 strcat(msg, count == 0 ? ", expecting `" : " or `");
9492 strcat(msg, yytname[x]);
9501 yyerror ("parse error; also virtual memory exceeded");
9504 #endif /* YYERROR_VERBOSE */
9505 yyerror("parse error");
9509 yyerrlab1: /* here on error raised explicitly by an action */
9511 if (yyerrstatus == 3)
9513 /* if just tried and failed to reuse lookahead token after an error, discard it. */
9515 /* return failure if at end of input */
9516 if (yychar == YYEOF)
9521 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
9527 /* Else will try to reuse lookahead token
9528 after shifting the error token. */
9530 yyerrstatus = 3; /* Each real token shifted decrements this */
9534 yyerrdefault: /* current state does not do anything special for the error token. */
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;
9543 yyerrpop: /* pop the current state because it cannot handle the error token */
9545 if (yyssp == yyss) YYABORT;
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");
9565 yyn = yypact[yystate];
9570 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
9589 fprintf(stderr, "Shifting error token, ");
9604 makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr)
9606 A_Expr *a = makeNode(A_Expr);
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
9619 makeRowExpr(char *opr, List *largs, List *rargs)
9624 if (length(largs) != length(rargs))
9625 elog(ERROR,"Unequal number of entries in row expression");
9627 if (lnext(largs) != NIL)
9628 expr = makeRowExpr(opr,lnext(largs),lnext(rargs));
9630 larg = lfirst(largs);
9631 rarg = lfirst(rargs);
9633 if ((strcmp(opr, "=") == 0)
9634 || (strcmp(opr, "<") == 0)
9635 || (strcmp(opr, "<=") == 0)
9636 || (strcmp(opr, ">") == 0)
9637 || (strcmp(opr, ">=") == 0))
9640 expr = makeA_Expr(OP, opr, larg, rarg);
9642 expr = makeA_Expr(AND, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9644 else if (strcmp(opr, "<>") == 0)
9647 expr = makeA_Expr(OP, opr, larg, rarg);
9649 expr = makeA_Expr(OR, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9653 elog(ERROR,"Operator '%s' not implemented for row expressions",opr);
9657 while ((largs != NIL) && (rargs != NIL))
9659 larg = lfirst(largs);
9660 rarg = lfirst(rargs);
9663 expr = makeA_Expr(OP, opr, larg, rarg);
9665 expr = makeA_Expr(AND, NULL, expr, makeA_Expr(OP, opr, larg, rarg));
9667 largs = lnext(largs);
9668 rargs = lnext(rargs);
9677 mapTargetColumns(List *src, List *dst)
9682 if (length(src) != length(dst))
9683 elog(ERROR,"CREATE TABLE/AS SELECT has mismatched column count");
9685 while ((src != NIL) && (dst != NIL))
9687 s = (ColumnDef *)lfirst(src);
9688 d = (ResTarget *)lfirst(dst);
9690 d->name = s->colname;
9697 } /* mapTargetColumns() */
9699 static Node *makeIndexable(char *opname, Node *lexpr, Node *rexpr)
9701 Node *result = NULL;
9703 /* we do this so indexes can be used */
9704 if (strcmp(opname,"~") == 0 ||
9705 strcmp(opname,"~*") == 0)
9707 if (nodeTag(rexpr) == T_A_Const &&
9708 ((A_Const *)rexpr)->val.type == T_String &&
9709 ((A_Const *)rexpr)->val.val.str[0] == '^')
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;
9716 /* skip leading ^ */
9717 for (pos = 1; n->val.val.str[pos]; pos++)
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])))
9726 if (n->val.val.str[pos] == '\\')
9728 match_least[match_pos] = n->val.val.str[pos];
9729 match_most[match_pos++] = n->val.val.str[pos];
9734 A_Const *least = makeNode(A_Const);
9735 A_Const *most = makeNode(A_Const);
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)));
9753 else if (strcmp(opname,"~~") == 0)
9755 if (nodeTag(rexpr) == T_A_Const &&
9756 ((A_Const *)rexpr)->val.type == T_String)
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;
9763 for (pos = 0; n->val.val.str[pos]; pos++)
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] != '_'))
9770 if (n->val.val.str[pos] == '%' ||
9771 n->val.val.str[pos] == '_' ||
9772 n->val.val.str[pos] == '\\')
9774 match_least[match_pos] = n->val.val.str[pos];
9775 match_most[match_pos++] = n->val.val.str[pos];
9780 A_Const *least = makeNode(A_Const);
9781 A_Const *most = makeNode(A_Const);
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)));
9801 result = makeA_Expr(OP, opname, lexpr, rexpr);
9803 } /* makeIndexable() */
9807 * Convert alternate type names to internal Postgres types.
9808 * Do not convert "float", since that is handled elsewhere
9809 * for FLOAT(p) syntax.
9812 xlateSqlFunc(char *name)
9814 if (!strcasecmp(name,"character_length")
9815 || !strcasecmp(name,"char_length"))
9819 } /* xlateSqlFunc() */
9822 * Convert alternate type names to internal Postgres types.
9825 xlateSqlType(char *name)
9827 if (!strcasecmp(name,"int")
9828 || !strcasecmp(name,"integer"))
9830 else if (!strcasecmp(name, "smallint"))
9832 else if (!strcasecmp(name, "real")
9833 || !strcasecmp(name, "float"))
9835 else if (!strcasecmp(name, "interval"))
9837 else if (!strcasecmp(name, "boolean"))
9841 } /* xlateSqlType() */
9844 void parser_init(Oid *typev, int nargs)
9846 QueryIsRule = FALSE;
9847 saved_relname[0]= '\0';
9848 saved_In_Expr = NULL;
9850 param_type_init(typev, nargs);
9854 /* FlattenStringList()
9855 * Traverse list of string nodes and convert to a single string.
9856 * Used for reconstructing string form of complex expressions.
9858 * Allocate at least one byte for terminator.
9861 FlattenStringList(List *list)
9869 nlist = length(list);
9872 v = (Value *)lfirst(l);
9879 s = (char*) palloc(len+1);
9884 v = (Value *)lfirst(l);
9888 if (l != NIL) strcat(s," ");
9893 printf( "flattened string is \"%s\"\n", s);
9897 } /* FlattenStringList() */
9900 /* makeConstantList()
9901 * Convert constant value node into string node.
9904 makeConstantList( A_Const *n)
9906 char *defval = NULL;
9907 if (nodeTag(n) != T_A_Const) {
9908 elog(ERROR,"Cannot handle non-constant parameter");
9910 } else if (n->val.type == T_Float) {
9911 defval = (char*) palloc(20+1);
9912 sprintf( defval, "%g", n->val.val.dval);
9914 } else if (n->val.type == T_Integer) {
9915 defval = (char*) palloc(20+1);
9916 sprintf( defval, "%ld", n->val.val.ival);
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, "'");
9925 elog(ERROR,"Internal error in makeConstantList(): cannot encode node");
9929 printf( "AexprConst argument is \"%s\"\n", defval);
9932 return( lcons( makeString(defval), NIL));
9933 } /* makeConstantList() */
9937 * Check input string for non-lowercase/non-numeric characters.
9938 * Returns either input string or input surrounded by double quotes.
9945 for (cp = rawid; *cp != '\0'; cp++)
9946 if (! (islower(*cp) || isdigit(*cp) || (*cp == '_'))) break;
9949 cp = palloc(strlen(rawid)+1);
9958 printf("fmtId- %sconvert %s to %s\n", ((cp == rawid)? "do not ": ""), rawid, cp);
9967 * keep enough information around fill out the type of param nodes
9968 * used in postquel functions
9971 param_type_init(Oid *typev, int nargs)
9973 pfunc_num_args = nargs;
9974 param_type_info = typev;
9977 Oid param_type(int t)
9979 if ((t > pfunc_num_args) || (t == 0))
9981 return param_type_info[t - 1];